/etc/network/interfaces
Wie kann ich ein /etc/resolv.conf
Update durchführen, nachdem ich ein Update durchgeführt habe, das dem folgenden sehr ähnlich ist ? Ich habe versucht (als root) resolver -u
, service networking restart
aber sie haben nicht funktioniert. Ich habe auch den Symlink für repariert resolv.conf
und es resolver -u
erneut versucht . Schließlich habe ich frustriert einen Neustart durchgeführt, der das Problem durch einen Neustart behoben hat /etc/resolv.conf
.
Ubuntu 12.04, 64bit Server, alle aktuellen Patches installiert.
Beispiel /etc/network/interfaces
:
iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10
server
dns
resolv.conf
nslntmnx
quelle
quelle
Antworten:
service networking restart
Dies ist nicht immer eine zuverlässige Methode, um alle Schnittstellen nach oben zu verschieben.Der
resolvconf -u
Befehl wird nurresolv.conf
aus der eigenen Datenbank von resolvconf aktualisiert . Sie müssen die Datenbank aktualisieren.Um die Datenbank zu aktualisieren, müssen Sie resolvconf mit der Option
-a
oder aufrufen-d
. Das passiert hinter den Kulissen, wenn Sie ifup oder ifdown ausführen. Normalerweise müssen Sie, wie bei jeder anderen Änderung an/etc/network/interfaces
, die betreffende Schnittstelle herunter- und erneut hochfahren, um Änderungen an den dns- * -Optionen zu aktivieren. Oder Sie können neu starten.Wenn Sie Änderungen an einer Schnittstelle vornehmen möchten, ohne sie zu unterbrechen (möglicherweise, weil Sie die Maschine remote verwalten und zufällig über diese Schnittstelle verbunden sind, natch), können Sie dasselbe Ergebnis erzielen, indem Sie resolvconf direkt über die Befehlszeile ausführen. Dies erfordert etwas mehr Kenntnisse über die Semantik von resolvconf. Angenommen, die relevante / e / n / i-Zeilengruppe lautet
Dabei ist FFFF eine Adressfamilie ("inet" oder "inet6").
Um diese dns- * -Optionen zu aktivieren, führen Sie resolvconf wie folgt aus (ja, mit Zeilenumbrüchen in der Zeichenfolge, die an resolvconf weitergeleitet werden).
Für die in der Frage angegebene Strophe wäre dies die folgende.
Weitere Informationen finden Sie in der Handbuchseite zu resolvconf (8) und in der README-Datei zum resolvconf-Paket (/usr/share/doc/resolvconf/README.gz).
quelle
resolvconf
:)/etc/network/interfaces
, können Sie das tun:ifdown eth0 && ifup eth0
; Es funktioniert sogar in einer Remote-SSH-Sitzung.Obwohl die Manpage nicht standardmäßig installiert ist, wird sie über die Option zum Aktualisieren von Skripten dokumentiert. Führen Sie einfach Folgendes aus:
quelle
Für diejenigen von Ihnen, die Ihre Server remote verwalten, haben Sie folgende Möglichkeiten:
dns-nameservers
Zeile in/etc/network/interfaces
# ifdown eth01; ifup eth01
Beachten Sie, dass dies in einer Zeile mit geteilt werden muss; (das Linux-Kommandozeilen-Trennzeichen). Sie sollten nicht einmal Ihre aktuelle Verbindung verlieren. Die Ausnahme ist ein Tippfehler in der Interface-Datei. In diesem Fall
ifup
schlägt der Vorgang fehl und Sie müssen über physischen Zugriff oder eine andereethxx
Verbindung verfügen .quelle
service resolvconf restart
wird die/etc/resolv.conf
Datei ohne viel Aufhebens neu generieren.quelle
Failed to restart resolvconf.service: Unit resolvconf.service not found.
/etc/resolv.conf
auf Ubuntu Server 14.04 neuDiese Antwort ähnelt der obigen, verwendet jedoch die Beispielkonfiguration für Fragen, um die Frage zu beantworten. Außerdem wird erklärt, warum beide Befehle erforderlich sind.
Bearbeiten
/etc/network/interfaces
:Diese Änderungen werden erst wirksam, wenn Sie die Konfigurationsdatei neu starten oder laden:
Um die Interface-Datei live zu aktualisieren, muss der folgende Befehl ausgeführt werden:
Dies ermöglicht ein Update der Schnittstelle ohne Neustart oder Neuladen.
Die obigen Befehlsänderungen gehen jedoch nach einem Neustart verloren, wenn die Änderungen in der
/etc/network/interfaces
nicht vorgenommen werden.Übrigens funktioniert die letzte Antwort von BDenis in dieser Liste tatsächlich anstelle des letzten Befehls, indem die
/etc/network/interfaces
Datei analysiert und diese Zeilen in den Befehl eingefügt werden.sudo resolvconf -a eth0
Es ist tatsächlich die halbe Antwort und ein wirklich gutes Beispiel für das Inline-Sed-Parsen. Wenn Sie sehen möchten, wie dies funktioniert, führen Sie einfach den ersten Teil des Befehls aus und beobachten Sie, wie er die/etc/network/interfaces
Datei analysiert und alle erforderlichen Informationen ausgibt, die Sie zum Ausführen dessudo resolvconf -a eth0
Befehls benötigen :Beachten Sie, dass dies die gleiche Ausgabe wie der Befehl erzeugen würde:
Vorausgesetzt, die
/etc/network/interfaces
Datei ist mit diesen Informationen konfiguriert:quelle
/etc/network/interfaces
in diesem Fall keine gültige Option. (Ubuntu 14.04)Einfache antwort:
Installieren Sie einfach resolvconf.
apt install resolvconf
Danach wird
ifup eth0
die DNS inetc/resolv.conf
entsprechend derdns-nameservers
Zeile in aktualisiert/etc/network/interfaces
.quelle
Am 18.04 funktioniert Folgendes zuverlässig (als root ausführen):
Wichtig: Stellen Sie sicher, dass Sie das Paket
resolvconf
installiert haben.Es scheint nicht standardmäßig zu sein, und ohne es werden einige (!) Änderungen von
/etc/network/interfaces
unbemerkt ignoriert (zBdns-*
).quelle
Das hat bei mir funktioniert:
Dementsprechend anpassen.
quelle
In der Desktop-Version von Ubuntu 18.04, in der es keinen Dienst
networking
gibt undresolvconf
die nicht standardmäßig installiert ist, ist es mir gelungen, die Neuerstellungresolv.conf
durch einen Neustart durchzuführennetwork-manager
:quelle
Sie können auch diesen Befehl versuchen:
quelle
dns-nameserver IP1 IP2
. Die Zeile muss dann wiederholt werdenresolv.conf
, ist es aber nicht./etc/network/interfaces
verwendetdns-nameservers
(beachten Sie dies
am Ende), währendresolvconf
verwendetnameserver
. Der Befehl behandelt es nicht. Und selbst wenn alles in Ordnungsed | grep | sed
wäre , wäre die Pipeline definitiv nicht der effizienteste Weg.