Como superar a limitação de resolver libc de no máximo 3 nameservers?

6

Suponha que eu trabalhe em ambiente com várias alterações de domínio e propagação lenta.
Eu quero testar a configuração de domínio imediatamente após a alteração de configuração, mas a propagação é lenta. Então eu quero adicionar mais servidores de nomes ao arquivo /etc/resolv.conf no meu laptop Debian 6.0.3. Especialmente servidores de nome de domínio do meu registrador de nome de domínio. Eu faço isso adicionando:

append domain-name-servers 85.128.130.10, 194.204.152.34;

ao meu arquivo /etc/dhcp/dhclient.conf . Depois de se reconectar à rede, meu /etc/resolv.conf é atualizado corretamente, mas com a seguinte mensagem:

# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.

Então, há uma maneira de usar mais de 3 nameservers no momento?

    
por malloc4k 30.12.2011 / 19:11

5 respostas

16

Coloque apenas 127.0.0.1 como servidor de nomes em /etc/resolv.conf e execute um cache DNS localmente. Eu recomendo Dnsmasq , é leve e fácil de configurar. Em distribuições como Debian e Ubuntu, eu também recomendo instalar o pacote resolvconf , que cuida de manter /etc/resolv.conf quando você não está t executar um cache DNS local ou manter a configuração do programa de cache DNS quando você estiver.

    
por 30.12.2011 / 22:47
7

É assim que fiz o Debian usar mais de 3 nameservers por vez.

  1. Instale o pacote dnsmasq

  2. Configure meu cliente DHCP local para não usar os endereços de servidor DNS fornecidos pelo servidor DHCP, mas apenas pelo servidor local. Para fazer isso eu adiciono no meu arquivo /etc/dhcp/dhclient.conf a seguinte linha

    supersede domain-name-servers 127.0.0.1;

  3. Configure dnsmasq para não usar o arquivo /etc/resolv.conf padrão, mas seu próprio arquivo alternativo. Em /etc/dnsmasq.conf adicione a seguinte linha

    resolv-file=/etc/resolv.dmasq

  4. Crie /etc/resolv.dmasq com quantos servidores de nomes desejar.

  5. Reinicie o serviço dnsmasq .

Eu testei com 9 nameservers definidos que não contêm meu domínio. O sistema não conseguiu resolver seu nome. Quando adicionei o 10º nameserver, o sistema resolveu seu nome corretamente.

    
por 08.01.2012 / 14:49
3

Do resolv.conf:

Up to MAXNS (currently 3) name servers may be listed, one per line. If there are multiple servers, the resolver library queries them in the order listed. If no nameserver entries are present, the default is to use the name server on the local machine. (The algorithm used is to try a name server, and if the query times out, try the next, until out of name servers, then repeat trying all name servers until a maximum number of retries are performed.)

Once all the nameservers are tried, and the query fails the default is to return the host not found message.

Can you repeat the same line below in the conf file so that multiple nameserver directives are added. Each line of nameserver directive supports upto 3 DNS addresses (per line).

Please note that only one host is ever tried, and that is on the top of the list in resolv.conf; if the address is not found on the first server or the server is not reachable, and only then the second is tried and then continues for the third server if the query on the second server fails. There is no round-robin or random selection of nameservers from resolv.conf during the host resolution, so the cost of trying all the nameservers will be directly taxing on the performance of underlying systems/applications.

No entanto, acho melhor implementar um servidor de nomes de cache local, o aumento no desempenho do DNS para aplicativos usando / dependendo da resolução do host aumentaria se o número de chamadas de DNS fosse reduzido / dependesse da latência também.

Outra abordagem seria usar servidores openDNS, eles talvez tenham os servidores DNS mais atualizados e também rápidos na Internet.

    
por 30.12.2011 / 19:30
2

Outra resposta. Não tenho certeza se isso seria relevante no Debian, mas ultimamente é mais uma abordagem convencional (e de moda) encontrada em quase todos os últimos lançamentos de distribuição.

Use perfis de rede. A idéia é alternar para as configurações de rede em ambientes de rede diferentes dinamicamente ou usar entradas do usuário, mantendo as cópias dos arquivos de configuração e configurações para todas as outras redes que podem não estar ativas no momento.

link http://www.linuxhomenetworking.com/forums/showthread.php/15822-Configure-multiple-network-profiles link

    
por 30.12.2011 / 20:13
-1

Edite /etc/resolvconf/update.d/libc a seguinte linha

[ "$N" = 3 ] && return 0

Para

[ "$N" = 4 ] && return 0

Agora você pode inserir 4 nameservers em /etc/network/interfaces , inserir a linha na sua interface

dns-nameservers x.x.x.x y.y.y.y a.a.a.a b.b.b.b
    
por 04.04.2014 / 13:40