O roteamento de DNS falha para conexões VPN no Ubuntu 16.04 Out-of-the-Box

4

Gostaria de relatar um comportamento estranho e minha solução. Eu fiquei extremamente insatisfeito, pois depende de scripts personalizados e pacotes não-padrão. Eu gostaria que a comunidade ajudasse a descobrir uma solução melhor para isso.

Problema

Eu confio strongmente no OpenVPN para todos os meus servidores. Depois de atualizar para o Ubuntu 16.04.1 a partir de 14.04.5, deixei de poder acessar qualquer site e a maioria dos serviços.

Meus servidores OpenVPN continuaram a encapsular o tráfego muito bem para clientes Mac OS X, Windows e Ubuntu 12.04 / 14.04.

Detalhes do sistema

Meu arquivo resolv.conf pronto para uso ficou parecido com:

nameserver 68.105.28.16
nameserver 68.105.29.16

Minhas rotas indicaram que eu estava roteando através de um roteador em 192.168.0.1 e foi atribuído o endereço IP dinâmico de 192.168.0.3. Mostrado pelos comandos:

ip r
ip a

Meu tráfego funcionaria normalmente (internet, XMCP, IRC, etc ...) até que eu conectasse ao meu servidor OpenVPN através do terminal com o comando

sudo openvpn ~/client.ovpn

Uma vez conectado, ele interromperá imediatamente todo o tráfego.

Um novo adaptador (tun0) foi criado para essa conexão. Mostrado pelo comando:

ip a

A conexão com o Wireshark revelou dezenas de chamadas de DNS destinadas aos meus servidores DNS originais, embora a configuração tenha sido definida para encapsular todo o tráfego através dos meus servidores OpenVPN.

Minha solução

Após uma semana inteira lendo muitas dezenas de relatórios de bugs, postagens de blogs e tutoriais, ainda não tive sucesso. Mas esse é um problema de DNS e o DNS é gerenciado por resolv.

Finalmente, deparei com essa biblioteca do GitHub e meu problema foi resolvido.

masterkorp / openvpn-update-resolv-conf

Para implementar esses scripts, eu clonei o repositório em meu diretório pessoal com:

git clone https://github.com/masterkorp/openvpn-update-resolv-conf.git

Eu copiei esses scripts para / etc / openvpn com:

sudo chmod +x *.sh && sudo mv *.sh /etc/openvpn

Em seguida, instalei o openresolv, nscd e não acoplado com:

sudo apt-get install openresolv nscd unbound

Depois, editei o arquivo de configuração do cliente OpenVPN (* .ovpn ou * .conf) e acrescentei as seguintes linhas ao final das diretivas de configuração, mas antes da tag "ca" (seus certificados inline, se houver):

script-security 2
up "/etc/openvpn/update-resolv-conf.sh /etc/openvpn/update-systemd-network.sh"
down "/etc/openvpn/update-resolv-conf.sh /etc/openvpn/update-systemd-network.sh"

Isso permitiu que eu me conectasse com sucesso à VPN e encapsulasse meu tráfego.

Meu arquivo resolv.conf agora se parece com:

# Generated by resolvconf
nameserver 127.0.0.1
nameserver 127.0.1.1

Discussão e necessidade de melhor solução

Parece-me que os registros DNS do Ubuntu não estão sendo atualizados corretamente. A finalidade do código acima e das novas entradas é reescrever um processo de atualização com defeito dos registros do servidor DNS interno. Eu li alguns relatórios de bugs no Launchpad que sugerem que o 16.04 se baseia em algum código antigo de atualização de gerenciamento de rede que foi escrito e funciona em 14.04, e nunca foi migrado corretamente para a nova estrutura 16.04.

Deve haver uma maneira melhor de lidar com esse processo. Não gosto da ideia de usar scripts personalizados para corrigir o comportamento problemático do SO.

Alguém tem alguma ideia disso?

    
por ok123jump 24.09.2016 / 21:43

1 resposta

-3

Defina seus servidores DNS em /etc/resolv.conf e tente isso no terminal como root:

chattr + i /etc/resolv.conf

depois reinicie

    
por A1 Computers 24.09.2016 / 22:21