Linux 에서 네임 서비스 스위치(nsswitch; Name Service Switch) 설정

nsswitch.conf 란

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

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


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

$ cat /etc/nsswitch.conf | grep hosts

hosts:      files dns

의미는 좌측에서 우측의 순서대로 DNS 변환 작업을 하라는 지시자이며 우선 순위 높은 곳에 DNS 변환을 성공하면 우측 항목은 무시합니다.

여기서 맨 좌측의 files 는 /etc/hosts 파일을 의미하며 우선 순위는 hosts 파일을 찾고 없을 경우에만 DNS 에서 절의합니다.

/etc/nsswitch.conf 가 위와 같이 설정되어 있다면 /etc/hosts 파일에 다음과 같이 설정할 경우 google.com 에 연결하면 늘 localhost 에 접속하게 됩니다.

127.0.0.1  google.com


만약 /etc/nsswitch.conf 가 다음과 같이 설정되어 있다면 /etc/hosts 파일에 google.com 이 설정되어 있어도 정상적으로 google.com 에 연결합니다.

hosts:  dns    files

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


Unix, Windows 상관없이 hosts 파일의 포맷은 다음과 같이 IP 뒤에 공백을 주고 domain 이름을 적어주면 됩니다.다.

## comment
127.0.0.1   localhost localhost.localdomain


Name Server 수동 설정

Linux에 DNS(Domain Name Server) 설정 방법 을 참고하세요.

같이 보기