systemd-resolved, resolvconf.service, resolvconf e openresolv. Perché, quale e come?


12

Sto usando un client VPN che aggiunge due server dei nomi a /etc/resolv.conf. Tutte le mie connessioni sono gestite da Network-Manager.

Devo usare questo client VPN per la mia VPN di lavoro, ma dopo Ubuntu systemd-resolvednel 16.10 ho riscontrato problemi con la mia connessione e DNS. Sembra che le systemd-resolvedmodifiche /etc/resolv.confai server dei nomi predefiniti vengano ripristinate per qualche motivo che non risolve le pagine interne. Ho esaminato ancora questo e ho finito per sostituirlo resolvconfcon openresolv. Ciò ha aiutato molto, ma si systemd-resolvedripristina ancora /etc/resolv.confdopo che la VPN è rimasta attiva per un po '.

Potrebbe essere proprio mentre la connessione è attiva o dopo pochi minuti o talvolta non lo è affatto. Ho quindi disabilitato systemd-resolvede il systemd resolvconf.servicee solo correre openresolv. Funziona tutto bene, a quanto pare.

Tuttavia, tutto ciò è molto confuso. C'è un motivo per usarlo systemd-resolvedcon uno degli altri? È stato abilitato in Ubuntu 16.10, quindi ho pensato che ci dovesse essere un motivo per farlo, ma sembra causare una rissa /etc/resolv.conf.

Sarebbe bello se potessi semplicemente correre operesolve spiegarlo. L'ho letto un po ', ma ancora non capisco perché /etc/resolv.confsia gestito così com'è, solo che quando lo uso systemdnon posso usare il mio client VPN.


FWIW resolvconf.service è il modo in cui systemd gestisce resolvconf. Quale client VPN stai usando? Se hai utilizzato systemd-resolved, resolv.conf è un link simbolico al suo /run/systemd/resolve/resolv.conffile privato . Potresti provare a fare in modo che systemd-networkd gestisca le tue connessioni.
pbhj,

Risposte:


1

Sono riuscito a cambiare lo script che gestisce questi elementi di configurazione in OpenVPN in Ubuntu (testato il 18.04). Ecco una patch per questo:

--- /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

Dovrai aggiungere i seguenti elementi al tuo file di configurazione OpenVPN:

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

0

Quale client VPN stai usando? Ho avuto problemi con OpenVPN diretto, ma l'installazione della versione NM del client ha risolto i problemi. Bene, la maggior parte di loro, non ho potuto impedire che un percorso venisse spinto, ma è un problema completamente diverso.

Il punto è: il tuo client VPN deve sapere come interagire con l'idea di systemd su come gestire il servizio DNS. Non lo consiglio, ma potresti provare a disabilitare il servizio resolvd (systemctl disable systemd-resolved.service ) per vedere se migliora le cose, ma alla fine dovrai ottenere un client che capisca come inviare i caprices di systemd :)

(La nave sistemata navigò molto tempo fa, non apriamo una discussione sul perché alcune cose sono state fatte.)


Questo problema è stato risolto in un aggiornamento del client VPN. Era il client OpenFortiGui per il mio lavoro Fortinet VPN. Quindi hai perfettamente ragione, il cliente ha ora imparato systemd! :)
Christian

0

Un aggiornamento al client VPN che ho usato ha risolto il problema. Era il client OpenFortiGui per Fortinet VPN.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.