apt 트러블슈팅 - Could not connect to localhost:8080 (127.0.0.1). - connect (111: Connection refused)
on Linux
apt update
등 apt 관련 명령어들을 사용할 때, 아래와 같은 에러메시지가 쭉 뜨면서 실패하는 일이 있다.
user@server:~$ sudo apt-get update
Err:1 http://kr.archive.ubuntu.com/ubuntu bionic InRelease
Could not connect to localhost:8080 (127.0.0.1). - connect (111: Connection refused)
Err:2 http://security.ubuntu.com/ubuntu bionic-security InRelease
Could not connect to localhost:8080 (127.0.0.1). - connect (111: Connection refused)
Err:3 http://kr.archive.ubuntu.com/ubuntu bionic-updates InRelease
Unable to connect to localhost:8080:
Err:4 http://kr.archive.ubuntu.com/ubuntu bionic-backports InRelease
Unable to connect to localhost:8080:
Reading package lists... Done
W: Failed to fetch http://kr.archive.ubuntu.com/ubuntu/dists/bionic/InRelease Could not connect to localhost:8080 (127.0.0.1). - connect (111: Connection refused)
W: Failed to fetch http://kr.archive.ubuntu.com/ubuntu/dists/bionic-updates/InRelease Unable to connect to localhost:8080:
W: Failed to fetch http://kr.archive.ubuntu.com/ubuntu/dists/bionic-backports/InRelease Unable to connect to localhost:8080:
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease Could not connect to localhost:8080 (127.0.0.1). - connect (111: Connection refused)
W: Some index files failed to download. They have been ignored, or old ones used instead.
현재 /etc/apt/source.list
에 설정되어있는 apt 저장소는 kr.archive.ubuntu.com 인데, 해당 레포로부터 받아오는데 실패하고 있는 것이다.
관련된 이슈들을 찾아봤는데, 크게 두가지 해결 방법으로 나눌 수 있다.
DNS 문제
먼저, 설정된 DNS 에서 도메인을 읽어오지 못하고 있는 문제이다.
애초에 kr.archive.ubuntu.com
을 해석하지 못하니까 통신이 불가능해지는 것이다.
조직에서 관리하는 dns 가 있다면 그걸 넣든지, 아니면 그냥 구글의 퍼블릭 dns 인 8.8.8.8 이나 8.8.4.4 를 사용하면 된다.
/etc/resolv.conf
에다가 직접 쓰는 것은 그렇게 권장되지 않는다. 대신 /etc/systemd/resolved.conf
를 수정하는 것을 추천한다.
DNS= 에 해당하는 부분에 공백으로 구분하여 여러 DNS 들을 넣어주면 된다.
user@server:~$ sudo vi /etc/systemd/resolved.conf
...
[Resolve]
DNS=8.8.8.8 8.8.4.4
...
user@server:~$ sudo systemctl restart systemd-resolved
사실 DNS 문제는 위에서 나온 에러메시지와는 상관이 없다. 만약 도메인을 읽지 못한다면 애초에 connection refused 가 아니라 Could not resolve ‘kr.archive.ubuntu.com’ 와 같이 뜰 것이다.
프록시 문제
인터넷도 연결되어있고 ping 을 찍어서 dns 에서도 도메인을 잘 찾아오는 것을 확인했다면, apt 설정에서 프록시를 지워주면 된다.
현재의 경우는 8080 포트로 프록시가 설정되어 있어서 문제가 발생하는 것이다.
apt 설정 중 프록시는 /etc/apt/apt.conf
, 혹은 /etc/apt/apt.conf.d/00aptitude
파일에 쓰여져 있다.
먼저 apt.conf 파일이 있는지 찾아보고, 없으면 apt.conf.d/00aptitiude 를 수정하면 된다.
아래처럼 설정되어있을텐데, 이들을 주석처리하거나 지워주면 apt 저장소와 문제 없이 통신이 가능하다.
user@server:~$ sudo vi /etc/apt/apt.conf.d/00aptitude
...
Acquire::http::Proxy "http://localhost:8080";
Acquire::https::Proxy "https://localhost:8080";