브라우저는 DNS_PROBE_FINISHED_NXDOMAIN, 서버는 Could not resolve host. 레코드를 방금 바꿨는데 안 풀립니다. "기다리면 되겠지"로 끝내지 말고 어디까지 풀리고 어디서 막혔는지를 dig 로 읽어내야 합니다. 십중팔구는 전파 지연이 아니라 캐시입니다.
1단계 — dig로 응답을 본다
로컬 터미널
dig example.com +short # 결과 IP만
dig example.com # 전체 (ANSWER·AUTHORITY 섹션)
OUTPUT
;; ANSWER SECTION:
example.com. 300 IN A 203.0.113.10
ANSWER 가 비어 있으면 레코드가 없거나 못 받은 것, status: NXDOMAIN 이면 도메인 자체가 없는 것, SERVFAIL 이면 네임서버 응답 실패입니다.
2단계 — 전파인가, 캐시인가
내가 받는 값과 실제 권한 네임서버의 값이 다른지 비교합니다. 권한 서버는 캐시를 거치지 않으므로 진짜 최신값입니다.
로컬 터미널
dig NS example.com +short # 이 도메인의 권한 네임서버
dig @ns1.provider.com example.com +short # 권한 서버에 직접 질의
권한 서버는 새 값인데 내 결과만 옛값이면 → 캐시 문제(전파 아님). 권한 서버도 옛값이면 → 레코드를 아직 안 바꿨거나 진짜 전파 대기입니다.
원인별 해결
| 상황 | 원인 | 해결 |
|---|---|---|
| 권한 서버는 신값, 나만 구값 | 리졸버/로컬 캐시 | TTL 만료 대기 또는 캐시 flush |
| 권한 서버도 구값 | 레코드 미반영·TTL 잔여 | DNS 설정 재확인, TTL만큼 대기 |
SERVFAIL | 네임서버 장애·DNSSEC 불일치 | NS 상태·DNSSEC 점검 |
| 내부 호스트만 안 풀림 | resolv.conf·내부 DNS | /etc/resolv.conf 확인 |
캐시 비우기 체크리스트
로컬 터미널
dig @8.8.8.8 example.com +short # 외부 리졸버로 교차 확인
sudo systemd-resolve --flush-caches # systemd-resolved 캐시
sudo resolvectl flush-caches # 신버전
cat /etc/resolv.conf # 내가 쓰는 리졸버 확인
TTL이 300이면 변경 후 최대 5분, 권한 서버가 신값이면 그 TTL만 지나면 풀립니다. 전파는 보통 캐시 TTL 문제이지 "전 세계 동기화" 문제가 아닙니다.
dig 읽는 법·재귀와 권한 네임서버·TTL과 캐시를 직접 질의해보며 익히는 실습은 네트워크 트랙에서 회원가입 없이 무료로 할 수 있습니다.