Eu executo instâncias do Ubuntu 14.04 no AWS EC2 em um VPC.
Estes usam o servidor de nomes fornecido pelo nosso VPC.
Cada pesquisa de DNS por um processo é enviada para o servidor de nomes VPC.
Nossos processos realizam muitas pesquisas e alguns falham, resultando em processos bloqueados.
Desejo corrigir isso instalando um resolvedor DNS de cache local em todas as máquinas.
Este resolvedor irá escutar 127.0.0.1:53
, servindo processos locais.
O resolvedor será listado em /etc/resolv.conf
,
ou seja, eu terei nameserver 127.0.0.1
em vez do servidor de nomes VPC fornecido dinamicamente via DHCP.
Existem muitos programas alternativos para isso: bind9
, nscd
, dnsmasq
, dnscache
, etc.
Mas parece haver muitas maneiras de gerenciar manualmente /etc/resolv.conf
,
por exemplo. marcando o arquivo como somente leitura ou editando /etc/network/interfaces
ou editando /etc/dhcp/dhclient.conf
.
Qual é recomendado?
Eu tenho mais um requisito:
o resolvedor local encaminhará pesquisas para o servidor de nomes VPC, nossa autoridade confiável para informações de DNS.
No entanto, os programas listados não parecem se comportar dessa maneira.
Em vez disso, eles encaminham suas pesquisas para servidores de nomes raiz pré-configurados.
Teoricamente, eu poderia fazer isso funcionar personalizando dhclient-script
, resolvconf
ou algo assim.
Gostaria de adicionar um gancho que leva o IP do servidor de nomes fornecido pelo DHCP, injeta-o na configuração do meu resolvedor de DNS local,
em seguida, reinicie o daemon de resolução de DNS local.
Mas isso é bem cabeludo, e eu quero evitar fazer isso.
(Os scripts padrão no Ubuntu 14.04 parecem ter algum conhecimento inerente de nscd
e dnscache
,
e, possivelmente, fazer o que eu quero, mas é muito claro.)
Qual é a maneira "abençoada" de executar um resolvedor DNS de cache local no Ubuntu 14.04? Em particular, como faço o resolvedor local encaminhar para o servidor de nomes DHCP padrão?