LabHub

리눅스 네트워크 진단 · 이름 해석 · 실습

이름 해석 진단

LabHub 에서 이어서 보기

목표

이름 해석이 어떤 경로를 거치는지 확인하고, "dig 는 되는데 앱은 안 되는" 상황을 직접 만들어 봅니다.

왜 중요한가

애플리케이션은 glibc 의 getaddrinfo() 를 부르고, glibc 는 /etc/nsswitch.confhosts: 줄 순서대로 물어봅니다(보통 files dns - 즉 /etc/hosts 가 먼저). 반면 dig 는 이 모든 것을 건너뛰고 /etc/resolv.conf 의 네임서버에 직접 물어봅니다. 두 도구의 답이 다르면 문제는 DNS 서버가 아니라 스텁 리졸버 구간입니다. 이 사실 하나가 "dig 는 되는데 왜 앱은 안 되지" 라는 질문을 몇 시간에서 몇 분으로 줄여 줍니다.

단계

/root/dns 디렉터리에서 작업합니다.

1. /etc/resolv.conf첫 번째 nameserver 주소를 /root/dns/nameserver.txt 에 적으세요.
2. /etc/hosts10.99.0.10app.labhub.local 과 짧은 이름 app 두 가지로 등록하세요.
3. /etc/nsswitch.confhosts: 항목 값(콜론 뒤 전체)을 /root/dns/order.txt 에 적으세요. 파일이 없으면 unavailable.
4. 같은 이름 app.labhub.localgetentdig +short 로 각각 물어본 결과를 /root/dns/compare.txt 에 다음 두 줄로 적으세요. dig 가 아무 답도 주지 않으면 none 이라고 적습니다.

참고

단계 8개

  1. 리졸버 주소 확인
  2. hosts 파일에 이름 등록
  3. 이름 서비스 순서 확인
  4. getent 와 dig 비교하기
  5. 검색 도메인 확인
  6. 역방향 조회
  7. 같은 이름 두 줄, 누가 이기나
  8. 이름 해석 헬퍼 만들기