Como buscar automaticamente um novo servidor de nomes na conexão VPN


11

Estou executando o ubuntu xenial 16.04

Estamos usando o openvpn para conectar-se a uma nuvem privada virtual. Essa nuvem possui seu próprio servidor DNS (assim como nossa rota local - casa ou escritório).

Quando eu me conecto à VPN, todos os IPs dessa rede estão disponíveis, mas não consigo acessar nenhum pelo nome do host. O motivo é simples: o arquivo resolv.conf ainda mostra o servidor de nomes do escritório local. Se eu sobrescrever manualmente o resolv.conf para ter o servidor de nomes correto, tudo ficará bem.

Então, como posso reconfigurar automaticamente o resolv.conf ao conectar-me à VPN?

Posso conectar-me a um evento do sistema e executar um script?


1
Normalmente, há uma opção para permitir que a VPN envie seu próprio servidor DNS. Qual cliente você está usando - tunnelblick?
Ryder

Estou usando o cliente openvpn oficial. Em algum lugar, li que o processo VPN não pode atualizar o DNS.
Christian Bongiorno 29/05

Você já tentou a --register-dnsopção? Como alternativa, existem opções do lado do cliente que você pode definir, como dhcp-options (o outro lado das instruções aqui: openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
Ryder

Respostas:


8

O pacote OpenVPN possui um script para isso em /etc/openvpn/update-resolv-conf. Você precisa configurá-lo com:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Isso buscará os endereços do servidor DNS das dhcp-option DNSopções passadas pelo servidor / ponto OpenVPN e configurará de resolvconfacordo. Ele lida dhcp-option DOMAINtambém.

No entanto, não é perfeito, porque isso anexará esses servidores de nomes à lista de servidores de nomes existentes, em vez de sobrescrever a lista de servidores de nomes. Se você estiver usando openresolvo -xpode ser usado para substituir a configuração de DNS em vez de preprending a ele.


Se você estiver usando systemd-resolved, poderá usar o /etc/openvpn/update-systemd-resolvedque se encaixa em systemd-revolvedvez de resolvconf.

script-security 2 
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre

No Debian, esse script está no openvpn-systemd-resolved.


2
acima dessas 2 linhas, você também vai precisar adicionar script-security 2ou executar o seu openvpncom--script-security 2
32r34wgf3e

0

Aqui está a solução que eu encontrei: Existe uma opção que permite executar um script quando o túnel está em funcionamento. Eu uso a opção para substituir essencialmente o arquivo resolv.conf por um que eu sei que está correto. É um truque total, eu sei.

sudo openvpn --up reset-dns.sh --client client.ovpn

o script (reset-dns):

#!/bin/bash
cp ~/resolv.conf /etc/resolv.conf

Além disso, para aqueles que dizem "OMG! Você está executando esse túnel como root!" Não vai funcionar de outra maneira; mesmo antes do meu hack do DNS.

Definitivamente, estou aberto a um caminho melhor. O gerenciador de rede do ubuntu simplesmente não funciona. Eu cortei tickets para o ubuntu neste repetidamente

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.