Pesquisa inversa no Linux - Tentando o próximo servidor no NXDomain

1

Eu tenho um aplicativo em uma caixa do Linux que usa pesquisa inversa para resolver nomes de host. O problema é que eu tenho dois conjuntos de servidores DNS no meu resolve.conf (total de 4 servidores), com cada conjunto correspondendo a um intervalo diferente de IPs. Ele funciona bem para um intervalo de IPs, o que quer que esteja no primeiro servidor listado, mas se eu tentar nslookup o outro intervalo, ele reporta não encontrado: 3 (NXDOMAIN). Se ele apenas tentasse o próximo servidor na lista, ele seria bem-sucedido ... existe uma maneira de fazer isso? Os servidores DNS são apenas autoritativos para seus respectivos intervalos.

    
por Hypercoyote 27.08.2012 / 17:47

3 respostas

3

Gostaria de instalar o dnsmasq, torná-lo (127.0.0.1) o único nameserver e configurá-lo para consultar este ou aquele servidor para este ou aquele domínio usando a diretiva "server" dnsmasq.conf.

Se houver uma maneira de tentar um servidor diferente em um NXDOMAIN de um servidor DNS, isso seria usar um servidor DNS local com essa funcionalidade. O resolvedor do Linux não permite isso. O PowerDNS pode ser configurado para executar comandos para todas as consultas, portanto, como último recurso, você sempre poderá fazer isso.

    
por 27.08.2012 / 21:42
1

Uma resposta ao @cstamas, apenas para esclarecer como resolver o problema da VPN com o dnsmasq.

Digamos que sua máquina esteja no domínio homenetwork.test com endereços IP 10.1.0.0/16 e o servidor DNS seja 10.1.0.1. Esse servidor DNS só pode consultar os nomes de domínio "externos" para o domínio worknetwork.test. É autoritativo (internamente) para homenetwork.test e 1.10.in-addr.arp.

Agora, você conecta uma VPN para ingressar na rede de trabalho, e agora você tem uma nova rota para 10.2.0.0/16 através dessa interface e um novo servidor DNS 10.2.0.1 que é autoritativo para worknetwork.test e 2.10.in- addr.arpa. Se você usar um ou outro desses servidores de nomes, só poderá resolver um ou outro dos domínios worknetwork.test e homenetwork.test.

Se você usar os dois servidores DNS (e RES_ROTATE), não será melhor, pois às vezes você poderá resolver um ou outro.

Agora, se você usar

dnsmasq --no-resolv --no-negcache --no-host --conf-file= \
   --server=/worknetwork.test/10.2.0.1 \
   --server=/2.10.in-addr.arpa/10.2.0.1 \
   --server=10.1.0.1

E tenha o "servidor de nomes 127.0.0.1" no resolv.conf, você usará o 10.2.0.1 para resolver o worknetwork.test e os endereços IP 10.2.x.x e o seu servidor DNS home para o resto.

    
por 29.08.2012 / 12:40
0

Você conta poucas informações, então é difícil começar, mas vou tentar ...

Em primeiro lugar, os servidores sobre os quais você está falando são servidores de DNS autoritativos (que fornecem informações sobre as zonas configuradas), certo? Nesse caso, você deve configurar um servidor no seu resolv.conf que seja recursivo apenas (apenas resolvendo o nome do DNS para você, não fornecendo informações). Você pode instalá-lo para ouvir em localhost como sch disse.

Por outro lado, se um servidor retornar um nxdomain, isso significa: "Eu sei esse nome, sou um servidor autoritativo para ele e esse nome não existe." O algoritmo padrão de resolução de DNS pára aqui. Então é isso, não há maneira de contornar isso. Você deve configurar seus servidores de DNS autoritativos para não serem autoritativos para esse nome.

    
por 27.08.2012 / 22:01