Skripts für /etc/NetworkManager/dispatcher.d/ zur Verarbeitung von resolvconf -u

1977
Tino

Es gibt zwei Möglichkeiten für networkmanager:

  • aktualisieren /etc/resolv.conf
  • nicht aktualisieren /etc/resolv.confüberhaupt

Beide Lösungen sind an meiner Seite nicht geeignet, da ich an meiner Seite /etc/resolv.confso gehandhabt werden muss resolvconf, dass sie jederzeit regeneriert werden kann resolvconf -u.

Was ich brauche, sind Skripte, mit /etc/NetworkManager/dispatcher.d/denen richtig zusammengearbeitet wird resolvconf.

Ich konnte jedoch keine geeigneten Skripte finden, was meiner Meinung nach ein ziemlich einfacher Standardfall ist.

Gibt es dafür eine Standardlösung (bitte geben Sie hier einen wesentlichen Teil der Skripte an) oder müssen alle Benutzer das Rad jedes Mal neu erfinden?

Anmerkungen:

Es gibt anscheinend etwas, aber das scheint nicht richtig zu funktionieren.

In meinem Fall habe ich dnsmasq, VPN und mehr, alles mit dem DNS rumgespielt.

Es wird jedoch resolvconf -unicht /etc/resolv.confrichtig regeneriert, daher fehlt der Standardeinstellung offensichtlich etwas.

Um ausführlicher zu sein:

  • /etc/NetworkManager/dispatcher.d/01ifupdown Anrufe run-parts /etc/network/if-up.d
  • /etc/network/if-up.d/000resolvconfdann untersucht $IF_DNS_NAMESERVERund, $IF_DNS_NAMESERVERSaber networkmanagernicht diejenigen, die nicht bieten und setzt IP4_NAMESERVERSstattdessen (laut Handbuch)

Daher fehlt irgendwo ein Link. Hier ist eine Kopie dessen, was in gefunden wird /etc/NetworkManager/dispatcher.d/01ifupdown:

#!/bin/sh -e # Script to dispatch NetworkManager events # # Runs ifupdown scripts when NetworkManager fiddles with interfaces. # See NetworkManager(8) for further documentation of the dispatcher events.  if [ -z "$1" ]; then echo "$0: called with no interface" 1>&2 exit 1; fi  # Fake ifupdown environment export IFACE="$1" export LOGICAL="$1" export ADDRFAM="NetworkManager" export METHOD="NetworkManager" export VERBOSITY="0"  # Run the right scripts case "$2" in up|vpn-up) export MODE="start" export PHASE="post-up" exec run-parts /etc/network/if-up.d ;; down|vpn-down) export MODE="stop" export PHASE="post-down" exec run-parts /etc/network/if-post-down.d ;; # pre-up/pre-down not implemented. See # https://bugzilla.gnome.org/show_bug.cgi?id=387832 # pre-up) # export MODE="start" # export PHASE="pre-up" # exec run-parts /etc/network/if-pre-up.d # ;; # pre-down) # export MODE="stop" # export PHASE="pre-down" # exec run-parts /etc/network/if-down.d # ;; hostname|dhcp4-change|dhcp6-change) # Do nothing ;; *) echo "$0: called with unknown action \`$2'" 1>&2 exit 1 ;; esac 

Hier ist was in gefunden wird /etc/network/if-up.d/000resolvconf

#!/bin/sh # # ifup hook script for resolvconf # # This file is part of the resolvconf package. #  [ -x /sbin/resolvconf ] || exit 0  case "$ADDRFAM" in inet|inet6) : ;; *) exit 0 ;; esac  R="" if [ "$IF_DNS_DOMAIN" ] ; then R="$domain $IF_DNS_DOMAIN " fi if [ "$IF_DNS_SEARCH" ] ; then R="$search $IF_DNS_SEARCH " fi if [ "$IF_DNS_SORTLIST" ] ; then R="$sortlist $IF_DNS_SORTLIST " fi for NS in $IF_DNS_NAMESERVER $IF_DNS_NAMESERVERS ; do R="$nameserver $NS " done  echo -n "$R" | /sbin/resolvconf -a "$.$" || : 

Zu Ihrer Information ist es aus Ubuntu 14.04

-1
Sieht aus wie dieses Problem für mich spezifisch ist. Ich werde eine Antwort hinzufügen, wenn ich eine Lösung dafür finde, einschließlich einer Ursachenanalyse, aus der das Problem stammt. Ich weiß jedoch nicht, wie lange es dauert, bis ich die Zeit dazu finde, da ich bereits einen Workaround eingerichtet habe (was eine schnelle, alles andere als korrekte, aber funktionierende Lösung war). Tino vor 8 Jahren 0

1 Antwort auf die Frage

0
grawity

Skripte? NetworkManager wird seit 2008 nativ / bin / resolvconf unterstützt ( Version 0.7.0 ). Ihre Distribution muss sie zur Kompilierzeit mit ./configure --with-resolvconf=…( zB ) aktivieren . Es sind keine separaten dispatcher.d-Skripts erforderlich - Sie haben nur einige Nebeneffekte, wenn Ihre Distribution versucht, NM in ifupdown zu integrieren.

Wenn dies nicht funktioniert, prüfen Sie, ob Ihre NetworkManager.confmanuelle Seite Erwähnungen dnsund rc-managerEinstellungen enthält (diese variieren je nach Version). Normalerweise standardmäßig resolvconf funktioniert, aber es könnte sein, dass Sie manuell festlegen müssen dns=defaultoder rc-manager=resolvconfoder beides.

Ich meine `/ etc / network / if-up.d / 000resolvconf` verwendet diese Variablen, die mit` resolvconf` geliefert werden Tino vor 8 Jahren 0
Nein, das stimmt nicht. Dies ist ein ifupdown-Skript, kein NetworkManager-Skript, und es werden Variablen erwartet, die ifupdown exportieren würde. Da Debian jedoch ifupdown-Skripte von NM ausführen möchte, liegt es an 'dispatcher.d / 01ifupdown', die Umgebung korrekt von NM-Variablen in ifupdown-Variablen zu übersetzen. grawity vor 8 Jahren 0
anscheinend gibt es keine solche Übersetzung. Ich werde das Skript meiner obigen Frage hinzufügen. Tino vor 8 Jahren 0
Dann ist es vielleicht die beste Option, "if-up.d / 000resolvconf" zu deaktivieren bzw. zu entfernen und die eingebaute Unterstützung von NM zu verwenden. Ich sehe, dass Debian es zum Zeitpunkt der Erstellung aktiviert, nicht aber bei anderen Distributionen. grawity vor 8 Jahren 0
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/35813/discussion-between-tino-and-grawity). Tino vor 8 Jahren 0