Ubuntu 18.04 sin resolución DNS cuando está conectado a openvpn

40

Cuando me conecto a una red VPN a través de Gnome Network-manager, pierdo la resolución DNS y, en la práctica, no puedo acceder a los recursos dentro de la red VPN o fuera.

Cuando estaba usando Ubuntu 16.04 y estaba usando la VPN, el /etc/resolv.conf/archivo " " contenía los servidores DNS de la red (VPN) que había conectado. Ahora siempre contiene las siguientes entradas:

nameserver 127.0.0.53
search myprovider.com

Por lo que he entendido 127.0.0.53es la dirección del código auxiliar DNS utilizado por system-resolved.

Sospecho que esto es un error porque la VPN funcionaba bien Ubuntu 16.04. ¿Hay alguna manera de configurar los servidores DNS de mi red cuando estoy usando un servicio VPN?

Actualizar:

Intenté conectarme a la red OpenVPN con el archivo de configuración adjunto al final de la publicación, pero aparece el siguiente error:

 Authenticate/Decrypt packet error: cipher final failed

He verificado que el servidor usa la compresión lzo y también lo he habilitado. La conexión permanece activa pero no puedo navegar a ninguna página dentro o fuera de la VPN.

En el archivo de configuración que figura a continuación, he incluido las soluciones publicadas en las respuestas.

 client
 dev tun
 proto udp
 remote openvpn.bibsys.no 1194
 remote my-server-2 1194
 resolv-retry infinite
 nobind
 user myuser
 group myuser
 persist-key
 persist-tun
 ca ca-cert.pem
 cert openvpn.crt
 key openvpn.key
 cipher AES-256-CBC
 comp-lzo yes
 script-security 2
 up /etc/openvpn/scripts/update-systemd-resolved
 down /etc/openvpn/scripts/update-systemd-resolved
 down-pre
orestis
fuente
1
Al depurar un problema similar a este que no podía resolverse exactamente de la misma manera, utilicé resolvectl statusy resolvectl helpdescubrí mi solución específica.
notbad.jpeg

Respuestas:

27

Encontré una solución en esta publicación de blog . Si bien se mencionan dos soluciones, prefiero usar la segunda porque significa que mi DNS está configurado por el servidor OpenVPN (la primera solución significa que uso los mismos servidores DNS, esté o no conectado al servidor OpenVPN).

En breve:

  • sudo mkdir -p /etc/openvpn/scripts
  • sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
  • sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved

Luego edite su archivo de cliente OpenVPN (por ejemplo, client.ovpn) cambiando los scripts de arriba / abajo a:

script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved

(He comentado la configuración original arriba / abajo).

Andy Turfer
fuente
Si uno está usando la utilidad gnome openvpn, ¿dónde debería almacenarse el archivo config.ovpn?
orestis
1
config.ovpnno es "encontrado": es el archivo de configuración del cliente utilizado para conectarse. Puede generarlo, o su proveedor de OpenVPN lo emite (y es posible que no se llame config.ovpn, se podría llamar de cualquier forma, como client.ovpn).
Andy Turfer
Esto funciona perfectamente.
Ahsanul Haque
2
Me saleWARNING: Failed running command (--up/--down): external program fork failed
tonto
Desafortunadamente, esto no funcionó para un vpn que usa tcp, los sitios fuera de vpn no se resuelven, por lo tanto, comencé a usar client.pritunl.com/#install encontrado útil
Saisurya Kattamuri
49

Problema

El script /etc/resolv.confno actualiza el archivo /etc/openvpn/update-resolv-confporque resolvconfno está instalado de manera predeterminada en ubuntu 18.04.

De hecho, una de las primeras líneas de ese script verifica el /sbin/resolvconfejecutable:

[ -x /sbin/resolvconf ] || exit 0

La instalación de resolvconf vía apt-getno es una solución ya que el /etc/openvpn/update-resolv-confscript actualiza el /etc/resolv.confarchivo con la entrada DNS introducida, pero el dispositivo tun parece ignorarlo.

Solución

  1. Ubuntu 18.04 usa systemd-resolved, así que todo lo que tienes que hacer es instalar el script de ayuda openvpn para systemd-resolvedvía

    sudo apt install openvpn-systemd-resolved
    

    o con estas instrucciones de GitHub

  2. Actualice su config.ovpnarchivo agregando estas líneas:

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

    Que en lugar de sumar y bajar de /etc/openvpn/update-resolv-confla conf.

  3. Para evitar fugas de DNS, debe agregar esta línea al final del config.ovpnarchivo (de acuerdo con este comentario del problema systemd ):

    dhcp-option DOMAIN-ROUTE .
    
Qlimax
fuente
1
Muchas gracias, trabajando para mí en Ubuntu 18.04. Y quiero especificar, ese parámetro script-security 2aún es necesario antes de las líneas ascendentes / descendentes, de lo contrario el programa se cae con un error (OpenVPN 2.4.4)
lucidyan
Me alegro de que haya ayudado :) Cambié la última oración de la respuesta, en mi caso script-security 2 no fue necesario. Quizás sea porque estoy ejecutando el cliente openvpn como root (con sudo)
Qlimax
1
@Qlimax ¿Sabes cómo importamos estas configuraciones al cliente gnome openvpn?
orestis
2
@orestis tiene que instalar este paquete. sudo apt-get install network-manager-openvpn-gnome Entonces debería poder importar archivos de configuración .ovpn en el administrador de red gnome. askubuntu.com/questions/187511/… La interfaz de usuario ha cambiado con el tiempo, debería poder encontrarla en configuración-> red-> vpn
Qlimax
1
Sorprende que esto funcione para muchos de ustedes: tengo un ovpn.config, sí, pero NetworkManager no parece usarlo. ¿Editó el archivo y lo reimportó, en particular para reemplazar los scripts de subida / bajada? Porque veo este binario opaco / usr / lib / NetworkManager / nm-openvpn-service-openvpn-helper utilizado para el que no pude encontrar documentación. Si se necesita volver a importar ovpn.config, modifique la respuesta.
Harald
5

En realidad, hay una solución mucho más fácil para este problema. El problema es con el tráfico DNS y cómo Ubuntu 18 maneja eso. De manera predeterminada, el reenvío de IP está deshabilitado, que es lo que OpenVPN necesita para proporcionar una red adecuada. Todo lo que tienes que hacer es ejecutar el siguiente comando:

sudo nano /etc/sysctl.conf

Una vez que tenga este archivo abierto, busque la línea que contiene net.ipv4.ip_forward. Si esta línea está comentada, elimine el signo # al frente de la línea (si no está comentado, entonces tiene otro problema). Guarde el archivo y luego reinicie su instancia de servidor OpenVPN.

Esta solución no requiere ninguna modificación en el código del cliente o OpenVPN después de la actualización a Ubuntu 18. Probado y confirmado que funciona.

Sin embargo, esto obviamente requiere que pueda administrar el servidor. Y desafortunadamente, el error existe para muchos que simplemente se conectan con 18.04 a un servidor OpenVPN que es administrado por otra persona ...

Max
fuente
No funcionó para mí. ¿Cómo determinó que este era el problema, en su caso?
hwjp
ADVERTENCIA: ¡no necesita habilitar ip_forward en el cliente openvpn , NUNCA! Es un riesgo de seguridad. En el servidor openvpn , es posible que lo necesite, dependiendo de la configuración utilizada y esta es probablemente la razón por la que aparece este comentario.
higuita
Esto fue para mí. Problema extraño Gracias.
Kevin C
2

Probado en Ubuntu 18.04 el 13 sep 2018

Hay otros comandos útiles para configurar lo que necesita a través de la línea de comandos. Pero en mi caso puedes controlar tu conexión VPN tanto con la línea de comando como con la GUI.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- es el requerido por defecto, pero no afecta nada

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default no debe usar la puerta de enlace remota como ruta predeterminada

Y mucho más interesante toque final:

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

Luego puede controlar vpn con GUI o usar los siguientes comandos:

sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com

vskubriev
fuente
0

Yo también estoy impactado. En mi caso, estoy usando OpenVPN con un servidor de nombres interno (que está dentro de la VPN). Eso funcionó hasta Ubuntu 17.10 (con "hosts: files dns" en /etc/nsswitch.conf).

/etc/resolv.conf fue actualizado correctamente por los scripts openvpn (a través de llamadas a / etc / openvpn / update-resolv-conf en el archivo de configuración del cliente openvpn).

Sin embargo, la resolución de nombres para los hosts dentro de la VPN ya no funcionaba (o al menos esporádicamente ... Supongo que el caché DNS local estaba eligiendo los nombres, pero después de un tiempo bastante largo).

Lo que parece ayudar, o incluso resolver el problema (aunque es demasiado pronto para decirlo) es instalar el siguiente paquete:

sudo apt install openvpn-systemd-resolve

En unos días, tendré más experiencia si esto soluciona mi problema o no.

Si también te afecta, ¡intenta esto y publica comentarios!

Aclamaciones,

Miguel.

Michael Opdenacker
fuente
Finalmente, no parece ser una solución. Tengo el problema nuevamente. Supongo que algo más lo hizo funcionar ...
Michael Opdenacker
1
¿Quizás entonces eliminas tu respuesta? Parece que la decisión ya se ha encontrado a continuación
lucidyan