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

10

Estou executando o ubuntu xenial 16.04

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

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

Então, como posso obtê-lo para reconfigurar automaticamente o resolv.conf ao conectar-se à VPN?

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

    
por Christian Bongiorno 26.05.2016 / 20:01

2 respostas

6

O pacote OpenVPN tem 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 dos servidores DNS das opções dhcp-option DNS passadas pelo ponto / servidor do OpenVPN e configurará resolvconf de acordo. Também lida com dhcp-option DOMAIN .

Não é perfeito, no entanto, porque isso irá pré-adicionar esses servidores de nomes à lista de servidores de nomes existentes, em vez de sobrescrever a lista de servidores de nomes. Se você estiver usando openresolv , o -x pode ser usado para sobrescrever a configuração do DNS, em vez de usá-la como prefixo.

Se você estiver usando systemd-resolved , poderá usar o /etc/openvpn/update-systemd-resolved , que engancha em systemd-revolved em vez de resolvconf .

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

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

    
por 08.06.2016 / 01:21
0

Aqui está a solução que eu criei: Existe um switch que permite que você execute um script quando o túnel está ativo e em execução. Eu uso o switch para basicamente sobrescrever o arquivo resolv.conf com um que sei estar correto. É um hack 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 será executado de outra maneira; mesmo antes do meu DNS hackear.

Estou definitivamente aberto a um caminho melhor. O gerenciador de rede do Ubuntu simplesmente não funciona. Eu cortei ingressos para o Ubuntu sobre isso repetidamente

    
por 29.05.2016 / 19:20

Tags