VPC의 AWS EC2에서 Ubuntu 14.04 인스턴스를 실행합니다. 이는 VPC에서 제공하는 네임서버를 사용합니다. 프로세스에 의한 각 DNS 조회는 VPC 이름 서버로 전송됩니다. 우리 프로세스는 많은 조회를 수행하며 일부는 실패하여 프로세스가 차단됩니다.
모든 컴퓨터에 로컬 캐싱 DNS 확인자를 설치하여 이 문제를 해결하고 싶습니다. 이 해석기는 을 수신하여 127.0.0.1:53
로컬 프로세스를 제공합니다. 확인자는 에 나열됩니다 . 즉, DHCP를 통해 동적으로 제공되는 VPC 이름 서버 대신에 확인자를 /etc/resolv.conf
포함하겠습니다 .nameserver 127.0.0.1
이를 위한 대체 프로그램이 많이 있습니다: bind9
, nscd
, dnsmasq
, 등. 그러나 파일을 읽기 전용으로 표시하거나 편집 또는 편집하는 등 dnscache
수동으로 관리하는 방법은 여러 가지가 있는 것 같습니다 . 어느 것이 권장됩니까?/etc/resolv.conf
/etc/network/interfaces
/etc/dhcp/dhclient.conf
요구 사항이 하나 더 있습니다. 로컬 확인자는 DNS 정보에 대한 신뢰할 수 있는 기관인 VPC 이름 서버로 조회를 전달합니다. 그러나 내가 나열한 프로그램은 이런 식으로 작동하지 않는 것 같습니다. 대신, 사전 구성된 루트 네임서버로 조회를 전달합니다.
dhclient-script
이론적으로는 , resolvconf
또는 이와 유사한 것을 사용자 정의하여 이 작업을 수행할 수 있습니다 . DHCP가 제공한 네임서버 IP를 가져와 로컬 DNS 확인자의 구성에 삽입한 다음 로컬 DNS 확인자 데몬을 다시 시작하는 후크를 추가합니다. 하지만 이건 꽤 털이 많은 일이어서 나는 그런 일을 피하고 싶습니다. (Ubuntu 14.04의 기본 스크립트에는 nscd
및 에 대한 내장된 지식이 있고 dnscache
아마도 내가 원하는 것을 수행할 수도 있지만 매우 불분명합니다.)
Ubuntu 14.04에서 로컬 캐싱 DNS 확인자를 실행하는 "축복받은" 방법은 무엇입니까? 특히, 로컬 확인자가 기본 DHCP 이름 서버로 전달되도록 하려면 어떻게 해야 합니까?
답변1
가장 쉬운 방법은 아마도 nscd일 것입니다.
기본 구성을 사용하여 nscd를 설치합니다.
/etc/nsswitch.conf를 업데이트하고 cache
이전에 dns
호스트 라인에 추가합니다.(편집: 이 부분은 대부분의 Linux 배포판에서 사용되는 glibc에는 적용되지 않지만 fbsd에는 필요합니다)
hosts: files cache dns
시험
tcpdump -v -n 'port 53'
getent hosts superuser.com
nscd의 업스트림을 업데이트하기 위해 /etc/resolve.conf를 조작하거나 dhcp 해석기를 캡처할 필요도 없습니다. nsswitch는 glibc의 일부이므로 캐시 서버를 통해 gethost* 호출을 올바르게 라우팅합니다.