Ubuntu 사용자라면 누구나 한 번쯤 "도메인 이름은 안 되는데 IP로는 접속이 된다"는 상황을 겪어보셨을 겁니다. 이럴 때 문제의 원인은 대부분 DNS 설정에 있습니다. 특히 최근 Ubuntu는 systemd-resolved
라는 DNS 리졸버 데몬을 기본으로 사용하기 때문에 구조에 대한 이해가 중요합니다.
1. DNS 요청의 흐름
아래의 요약을 주의깊게 읽어보시고 이해하시면 거의 모든 문제가 해결됩니다.
- 사용자가 브라우저 등 애플리케이션에서 도메인으로 요청
- 리눅스는 기본적으로 DNS를 풀어내기 위해서
/etc/resolv.conf
를 읽음 (이 파일은/run/systemd/resolve/stub-resolv.conf
와 심볼릭링크 되어있음.) /run/systemd/resolve/stub-resolv.conf
는127.0.0.53
으로 설정되어있으며, 이것으로 드디어systemd-resolved
등장하게 됨.- 시스템의
systemd-resolved
는 셋팅파일인/etc/systemd/resolved.conf
의 통제를 받음 - 즉,
systemd-resolved
는/etc/systemd/resolved.conf
에서 설정한 DNS 서버에 질의를 하고, - 응답을 받고 도메인 → IP 주소 변환 완료
2. 핵심 구성 요소 요약
위에서 설명했다시피 systemd-resolved
에는 다음과 같은 4가지의 핵심 구성 파일이 있습니다. 이 파일들의 역할을 이해하는 것이 핵심입니다.
2-1. /etc/resolv.conf
- 전통적인 리눅스 시스템에서 DNS 서버 목록을 읽는 위치
- 그러나 현재는 systemd와의 호환성을 위해 심볼릭 링크로 존재해야 함
- 보통 다음처럼 설정되어야 정상 작동:
bash /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
- 즉, 이 파일은 현재 시스템에서 "전통적인 앱들과 systemd-resolved 사이의 중계자 역할"을 합니다
2-2. /run/systemd/resolve/stub-resolv.conf
systemd-resolved
가 관리하는 로컬 DNS 스텁 서버(127.0.0.53) 정보를 담고 있음/etc/resolv.conf
가 이 파일을 가리킬 경우, 모든 DNS 요청이systemd-resolved
를 거치게 됨
2-3./etc/systemd/resolved.conf
systemd-resolved
의 핵심 설정파일- 여기에
DNS=
,FallbackDNS=
등의 항목을 설정하여 우선순위 지정 가능 - 영구적 설정이며 재부팅 후에도 유지됨
2-4. /run/systemd/resolve/resolv.conf
systemd-resolved
가 관리하는 실제 DNS 서버 리스트가 들어 있는 파일- 고급 사용자가
stub-resolv.conf
대신 이걸/etc/resolv.conf
로 연결하면 직접 DNS 서버로 요청 가능 (바이패스 설정)
3. 문제발생의 예 : ISP가 제공한 공유기에 설정된 DNS서버가 불안정할 경우
- 대한민국의 대표적 ISP KT의 DNS 서버 (예:
168.126.63.1
)가 공유기에 설정되어있으나, 내가 그 공유기를 직접 컨트롤 할 권한이 없는 경우에 간헐적으로 DNS 문제가 발생한다. - KT DNS는 응답 속도가 불안정하거나, UDP/TCP 핸드셰이크가 실패하는 경우가 많음
- systemd-resolved 로그에 다음과 같은 메시지가 반복되면 문제 징후:
Using degraded feature set TCP instead of UDP for DNS server 168.126.63.1. Using degraded feature set UDP instead of TCP for DNS server 168.126.63.1.
- 결과적으로 도메인 해석 실패 → 웹사이트 접속 불가 현상 발생
4. 추천 DNS 서버
이름 | 주소 | 특징 |
---|---|---|
Google DNS | 8.8.8.8 , 8.8.4.4 |
빠르고 안정적 |
Cloudflare DNS | 1.1.1.1 , 1.0.0.1 |
속도 빠르고 개인정보 보호 우수 |
Quad9 | 9.9.9.9 |
보안 위협 필터링 제공 |
5. 안정적인 DNS 구성 방법
/etc/systemd/resolved.conf
파일 열기
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
- 설정 적용
sudo systemctl restart systemd-resolved
/etc/resolv.conf
가 올바르게 연결되었는지 확인
ls -l /etc/resolv.conf
→ /run/systemd/resolve/stub-resolv.conf
로 연결되어야 함
필요 시 강제로 재설정:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
6. NetworkManager의 개입 주의
GUI 환경을 사용하는 Ubuntu는 NetworkManager
가 DNS를 덮어쓰는 경우가 있음
- 자동 DNS 설정이 켜져 있으면
systemd-resolved
설정이 무시될 수 있음 - 해결 방법:
bash nm-connection-editor
→ 연결 편집 → IPv4 탭 → 자동 DNS 끄기 → 수동 DNS 입력
7. 결론
- KT DNS는 불안정성이 자주 보고되므로 사용을 지양하는 것이 좋습니다
systemd-resolved
를 통한 DNS 구성은 우분투에서 안정성을 높이는 매우 강력한 방법입니다- 설정을 정확히 이해하고 적용하면, 도메인 해석 실패로 인한 스트레스를 줄일 수 있습니다
8. Jesse의 코멘트
이해에 기반한 설정이야말로 가장 강력한 보안이자 유지관리입니다. 이 글이 Ubuntu에서의 DNS 설정에 대해 헷갈려했던 분들께 실질적인 도움이 되기를 바랍니다.
Add a New Comment