systemd-resolve, resolvconf.service, resolvconf y openresolv. ¿Por qué, cuál y cómo?

12

Estoy usando un cliente VPN que agrega dos servidores de nombres /etc/resolv.conf. Todas mis conexiones son administradas por Network-Manager.

Tengo que usar este cliente VPN para mi VPN de trabajo, pero después de que Ubuntu entró systemd-resolveden 16.10, tengo problemas con mi conexión y DNS. Parece que los systemd-resolvedcambios /etc/resolv.confen los servidores de nombres predeterminados por algún motivo hacen que las páginas internas no se resuelvan. Investigué esto un poco más y terminé reemplazando resolvconfpor openresolv. Eso ayudó mucho, pero aún se systemd-resolvedrestablece /etc/resolv.confdespués de que la VPN ha estado activa por un tiempo.

Podría ser justo cuando la conexión está activa o después de unos minutos o, a veces, en absoluto. Luego deshabilité systemd-resolvedy el systemd resolvconf.servicey solo corro openresolv. Todo funciona bien, parece.

Sin embargo, todo esto es muy confuso. ¿Hay alguna razón para usar systemd-resolvedcon uno de los otros? Fue habilitado en Ubuntu 16.10, así que pensé que debía haber una razón para ello, pero parece causar una pelea /etc/resolv.conf.

Sería genial si pudiera simplemente correr operesolvy hacer que esto se explicara. He leído bastante sobre él, pero todavía no entiendo por qué /etc/resolv.confse gestiona como es, solo que cuando lo uso systemdno puedo usar mi cliente VPN.

cristiano
fuente
FWIW resolvconf.service es cómo opera systemd resolvconf. ¿Qué cliente VPN estás usando? Si utilizó systemd-resolve, convierte resolv.conf en un enlace simbólico a su /run/systemd/resolve/resolv.confarchivo privado . Es posible que desee intentar que systemd-networkd administre sus conexiones.
pbhj

Respuestas:

1

Logré cambiar el script que maneja estos elementos de configuración en OpenVPN en Ubuntu (probado en 18.04). Aquí hay un parche para eso:

--- /etc/openvpn/update-resolv-conf.orig    2019-03-13 19:14:16.163914424 +0400
+++ /etc/openvpn/update-resolv-conf 2019-03-13 19:29:30.380420708 +0400
@@ -15,7 +15,7 @@
 #     foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
 #

-[ -x /sbin/resolvconf ] || exit 0
+[ -x /usr/bin/systemd-resolve ] || exit 0
 [ "$script_type" ] || exit 0
 [ "$dev" ] || exit 0

@@ -43,16 +43,16 @@
        fi
    done
    R=""
-   [ "$SRCHS" ] && R="search $SRCHS
-"
+   for SRCH in $SRCHS ; do
+       R="${R}--set-domain=$SRCH "
+   done
    for NS in $NMSRVRS ; do
-           R="${R}nameserver $NS
-"
+       R="${R}--set-dns=$NS "
    done
-   echo -n "$R" | /sbin/resolvconf -a "${dev}.openvpn"
+   /usr/bin/systemd-resolve -i ${dev} ${R}
    ;;
   down)
-   /sbin/resolvconf -d "${dev}.openvpn"
+   echo "Doing nothing, interface disappears."
    ;;
 esac

Deberá agregar los siguientes elementos a su archivo de configuración de OpenVPN:

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

¿Qué cliente VPN estás usando? Estaba teniendo problemas con OpenVPN directo, pero la instalación de la versión NM del cliente solucionó los problemas. Bueno, la mayoría de ellos, no pude evitar que se impulsara una ruta, pero ese es un problema completamente diferente.

El punto es: su cliente VPN tiene que saber cómo interactuar con la idea de systemd de cómo administrar el servicio DNS. No recomiendo esto, pero puede intentar deshabilitar el servicio resolvd ( systemctl disable systemd-resolved.service) para ver si mejora las cosas, pero en última instancia, tendrá que obtener un cliente que entienda cómo someterse a los caprichos de systemd :)

(El barco systemd navegó hace mucho tiempo, no abramos una discusión sobre por qué se hicieron algunas cosas).

JayEye
fuente
Este problema se resolvió en una actualización del cliente VPN. Fue el cliente OpenFortiGui para mi trabajo Fortinet VPN. Entonces tiene toda la razón, ¡el cliente ahora ha aprendido systemd! :)
Christian
0

Una actualización del cliente VPN que utilicé resolvió (juego de palabras) el problema. Fue el cliente OpenFortiGui para Fortinet VPN.

cristiano
fuente