Я запускаю экземпляры Ubuntu 14.04 на AWS EC2 в VPC. Они используют сервер имен, предоставленный нашим VPC. Каждый поиск DNS процессом отправляется на сервер имен VPC. Наши процессы выполняют много поисков, и некоторые из них заканчиваются неудачей, что приводит к блокированию процессов.
Я хочу исправить это, установив локальный кеширующий DNS-преобразователь на каждой машине.
Этот распознаватель будет прослушивать 127.0.0.1:53
, обслуживая локальные процессы.
Преобразователь будет указан в /etc/resolv.conf
, т.е. у меня будет nameserver 127.0.0.1
вместо сервера имен VPC, предоставляемого динамически через DHCP.
Для этого есть множество альтернативных программ: bind9
, nscd
, dnsmasq
, dnscache
и т.д. Но, похоже, есть много способов вручную управлять /etc/resolv.conf
, например, пометить файл как доступный только для чтения или отредактировать /etc/network/interfaces
или редактирование /etc/dhcp/dhclient.conf
.
Что рекомендуется?
У меня есть еще одно требование: локальный распознаватель будет пересылать запросы на сервер имен VPC, наш доверенный орган для получения информации DNS. Однако программы, которые я перечислил, похоже, не ведут себя так. Вместо этого они направляют свои поиски предварительно настроенным корневым серверам имен.
Теоретически я мог бы сделать это, настроив dhclient-script
, resolvconf
или что-то в этом роде.
Я бы добавил перехватчик, который принимает IP-адрес сервера имен, предоставленный DHCP, вставляет его в конфигурацию моего локального DNS-преобразователя, а затем перезапускает демон локального DNS-преобразователя.
Но это довольно волосато, и я хочу избежать этого.
(Сценарии по умолчанию в Ubuntu 14.04, кажется, имеют некоторые встроенные знания nscd
и dnscache
и, возможно, делают то, что я хочу, но это очень неясно.)
Какой "благословенный" способ запустить распознаватель DNS с локальным кэшированием в Ubuntu 14.04? В частности, как мне перевести локальный распознаватель на сервер имен DHCP по умолчанию?