GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Resuelto por Systemd, Resolvconf.service, Resolvconf y Openresolv. ¿Por qué, cuál y cómo?

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

Tengo que usar este cliente VPN para mi trabajo VPN, pero después de que Ubuntu fue a systemd-resolved en 16.10 estoy teniendo problemas con mi conexión y DNS. Parece systemd-resolved cambia /etc/resolv.conf volver a los servidores de nombres predeterminados por alguna razón que hace que las páginas internas no se resuelvan. Investigué esto un poco más y terminé reemplazando resolvconf con openresolv . Eso ayudó mucho, pero aún así systemd-resolved restablece /etc/resolv.conf después de que la VPN haya estado activa por un tiempo.

Podría ser justo cuando la conexión está activa o después de unos minutos o, a veces, no. Luego deshabilité systemd-resolved y el systemd resolvconf.service y solo ejecuta openresolv . Parece que todo funciona bien.

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

Sería genial si pudiera ejecutar operesolv y obtener esto explicado. Lo he leído bastante pero todavía no entiendo por qué /etc/resolv.conf se administra como es, solo que cuando uso systemd para eso no puedo usar mi cliente VPN.

Respuesta aceptada:

Logré cambiar el script que maneja estos elementos de configuración en OpenVPN en Ubuntu (probado el 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

Ubuntu
  1. Cómo instalar y configurar Fail2Ban en CentOS 8 y Fedora 33

  2. Por qué los datos son importantes y cómo protegerlos

  3. Cómo instalar y configurar Dovecot

  4. Cómo y por qué usar un host Docker remoto

  5. Cómo instalar y configurar OpenSSH en Ubuntu 16.04

Cómo instalar y usar Monit en Debian 9 / Ubuntu 16.04

Cómo encontrar qué servicio está escuchando en un puerto en particular

Cómo habilitar y deshabilitar interfaces de red en Ubuntu 20.04

Por qué y cómo instalar Unity 7 Desktop en Ubuntu 18.04 LTS

Cómo instalar y configurar el uso compartido de archivos de Samba en Ubuntu 20.04

¿Cómo saber qué programa está usando Internet y cuánto?