Como configurar corretamente o uso do DNS no Ubuntu? Respostas autoritativas sem sinalizador RA são ignoradas

5

Eu tenho o mais recente Ubuntu limpo 14.04.1 64-bit do site oficial instalado no Virtualbox. Eu me conecto a uma rede VPN usando vpnc que define 2 servidores DNS usando DHCP:

user@virtual:~$ cat /etc/resolv.conf 
# 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 10.88.94.1
nameserver 8.8.8.8
nameserver 10.40.0.1

Onde 10.88.94.1 e 8.8.8.8 são retornados por vpn dhcp e 10.40.0.1 é retornado por lan dhcp. O primeiro servidor DNS retornado pelo vpn dhcp é configurado como servidor de nomes não-recursivo e autoritativo para alguns nomes internos.

O problema é que o Ubuntu ignora o sinalizador autoritativo e descarta uma resposta válida porque não é recursivo:

user@virtual:~$ nslookup
> video.something.com
;; Got recursion not available from 10.88.94.1, trying next server
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   video.something.com
Address: 180.112.94.1

Como o tcpdump mostra claramente a resposta do primeiro servidor DNS com o sinalizador 'autoritativo' definido, mas de alguma forma ele é ignorado ('*' na segunda resposta é para "autoritativo", '-' é para "não-recursivo"):

13:23:44.505098 IP 10.40.130.209.44159 > 10.88.94.1.domain: 63790+ A? video.something.com. (32)
13:23:44.506285 IP 10.88.94.1.domain > 10.40.130.209.44159: 63790*- 1/0/0 A 10.88.94.12 (48)
13:23:44.506390 IP 10.40.130.209.45437 > 8.8.8.8.domain: 63790+ A? video.something.com. (32)
13:23:44.608414 IP 8.8.8.8.domain > 10.40.130.209.45437: 63790 1/0/0 A 180.112.94.1 (48)

A mesma configuração funciona conforme o esperado (o primeiro resultado de DNS é usado) no Windows e no OSX. Mas não no Ubuntu. É algo que eu posso consertar no Ubuntu para que as respostas autoritativas sejam processadas corretamente, independentemente do sinalizador "não-recursivo" ou esteja completamente corrompido e onde não há nada que eu possa fazer?

    
por grigoryvp 19.09.2014 / 11:28

2 respostas

4

O tipo de comportamento de retorno que você parece esperar não faz parte de como o DNS deve funcionar. O segundo nameserver no resolv.conf só deve ser contatado no caso de o primeiro não responder ou se houver algum outro tipo de erro de rede.

A Microsoft aparentemente fez suas próprias coisas, e certamente é útil para o que você está tentando fazer, mas não deve ser confiável para configurar uma VPN. A Microsoft também tem uma noção de usar resolução de nome diferente para diferentes interfaces de rede.

Se você não pode influenciar a configuração VPN, sua melhor aposta no Linux pode ser configurar seu próprio servidor de nomes que decide para onde encaminhar solicitações por domínio.

    
por 25.09.2014 / 00:55
0

Para que a recursão do DNS funcione para um servidor bind9 do Ubuntu, você deve assegurar que as seguintes linhas estejam em /etc/bind/named.conf.options no servidor DNS:

    recursion yes;
    allow-recursion { any; };

Com isso dito, você afirma que não tem acesso aos servidores DNS. Nesse caso, você considerou alterar a ordem dos seus servidores DNS? Por exemplo, se você levar sua última entrada de DNS de ...

nameserver 10.40.0.1

e coloque-o em um arquivo em /etc/resolvconf/resolv.conf.d/head, em seguida, execute o comando resolvconf -u , a entrada será automaticamente adicionada ao topo do /etc/resolv.conf. O que isto faz é tornar 10.40.0.1 o primeiro servidor DNS a usar, e então ele verifica os registros da VPN depois disso (assumindo que 10.40.0.1 permita a recursão do DNS).

    
por 24.09.2014 / 18:37

Tags