Frage Wie füge ich einen DNS-Server via resolv.conf hinzu?


Ist /etc/resolv.conf nutzlos in Ubuntu 12.04 LTS (Präzise Pangolin)?

Ich sehe, dass die DNS-Server-Informationen in gespeichert sind Netzwerk Manager jetzt. Das nmcli Befehlszeilen-Tool kann das für Sie auflisten.

Wenn ich noch eins hinzufügen möchte DNS Server, wird es hinzufügen /etc/resolv.conf mit dem resolvconf Paket Hilfe?


192
2018-05-03 00:00


Ursprung


Ich denke, der oben erwähnte Befehl sollte sein nm-toolnicht nmcli. - Jesse Glick


Antworten:


Ob /etc/resolv.conf enthält nameserver 127.0.0.1 dann fügen Sie Einträge hinzu /etc/resolvconf/resolv.conf.d/tail wird nichts wirklich nützliches tun.

Wenn Sie NetworkManager verwenden, sollten Sie stattdessen Nameserver-Adressen statisch hinzufügen Netzwerkanzeige: Verbindungen bearbeiten ... | Bearbeiten ... | IPv4-Einstellungen | Zusätzliche DNS-Server.

Wenn du Ja wirklich möchte weitere Einträge hinzufügen /etc/resolv.conf, ein ... kreieren /etc/resolvconf/resolv.conf.d/tail und füge sie dort hinzu.

Wie bei jeder Ubuntu-Veröffentlichung wird empfohlen, die hier verfügbaren Ubuntu-Versionshinweise zu lesen:

Die Abschnitte Desktop und Common Infrastructure enthalten eine Verknüpfung zu


130
2018-05-03 00:21



@stgraber, bitte kommentiere den alternativen Ansatz, den ich gefunden und unten gepostet habe. Wie sieht es mit dem Hinzufügen eines aus? /etc/resolvconf/resolv.conf.d/tailDatei oder mithilfe von Network Manager? Vielen Dank. - Randall Cook
@stgraber Was empfehlen Sie für Ubuntu Server? Ich habe von Ihrem Blog und Ihren Kommentaren bemerkt, dass Network-Manger der beste Weg scheint, dies zu verwalten, aber eine Installation von Network-Manager auf meinem System zu installieren, würde eine Menge Dinge installieren, die ich nicht brauche ). - Avery Chan
Was für ein Hinzufügen von Einträgen zu /etc/resolvconf/resolv.conf.d/head (wie in Ihrem Blogpost)? - sup
@AveryChan, verwende den "dritten Ansatz", der von @ randallcook vorgeschlagen wurde - füge einfach hinzu dns-nameservers zu deiner eth0 Sektion in /etc/network/interfaces. - mrm
/etc/resolvconf/update.d/libc auf Ubuntu 14.04.1 Server: # Set TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no  # to allow additional nameserver addresses to be listed in  # resolv.conf after an initial loopback address 127.* or ::1.  (setze es ein /etc/default/resolvconf, wie Linie 23 & 24 von /etc/resolvconf/update.d/libc Show. - immeëmosol


Ich habe einen anderen Ansatz gefunden Hier Dazu muss eine Zeile wie die folgende hinzugefügt werden /etc/dhcp/dhclient.conf:

prepend domain-name-servers x.x.x.x, y.y.y.y;

Ebenso fand ich einen dritten Ansatz Hier Dazu müssen Zeilen hinzugefügt werden /etc/network/interfaces:

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

Update: Hier ist die offizielle Dokumentation für den dritten Ansatz.


128
2018-05-08 22:48



Ich habe dafür gestimmt, weil die third approach ist bei weitem der einfachste Weg, dies zu tun. - Billy Moon
@billy Ich konnte die dritte Methode gar nicht funktionieren lassen. Nur die erste, hier aufgelistete, editieren der dclient.conf, funktionierte für mich. - Jeff Atwood
Hinweis: Das Bearbeiten von dhclient.conf hat nur Auswirkungen, wenn dhclient verwendet wird (und es wird von ifup und NetworkManager verwendet!) Die Bearbeitung von / etc / network / interfaces hat nur Auswirkungen, wenn ifup verwendet wird. Das Konfigurieren von NetworkManager-Verbindungen mithilfe des NetworkManager-Verbindungseditors hat nur Auswirkungen, wenn NetworkManager verwendet wird. - jdthood
Wenn ich mich nicht irre, fügt der dritte Ansatz einen anderen Nameserver NACH den von DHCP zurückgegebenen hinzu. Wenn Sie möchten, dass es zuerst kommt, dann ist eine der anderen Optionen geeigneter. ich benutzte /etc/resolvconf/resolv.conf.d/head (nachdem ich den irreführenden "NICHT BEARBEITEN" Kommentar darin überwunden habe :)) - starfry
@ Mr.Hyde, das sind keine Befehlszeilenbefehle, sie sind Zeilen, die zu / etc / network / interfaces hinzugefügt werden sollen. - Randall Cook


Es klingt wie Sie über das Resolvconf-Paket sprechen.

Installiere das resolvconf Paket.

Lauf

cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig  #backup copy, always do this
sudo nano head

Der Anfang der Datei ist eine erschreckende Warnung. Die Datei /etc/resolv.conf wird automatisch aus dem Inhalt dieser Datei generiert. Die Warnung ist da und wird in /etc/resolv.conf abgelegt, wenn /etc/resolv.conf generiert wird. Am Ende der Datei fügen Sie hinzu

nameserver <ip_of_nameserver>

Drücken Sie Strg  x und mit Ja antworten, um die Datei zu speichern. Zum Schluss regenerieren Sie /etc/resolv.conf so, dass die Änderungen jetzt angewendet werden:

sudo resolvconf -u

Überprüfen Sie dann den Inhalt von /etc/resolv.conf, um zu sehen, ob die Zeile, die Sie hinzugefügt haben, jetzt vorhanden ist. Darüber hinaus wird es beim nächsten Systemstart oder beim nächsten Neustart des Netzwerkdienstes immer noch angezeigt.


85
2018-06-30 23:41



Die Information über die Dateiwarnung ist genau das, was ich brauchte. Ich hatte den Eindruck, dass ich die Datei nicht bearbeiten sollte! Vielen Dank! - Xunnamius


Im Folgenden werde ich Ihnen den besten Weg zeigen, den ich gefunden habe, seit ich Ubuntu Server Edition ausgeführt habe und ifup anstelle von NetworkManager verwende.

Wirklich für mich haben sie das einfacher gemacht, indem sie alles in die Datei / etc / network / interfaces gestellt haben. Die gleichen Konfigurationen, die Sie in resolv.conf geschrieben hätten, können jetzt in der gleichen Datei wie die Netzwerkadapterkonfigurationen sein, wie im folgenden Beispiel gezeigt:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

Ich hoffe, das hilft und macht es einfacher als für mich, jetzt können wir statische IP-Adressen erstellen und Nameserver und DNS-Domänen in einer Datei hinzufügen :)


29
2018-05-23 22:55



Vielen Dank. Dies ist meine Lieblingsmethode geworden. Eine Off-Topic-Anmerkung: Es ist nicht notwendig, die "Netzwerk" - und "Broadcast" -Adressen anzugeben, da sie automatisch aus der "Adresse" und der "Netzmaske" berechnet werden. Alles, was Sie wirklich brauchen, sind 'Adresse', 'Netzmaske' und 'Gateway'. - Martijn Heemels
Dies ist die sauberste Antwort. Stellen Sie sicher, dass die Schlüsselwörter dns-* richtig geschrieben sind. Fehlbuchstabierte "DNS-Nameserver" waren mein eigentliches Problem. - John McGehee


Meine läuft Ubuntu Server 12.04. Ich habe die folgenden Änderungen vorgenommen und den Server neu gestartet (normalerweise kann dies getan werden, indem nur die Netzwerkschnittstelle heruntergefahren wird, ifdown eth0oder ifup eth0).

Im Ordner /etc/resolvconf/resolv.conf.d/base Ich habe folgende Einträge hinzugefügt:

nameserver 8.8.8.8
nameserver 8.8.4.4

Ich hoffe das obige hilft!


16
2018-03-19 05:56





Sie können NetworkManager wie in Franks Antwort angegeben verwenden, aber wenn Sie lieber manuell bearbeiten möchten /etc/resolv.confSie können dies tun, indem Sie es löschen (es ist eigentlich ein Symlink) und dann eine neue einfache Datei mit dem gewünschten Inhalt erstellen. Das resolvconf Das Dienstprogramm schreibt nur in die Datei /run/resolvconf/resolv.conf.


11
2018-05-04 14:38





Hinweis: Diese Antwort bezieht sich auf eine etwas andere Vor-Zusammenführungsversion der Frage, wobei der Schwerpunkt nur auf dem Voranstellen eines gewünschten Nameservers liegt.

Dies funktioniert vor 12.04:

Bearbeiten /etc/dhcp3/dhclient.conf und füge hinzu:
prepend domain-name-servers 127.0.0.1;

(Tatsächlich ist diese Zeile bereits vorhanden; Sie müssen sie nur auskommentieren.)


8
2018-03-06 20:26



Funktioniert das, wenn Sie keine Adressen von DHCP zugewiesen haben? - Azendale
Wenn Sie mehr über die dhclient-Konfiguration erfahren möchten, können Sie a man dhclient.conf um auf die dhclient man-Seite zuzugreifen. (Dies ist keine Antwort auf Azendales Frage.) - Christian Skjødt
Diese Antwort ist völlig falsch. Zunächst möchte der Fragesteller die Adresse eines externen namserver hinzufügen, nicht die Adresse 127.0.0.1. Der Interface-Konfigurator für eine externe Schnittstelle ist nicht der Ort, um eine Adresse für einen internen Nameserver hinzuzufügen. Zweitens befindet sich die Datei in / etc / dhcp, nicht in / etc / dhcp3. Drittens, seit Ubuntu 12.04 werden solche Dinge mit resolvconf konfiguriert. - jdthood
Zuallererst - die ursprüngliche Frage wurde durch Moderatorverschmelzung dramatisch verändert, so dass meine Antwort natürlich seltsam aussieht. Die dhcp3-Datei war der Ort, an dem ich das beantwortet habe 2011und selbst wenn es nicht ideal ist, hat es funktioniert. Ich habe diese Lösung auf mehreren Computern verwendet. Offensichtlich würden Sie die Loopbackadresse auf die Adresse ändern, die Sie vorgeben möchten. Ich nehme an, die meisten Leute wissen, was ein Loopback ist, auch wenn sie RFC6890 nicht gelesen haben. - belacqua
@jdthood Warum nicht deine eigene Antwort hinzufügen? Persönlich war ich nicht vertraut mit der bsd-ish resolvconf Art, Dinge zu tun. Ich bevorzuge den direkten /etc/resolv.conf Ansatz, und ich bin mir nicht sicher, was der Vorteil des neuen Rube Goldberg Systems ist. (Ebenso mit / etc / motd). - belacqua


resolvconf ist nutzlos. Ich bin auf einem Linux-Server und mein IP Adresse ist statisch und mein DNS Server sind statisch. Ich brauche keine resolvconfoder Netzwerk Manager.

Einfach zu halten ist meine Richtlinie, wenn ich an einem Server arbeite. Je weniger komplex, desto leichter wird es zu verwalten / reparieren, wenn die Dinge brechen.

So tat ich aptitude purge resolvconf und manuell sicher gestellt /etc/resolv.conf ist nicht ein Symlink und habe gerade eine statische Datei erstellt. Für den Fall, dass ein Programm versucht, die Datei zu ändern, tat ich es chattr +i (unveränderlich) zu /etc/resolv.conf als Vorsichtsmaßnahme.


6
2017-10-16 15:41



Da resolvconf ein Teil des Basissystems ist, bitten Sie beim Löschen darum, in der Zukunft, zur Aktualisierungszeit, Probleme zu haben. - jdthood
Ich stimme sowohl dem Kommentar als auch der Antwort zu: bedenken Sie, wie viele Probleme dies verursacht hat und wie viele Supportstunden in die Behebung dieses "Problems" gesteckt wurden und wie viele IT-Mitarbeiter Zeit damit verbracht haben, nach Antworten zu suchen. Einfach ist das Beste - ich brauche meine Server nicht, um den DNS zu etwas zu ändern, das ich nicht will. - Mei


Die meisten der obigen Annahmen gehen davon aus, dass Sie ein reines System haben, aber die Realität ist oft so, dass Sie verschiedene dhcp-Clients installiert haben, den Netzwerk-Manager in bestimmten früheren Versionen von Ubuntu deaktiviert haben usw. Es könnte sich lohnen, Folgendes zu wissen. Ich benutze dnsmasq für eine Weile, aber deinstalliert es. Zurzeit hatte mein System folgende Inhalte von /etc/resolv.conf (Dies ist eine symbolische Verbindung zu /run/resolvconf/resolv.conf auf meinem System):

cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

Es ist egal, wie oft ich renne sudo resolvconf -uoder sudo dpkg-reconfigure resolvconf, es hat den Nameserver nicht auf die im NetworkManager eingestellten aktualisiert. Die Information, die resolvconf von dem NetworkManager verwendet, war vorhanden:

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

Es stellt sich jedoch heraus, dass diese Datei möglicherweise nicht verwendet wird, wenn sich mehrere Dateien in diesem Verzeichnis befinden. Der Täter war eine Datei, die nicht mit der Deinstallation von dnsmasq entfernt wurde:

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

Einfach diese Datei entfernen (und läuft sudo resolvconf -u nachher) löste meine DNS-Probleme:

cat /etc/resolv.conf                        
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.4.4
nameserver 8.8.8.8 

Ich hoffe, das hilft anderen beim Debuggen (den komplexen Interaktionen zwischen all diesen verschiedenen Netzwerkwerkzeugen). Wenn du benutzt resolvconf Stellen Sie sicher, dass Sie ausgeführt werden ls /run/resolvconf/interfaces um zu sehen, was da ist.


4
2017-12-27 12:54



Danke, das war sehr hilfreich. Ich habe zuerst die höher bewerteten Antworten ausprobiert und keiner schien es zu tun. Ich hatte keine zusätzlichen Dateien in der /run/resolvconf/interface/ Dir, aber mein NetworkManager Datei brauchte etwas Liebe. Ihre Antwort hat mir geholfen, dieses Problem zu lösen. - mason81


Sie können die Verbindung "AUTO ETH0" oder den Namen, den Sie für die Verbindung in NM verwenden, bearbeiten. Sie können dies tun, indem Sie mit der rechten Maustaste auf NM klicken und "Verbindungen bearbeiten ..." auswählen. Auf der Registerkarte IPv4 können Sie "Automatisch (DHCP) Adressen nur" als "Methode" auswählen und NM erlaubt Ihnen, die Nameserver Adresse (n) manuell einzustellen, sogar Adressen werden über DHCP geliefert.


2
2018-05-04 14:29





Ich habe gerade einen Link gelöscht /etc/resolv.conf und erstellte eine reguläre Datei mit den Adressen der Nameserver. Es funktioniert, und ich sehe keine Gründe, diese seltsame Konstruktion zu verwenden, die die Ubuntu-Entwickler erstellt haben.


2
2018-03-19 06:34



Ja, ich bin kein Fan von dieser Art von Veränderung, die Server betrifft, Komplexität und Undurchsichtigkeit hinzufügt. Dies ist das Kernverhalten, das sich von Release zu Release nicht ändern sollte. - belacqua