Problema de resolução de domínio com estoque Debian

2

Eu tenho uma instalação simples com o Debian como convidado no Virtualbox. Eu instalei o pacote resolvconf . O arquivo resolv.conf é este:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 10.3.x.x
nameserver 10.219.x.x

Eu adicionei nameservers através da GUI (Aplicativos / Ferramentas do Sistema / Ferramentas de Rede).

O 8.8.8.8 é o DNS do Google e eu quero usá-lo para resolver endereços da Internet. O 10.3.x.xe o 10.219.x.x são necessários para resolver domínios internos como teleportal.company.intra.

Quando eu tenho esses servidores de nomes no resolv.conf (e 8.8.8.8 é o primeiro) eu recebo um erro ao consultar um endereço interno:

> host teleportal.company.intra           
Host teleportal.company.intra not found: 3(NXDOMAIN)

No entanto, se eu definir explicitamente o endereço do segundo nameserver como um servidor de nomes para o nslookup, ele funcionará:

» nslookup teleportal.company.intra 10.3.x.x
Server:     10.3.x.x
Address:    10.3.x.x#53

teleportal.company.intra    canonical name = proxy.dummy1.dummy2.private.
Name:   proxy.dummy1.dummy2.private
Address: 172.27.x.x
Name:   proxy.dummy1.dummy2.private
Address: 172.27.x.x

A documentação do resolv.conf afirma que as entradas nameserver serão tentadas na ordem, se uma delas não puder resolver a consulta. No entanto, se eu ativar a depuração ao usar nslookup , vejo que nslookup nem mesmo tenta outras entradas, apenas a primeira.

Se eu alterar a ordem do nameservers , os endereços internos serão resolvidos corretamente (o nslookup ainda usará apenas a primeira entrada).

Como posso configurar 3 nameservers para que os utilitários usem todos eles em ordem?

    
por karatedog 06.04.2012 / 11:39

2 respostas

7

A lista resolv.conf de servidores de nomes é contatada um após o outro apenas no caso de tempo limite. Não quando um servidor de nomes diz com autoridade "não existe tal domínio" ( NXDOMAIN ). No seu caso, o DNS 8.8.8.8 aparentemente não sabe sobre teleportal.company.intra e o resolvedor parou quando recebeu o NXDOMAIN .

Se possível, você deve configurar um servidor DNS e usá-lo para toda a sua resolução e permitir que o servidor DNS decida como resolver o nome. Se 10.3.x.x for o seu servidor DNS da intranet, provavelmente também será possível resolver os nomes de host da Internet.

Dito isto, se você realmente quiser retransmitir as solicitações para diferentes servidores DNS com base nos nomes que você poderia tentar pdnsd . É um programa de proxy DNS em cache que seria executado localmente. Instale-o ( apt-get install pdnsd ) e adicione seu localhost ( 127.0.0.1 ) ao resolv.conf. No arquivo de configuração pdnsd.conf , você pode especificar quais servidores DNS devem ser contatados com base na correspondência de nomes. Um exemplo de parágrafo para o seu /etc/pdnsd.conf :

server {
    label= "google";
    exclude = ".company.intra";
    ip = 8.8.8.8;
}

server {
    label= "intra";
    include = ".company.intra";
    ip = 10.3.x.x;
}

Eu tirei muitos outros parâmetros no arquivo acima. Você deve seguir a documentação e o arquivo de configuração de exemplo que vem com o pacote debian para configurar seu pdnsd.conf .

    
por 06.04.2012 / 13:02
2

Eu acho que o resolvedor retorna ao DNS secundário (ou terciário ou ...) somente se o primeiro (ou segundo ou ...) falhar .

Neste caso, a consulta não falha , devolve corretamente NXDOMAIN , ou seja, o nome do domínio não existe.

Se você realmente deseja usar o DNS do Google (ou qualquer outro DNS) para resolver domínios externos (em vez de seus servidores de nomes internos), configure seus servidores 10.3.x.x e 10.219.x.x como authoritative para seus nomes internos e para encaminhar todas as outras consultas para o DNS externo, use seus servidores de nomes internos como seus servidores de nomes somente em seus computadores internos.

    
por 06.04.2012 / 12:39