Linux에서 인터넷 연결은 살아 있는 것처럼 보이는데 웹사이트가 열리지 않거나, IP 주소로는 통신되지만 도메인 이름으로는 접속되지 않는 경우가 있습니다. 이런 상황은 대부분 DNS 이름 해석 문제와 관련이 있습니다. DNS는 example.com 같은 도메인 이름을 실제 IP 주소로 바꾸는 역할을 합니다. 이 과정에 문제가 생기면 네트워크 자체는 살아 있어도 일반적인 인터넷 사용이 어려워집니다.
자주 나타나는 증상
- 브라우저에 “서버를 찾을 수 없음”이 표시됨
ping 8.8.8.8은 성공하지만ping google.com은 실패함apt,dnf,yum,pacman등의 패키지 다운로드가 실패함Temporary failure in name resolution오류가 발생함
먼저 해야 할 구분
처음에는 전체 네트워크가 문제인지, 아니면 DNS만 문제인지부터 구분해야 합니다.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
8.8.8.8 은 통신되는데 google.com 이 안 되면 DNS 문제일 가능성이 큽니다. 반대로 IP 주소에도 연결되지 않으면 Wi-Fi, 랜카드, 게이트웨이, 라우팅 등 더 하위 계층의 문제일 수 있습니다.
주요 원인
1. /etc/resolv.conf 설정 오류
많은 Linux 배포판에서는 DNS 서버 정보가 /etc/resolv.conf 에 기록됩니다. 여기에 올바른 nameserver 가 없으면 이름 해석이 되지 않습니다.
cat /etc/resolv.conf
예시:
nameserver 8.8.8.8
nameserver 1.1.1.1
파일이 비어 있거나 잘못된 로컬 DNS를 가리키고 있으면 문제가 됩니다. 다만 최신 Linux에서는 이 파일이 NetworkManager 또는 systemd-resolved에 의해 자동 생성되므로 수동 편집 내용이 덮어써질 수 있습니다.
2. systemd-resolved 문제
Ubuntu 같은 시스템에서는 systemd-resolved 가 DNS 해석을 관리하며, 127.0.0.53 을 로컬 스텁 주소로 사용하는 경우가 많습니다. 이 서비스가 멈추면 이름 해석이 실패할 수 있습니다.
systemctl status systemd-resolved
resolvectl status
문제가 있다면 다음과 같이 재시작합니다.
sudo systemctl restart systemd-resolved
3. NetworkManager가 DNS를 제대로 적용하지 못함
데스크톱 Linux에서는 NetworkManager가 DHCP를 통해 받은 DNS 정보를 적용하는 경우가 많습니다. 네트워크 프로필 손상이나 재연결 문제로 올바른 DNS가 들어오지 않을 수 있습니다.
nmcli dev show | grep DNS
nmcli connection show
필요하면 재시작합니다.
sudo systemctl restart NetworkManager
4. VPN, 프록시, 방화벽의 영향
VPN 사용 중 DNS 요청이 다른 경로로 빠지거나, 방화벽이 53번 포트를 차단하면 이름 해석만 실패할 수 있습니다. 회사 네트워크나 보안 소프트웨어를 사용하는 환경에서 자주 발생합니다.
5. DNS 캐시 문제
로컬 캐시가 오래되었거나 손상되면 특정 도메인만 해석되지 않을 수 있습니다. systemd-resolved 또는 nscd를 사용하는 환경에서는 캐시 초기화가 도움이 될 수 있습니다.
sudo resolvectl flush-caches
실전 해결 절차
1단계: 외부 DNS에 직접 질의
nslookup google.com 8.8.8.8
dig google.com @8.8.8.8
여기서는 정상 응답이 오는데 기본 설정으로는 안 된다면, 외부 DNS 자체보다 로컬 설정에 원인이 있을 가능성이 큽니다.
2단계: 공용 DNS를 임시로 설정
sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'
이 방법은 임시 복구에는 유용하지만, 재부팅이나 재연결 후 원래대로 돌아갈 수 있습니다. 영구 해결을 위해서는 NetworkManager, netplan, systemd-resolved 설정을 수정해야 합니다.
3단계: Ubuntu 계열에서는 netplan 확인
sudo nano /etc/netplan/*.yaml
예시:
nameservers:
addresses: [8.8.8.8,1.1.1.1]
수정 후 적용:
sudo netplan apply
4단계: DHCP 정보 다시 받기
sudo dhclient -r
sudo dhclient
DHCP 서버가 잘못된 DNS 정보를 내려준 경우 이 방법으로 개선될 수 있습니다.
확인용 명령어 모음
ping -c 4 8.8.8.8
ping -c 4 google.com
cat /etc/resolv.conf
systemctl status systemd-resolved
resolvectl status
nmcli dev show | grep DNS
nslookup google.com
dig google.com
journalctl -u systemd-resolved --no-pager | tail -n 50
재발 방지 팁
/etc/resolv.conf만 직접 수정하고 끝내지 않기- DNS를 DHCP, NetworkManager, systemd-resolved 중 누가 관리하는지 파악하기
- VPN 사용 후 DNS 설정이 바뀌지 않았는지 확인하기
- 서버 환경이라면 고정 DNS를 명확히 설정하기
정리
Linux에서 DNS가 해석되지 않을 때는 먼저 IP 주소 통신이 되는지 확인하여 DNS만의 문제인지 구분하는 것이 가장 중요합니다. 그다음 /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP, VPN 설정을 순서대로 점검하면 대부분의 원인을 찾을 수 있습니다. 임시 조치에만 그치지 말고, 시스템에서 실제로 DNS를 관리하는 구성 요소가 무엇인지 이해한 뒤 영구적으로 수정하는 것이 중요합니다.