Eu tenho um aplicativo em uma caixa Linux que usa pesquisa reversa para resolver nomes de host. O problema é que tenho dois conjuntos de servidores DNS em meu resolve.conf (4 servidores no total), com cada conjunto correspondendo a um intervalo diferente de IPs. Funciona bem para um intervalo de IPs, qualquer que esteja no primeiro servidor listado, mas se eu tentar pesquisar o outro intervalo, ele relata não encontrado: 3 (NXDOMAIN). Se apenas tentasse o próximo servidor da lista, teria sucesso... existe uma maneira de fazer isso? Os servidores DNS são autorizados apenas para seus respectivos intervalos.
Responder1
Eu instalaria o dnsmasq, tornaria (127.0.0.1) o único servidor de nomes e o configuraria para consultar este ou aquele servidor para este ou aquele domínio usando a diretiva "servidor" dnsmasq.conf.
Se houver uma maneira de tentar um servidor diferente em um NXDOMAIN de um servidor DNS, 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 cada consulta; portanto, como último recurso, você sempre pode fazer isso.
Responder2
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" do domínio worknetwork.test. É oficial (internamente) para homenetwork.test e 1.10.in-addr.arp.
Agora, você conecta uma VPN para ingressar na rede de trabalho e agora tem uma nova rota para 10.2.0.0/16 por meio 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 "nameserver 127.0.0.1" em resolv.conf, você usará 10.2.0.1 para resolver o worknetwork.test e os endereços IP 10.2.xx e seu servidor DNS doméstico para o resto.
Responder3
Você conta pouca informação então é difícil começar, mas vou tentar...
Em primeiro lugar, os servidores de que você está falando são servidores DNS autoritativos (que fornecem informações sobre as zonas que você configurou), certo? Nesse caso, você deve configurar um servidor em seu resolv.conf que seja apenas recursivo (resolvendo apenas o nome DNS para você, não fornecendo informações). Você pode instalá-lo para ouvir no localhost comoschdisse.
Por outro lado, se um servidor retornar um nxdomain, isso significa: "Eu conheço esse nome, sou um servidor autorizado para ele e esse nome não existe." O algoritmo padrão de resolução de DNS termina aqui. Então é isso, não há como contornar isso. Você deve definir seus servidores DNS autoritativos para não serem autoritativos para esse nome.