브라우저 주소창에 google.com 을 입력했을 때 DNS 를 찾는 방법

개요

웹 브라우저를 띄우고 google.com 에 연결하기 위해 주소를 입력하면 브라우저는 google.com 이라는 도메인 네임을 IP 로 변환한 후에 IP 주소로 연결하게 됩니다.

이때 DNS 를 IP 로 변환하는 함수인 gethostbynamegetaddrinfo 호출하며 이 함수는 Name Service Switch configuration 설정 파일인 /etc/nsswitch.conf 파일의 hosts 항목을 참고하여 설정한 순서대로 DNS 변환 작업을 수행합니다.

hosts 항목

배포판 종류나 버전에 따라 약간 다를수 있겠지만 hosts 항목을 보면 보통 다음과 같이 files, dns 항목이 설정되어 있습니다.

예로 다음은 RHEL/CentOS8 의 hosts 설정입니다.

hosts:      files dns myhostname


Ubuntu 20 은 다음과 같이 설정되어 있습니다.

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname


hosts 설정은 application(예: 브라우저) 에서 gethostbyname(google.com) 을 호출했을때 어떤 database 에서 DNS 정보를 가져올지를 결정합니다.


예로 hosts 항목에 files 가 먼저 있으므로 시스템의 정적 DNS 테이블 파일인 /etc/hosts 파일에서 먼저 google.com 에 대한 IP 정보를 읽어오게 됩니다.

Windows 도 c:\windows\system32\drivers\etc\hosts 에 설정한 정적 도메인 정보를 우선적으로 적용합니다.


만약 /etc/hosts 파일에 다음과 같이 google.com 정보가 설정되어 있다면 이 값을 리턴하지만 보통은 값이 없을테니 다음 항목인 dns 또는 mdns4_minial 사용해서 도메인에 대한 IP 정보를 조회하게 됩니다.

172.217.31.142 google.com


그래서 시스템에 설정한 DNS 정보를 이용해서 네임서버에 조회하고 받은 IP 를 갖고 google.com 서버에 접속하게 됩니다.


nsswitch.conf 설정에 대한 자세한 설명을 보려면 다음 명령을 실행하면 됩니다.

man nsswitch.conf


같이 보기