핵심 요약
도메인 접속이 안 될 때 ping 8.8.8.8(IP)은 되는데 ping google.com이 안 되면 DNS 해석 문제다. dig로 "어떤 응답이 오는지", "어느 네임서버가 답하는지"를 단계별로 확인하면 원인이 좁혀진다.
1. 먼저 문제를 분리한다
ping 8.8.8.8 # IP로 되면 네트워크는 정상
ping google.com # 여기서 실패하면 DNS 문제
cat /etc/resolv.conf # 어떤 DNS 서버를 쓰는지
2. dig로 해석 확인
dig youngsam.net # A 레코드 조회
dig youngsam.net +short # IP만 간단히
dig youngsam.net MX # 메일 서버
dig @8.8.8.8 youngsam.net # 구글 DNS로 직접 물어보기
@8.8.8.8로는 되는데 기본 리졸버로는 안 되면, 내 DNS 서버(ISP·사내) 문제다.
3. 응답 해석 포인트
| 상태 | 의미 |
|---|---|
| NOERROR + ANSWER 있음 | 정상 해석 |
| NXDOMAIN | 도메인이 존재하지 않음(오타·미등록) |
| SERVFAIL | 네임서버 오류·DNSSEC 실패 |
| ANSWER 0 + timeout | DNS 서버에 도달 못 함 |
4. 전파·캐시 문제
dig youngsam.net +trace # 루트부터 계층적으로 추적
dig youngsam.net @1.1.1.1 # 다른 리졸버로 비교
# 방금 DNS를 바꿨다면 TTL만큼 캐시가 남아있을 수 있음
레코드를 막 변경했는데 옛 IP가 나오면 TTL 만료를 기다리거나 로컬 캐시를 비운다.
5. 로컬 캐시 비우기
- Linux(systemd):
sudo systemd-resolve --flush-caches또는resolvectl flush-caches - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - Windows:
ipconfig /flushdns
자주 묻는 질문
nslookup과 dig 중 뭘 쓰나요?
기능은 겹치지만 dig가 응답의 세부(권한 섹션·TTL·플래그)를 더 자세히 보여줘 진단에 유리합니다. nslookup은 대화형이라 간단 조회에 편합니다. Windows 기본 제공은 nslookup입니다.
DNS를 바꿨는데 여전히 옛 IP가 나와요.
레코드의 TTL만큼 전 세계 리졸버가 옛 값을 캐싱합니다. 변경 전에 TTL을 짧게(예: 300초) 낮춰두면 전파가 빠릅니다. 로컬은 캐시 flush로, 확인은 dig @1.1.1.1처럼 여러 리졸버로 비교하세요.
SERVFAIL은 어떻게 대응하나요?
네임서버가 응답을 못 만든 것으로, 권한 네임서버 장애나 DNSSEC 검증 실패가 흔한 원인입니다. dig +trace로 어느 단계에서 끊기는지 보고, DNSSEC 문제면 +cd(검증 무시)로 구분해볼 수 있습니다.

댓글 0