apt 트러블슈팅 - Could not connect to localhost:8080 (127.0.0.1). - connect (111: Connection refused)

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";