LabHub

네트워크 트러블슈팅 · DNS 조회 실전 · 실습

dig 로 DNS 캐내기

LabHub 에서 이어서 보기

목표

dig 로 레코드 타입별 조회를 하고, TTL 과 네거티브 캐시를 읽고, getentdig 의 답이 갈리는 지점을 직접 만들어 봅니다.

왜 중요한가

dig 출력은 statusflags 부터 읽어야 합니다. NXDOMAIN(이름 자체가 없음)과 NOERROR + ANSWER 0(이름은 있는데 그 타입만 없음)은 완전히 다른 상황이고 대응도 다릅니다. aa 플래그가 없으면 캐시에서 온 답이고, 그래서 TTL 이 줄어듭니다. 그리고 dig 는 /etc/hosts 를 보지 않으므로, 같은 이름에 대해 getent 와 서로 다른 답을 할 수 있습니다 — 그 차이가 곧 원인의 위치입니다.

단계

1. /root/dns 디렉터리를 만들고, /etc/resolv.conf 에서 nameserver 로 시작하는 줄만 /root/dns/nameserver.txt 로 저장하세요.
2. example.com 의 A 레코드 값만 /root/dns/a.txt 로 저장하세요. 파일에는 IPv4 주소가 최소 한 줄 있어야 합니다.
3. google.comMX, NS, TXT 를 각각 /root/dns/mx.txt, /root/dns/ns.txt, /root/dns/txt.txt 로 저장하세요. 세 파일 모두 비어 있으면 안 됩니다.
4. example.com 의 답변 섹션만 출력해 /root/dns/ttl1.txt 로 저장하고, 5초 이상 기다린 뒤 같은 방법으로 /root/dns/ttl2.txt 를 만드세요. 두 번째 TTL 이 첫 번째보다 크면 안 됩니다.
5. 8.8.8.8 의 역방향 조회 결과를 /root/dns/ptr.txt 로 저장하세요.
6. labhub-does-not-exist-9137.example.com 을 조회해 전체 출력을 /root/dns/nxdomain.txt 로 저장하세요. 파일에 status: NXDOMAIN 과 SOA 레코드가 모두 들어 있어야 합니다.
7. /etc/hosts10.77.0.1 www.example.com 을 추가한 뒤, getent hosts www.example.com 결과를 /root/dns/getent-www.txt 로, dig +short www.example.com 결과를 /root/dns/dig-www.txt 로 저장하세요. 두 결과는 서로 달라야 합니다.
8. /root/dns/report.txt 를 다음 5줄로 만드세요.
NAMESERVERS=<1번 파일의 줄 수> / A_COUNT=<2번 파일의 줄 수> / PTR=<5번에서 얻은 이름, 끝의 점 제외> / HOSTS_WINS=<7번 getent 결과의 IP> / DNS_SAYS=<7번 dig 결과의 첫 번째 IP>

참고

단계 8개

  1. 리졸버 설정 읽기
  2. 정방향 조회
  3. 레코드 타입별 조회
  4. TTL 이 줄어드는 것 관찰
  5. 역방향 조회
  6. 없는 이름과 네거티브 캐시
  7. getent 와 dig 가 갈리는 지점
  8. 조회 종합 보고서