GNU/Linux >> Znalost Linux >  >> Ubuntu

Systemd-resolved, Resolvconf.service, Resolvconf And Openresolv. Proč, které a jak?

Používám klienta VPN, který přidává dva jmenné servery do /etc/resolv.conf . Všechna moje připojení spravuje Network-Manager.

Musím používat tohoto VPN klienta pro svou pracovní VPN, ale poté, co Ubuntu přešlo na systemd-resolved v 16.10 mám problémy s připojením a DNS. Vypadá to jako systemd-resolved změny /etc/resolv.conf zpět na výchozí jmenné servery z nějakého důvodu, kvůli kterému se interní stránky nevyřeší. Podíval jsem se na to více a skončil jsem nahrazením resolvconf pomocí openresolv . To hodně pomohlo, ale stále systemd-resolved resetuje /etc/resolv.conf poté, co byla VPN nějakou dobu v provozu.

Mohlo by to být právě ve chvíli, kdy je připojení aktivní nebo po několika minutách nebo někdy vůbec. Poté jsem zakázal systemd-resolved a systemd resolvconf.service a spusťte pouze openresolv . Zdá se, že vše funguje dobře.

To vše je však velmi matoucí. Existuje důvod pro použití systemd-resolved s jedním z ostatních? Bylo to povoleno v Ubuntu 16.10, takže jsem si myslel, že pro to musí být důvod, ale zdá se, že to způsobuje boj o /etc/resolv.conf .

Bylo by skvělé, kdybych mohl spustit operesolv a nechat si to vysvětlit. Načetl jsem o tom docela dost, ale stále nechápu, proč /etc/resolv.conf je spravován tak, jak je, pouze když používám systemd kvůli tomu nemohu použít svého klienta VPN.

Přijatá odpověď:

Podařilo se mi změnit skript, který zpracovává tyto konfigurační položky v OpenVPN v Ubuntu (testováno 18.04). Zde je záplata:

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

Do konfiguračního souboru OpenVPN budete muset přidat následující položky:

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

Ubuntu
  1. Jak nainstalovat a nakonfigurovat Fail2Ban na CentOS 8 a Fedora 33

  2. Redis jako mezipaměť:Jak to funguje a proč ji používat

  3. Proč jsou data důležitá a jak je chránit

  1. Jak nainstalovat a nakonfigurovat Dovecot

  2. Jak nainstalovat a nakonfigurovat Redis 6 na Fedoře 34

  3. Jak nainstalovat a nakonfigurovat Redis na Debianu

  1. Jak spustit, zastavit a restartovat služby v systému Linux

  2. Jak a proč používat vzdáleného hostitele dockeru

  3. Jak nainstalovat a nakonfigurovat OpenSSH na Ubuntu 16.04