Cómo buscar automáticamente un nuevo servidor de nombres en la conexión VPN

11

Estoy ejecutando ubuntu xenial 16.04

Estamos utilizando openvpn para conectarse a una nube privada virtual. Esa nube tiene su propio servidor DNS (al igual que nuestra ruta local: hogar u oficina).

Cuando me conecto a la VPN, todas las IP de esa red están disponibles, pero no puedo acceder a ninguna por nombre de host. La razón es simple: el archivo resolv.conf todavía muestra el servidor de nombres de mi oficina local. Si sobrescribo manualmente el resolv.conf para tener el servidor de nombres correcto, todo está bien.

Entonces, ¿cómo puedo hacer que reconfigure automáticamente resolv.conf al conectarse a la VPN?

¿Puedo conectarme a un evento del sistema y ejecutar un script?

Christian Bongiorno
fuente
1
Normalmente hay una opción para permitir que la VPN empuje su propio servidor DNS. ¿Qué cliente estás usando, tunnelblick?
Ryder
Estoy usando el cliente oficial de openvpn. En algún lugar leí que el proceso de VPN no puede actualizar DNS.
Christian Bongiorno
¿Has probado la --register-dnsopción? Alternativamente, hay opciones del lado del cliente que puede establecer, como dhcp-options (el otro lado de las instrucciones aquí openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
Ryder

Respuestas:

8

El paquete OpenVPN tiene un script para esto en /etc/openvpn/update-resolv-conf. Necesita configurarlo con:

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

Esto buscará las direcciones del servidor DNS de las dhcp-option DNSopciones pasadas por el par / servidor OpenVPN y se configurará en resolvconfconsecuencia. Se maneja dhcp-option DOMAINtambién.

Sin embargo, no es perfecto, porque esto antepondrá esos servidores de nombres a la lista de servidores de nombres existentes en lugar de sobrescribir la lista de servidores de nombres. Si está usando openresolvel -xse puede utilizar para sobrescribir la configuración DNS en lugar de preprending a ella.


Si está usando systemd-resolved, puede usar el /etc/openvpn/update-systemd-resolvedque se engancha en systemd-revolvedlugar de resolvconf.

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

En Debian, este script está en el openvpn-systemd-resolved.

ysdx
fuente
2
por encima de estas líneas 2, también tendrá que añadir script-security 2o ejecutar su openvpncon--script-security 2
32r34wgf3e
0

Aquí está la solución que se me ocurrió: hay un interruptor que le permite ejecutar un script cuando el túnel está en funcionamiento. Utilizo el interruptor para esencialmente sobrescribir el archivo resolv.conf con uno que sé que es correcto. Es un truco total, lo sé.

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

el script (reset-dns):

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

Además, para los que dicen "¡Dios mío! ¡Estás ejecutando ese túnel como root!" No funcionará de otra manera; incluso antes de mi pirateo de DNS.

Definitivamente estoy abierto a una mejor manera. El administrador de red para ubuntu simplemente no funcionará. He cortado boletos para ubuntu en esto repetidamente

Christian Bongiorno
fuente