A resolução de DNS funciona de forma inconsistente na conexão VPN

3

Eu tenho uma configuração de servidor OpenVPN no centro de dados e uso o tunnelblick como um cliente. Uma vez conectado, adicione rotas à minha rede DC LAN 10.0.0.0/24 e use 10.0.0.1 como DNS primário, 8.8.8.8 como DNS secundário.

10.0.0.1 hospede minhas entradas de DNS de subdomínio em dc.example.com

O problema é que, quando o túnel VPN é estabelecido, a resolução DNS não funciona de forma consistente.

Como eu verifiquei, /etc/resolve.conf e "Preferência do Sistema - Rede - Servidores DNS" mostra o mesmo resultado, que tem "10.0.0.1" e "8.8.8.8" como esperado.

No entanto, no terminal, obtive resultados mistos entre "dig" e "ping". Para cavar eu posso ficar como

➜  ~ dig ftp.dc.example.com

; <<>> DiG 9.8.3-P1 <<>> ftp.dc.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22990
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ftp.dc.example.com.        IN  A

;; ANSWER SECTION:
ftp.dc.example.com. 3600    IN  A   10.0.1.13

;; Query time: 84 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: Thu Nov 24 15:39:21 2016
;; MSG SIZE  rcvd: 55

Mas para ping eu consegui

➜  ~ ping ftp.dc.example.com
ping: cannot resolve ftp.dc.example.com: Unknown host

E em outra aplicação como navegador eu tenho o mesmo resultado que "ping", basicamente insolúvel.

Como você pode ver, não há nenhum problema ou problema de rede com o servidor DNS, caso contrário, "escavação" não funcionaria.

Mas, se eu consultar "www.google.com", os dois "ping" e "dig" funcionarão.

Assim, quando a conexão VPN é estabelecida, o arquivo resolve.conf é atualizado de acordo, mas alguns aplicativos ainda podem estar consultando o servidor DNS antigo.

Tentei reabrir o aplicativo do terminal ou usar terminal diferente como o iTerm, mesmo resultado. Mas se eu esperar por um tempo, digamos de 10 a 15 minutos, o ping e o navegador funcionarão.

    
por Carl 25.11.2016 / 01:01

2 respostas

0

Quando o OS X é configurado com vários servidores DNS (por exemplo, 10.0.0.1 e 8.8.8.8), o resolvedor do sistema não os trata como primário vs. secundário ou qualquer coisa assim, ele usa apenas todos eles. Então, quando você tenta acessar ftp.dc.example.com, ele pode tentar procurar o nome com o servidor 10.0.0.1 (e ter sucesso), ou pode tentar com o servidor 8.8.8.8 (e falhar). Qual deles ele usa para qualquer pesquisa é mais ou menos aleatório.

A única solução que conheço é não incluir servidores DNS na lista, a menos que você queira usá-los. Neste caso, isso significa usar 10.0.0.1 somente , não 8.8.8.8.

BTW, dig , host e nslookup não passam pelo resolvedor do sistema e, portanto, não se comportarão da mesma maneira - todos usam o primeiro servidor DNS listado, a menos que você diga especificamente para consultar um servidor diferente.

    
por 26.11.2016 / 03:39
1

Isso parece que você está sendo afetado pelo cache de DNS do OS X. Pode ser uma questão de limpar manualmente o cache no script 'up' do lado do cliente para sua conexão VPN. Este artigo pode ser útil para você link

    
por 26.11.2016 / 01:05