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

191

Ist /etc/resolv.conf nutzlos in Ubuntu 12.04 LTS (Precise Pangolin)?

Ich sehe, dass die DNS-Server-Informationen jetzt in NetworkManager gespeichert sind. Das Befehlszeilenprogramm nmcli kann dies für Sie auflisten.

Wenn ich einen weiteren DNS -Server hinzufügen möchte, füge ich ihn zu /etc/resolv.conf hinzu, indem ich resolvconf verwende. Pakethilfe?

    
PnotNP 03.05.2012, 02:00

18 Antworten

130

Wenn /etc/resolv.conf nameserver 127.0.0.1 enthält, macht das Hinzufügen von Einträgen zu /etc/resolvconf/resolv.conf.d/tail nichts wirklich Sinnvolles.

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

Wenn Sie wirklich weitere Einträge zu /etc/resolv.conf hinzufügen möchten, erstellen Sie eine /etc/resolvconf/resolv.conf.d/tail und fügen Sie sie dort hinzu.

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

Die Abschnitte Desktop und Common Infrastructure enthalten einen Link zu

  • Pfandrecht über die Änderungen an der DNS-Infrastruktur in 12.04.
stgraber 03.05.2012, 02:21
127

Ich fand einen anderen Ansatz hier das Hinzufügen einer Zeile wie die folgende zu /etc/dhcp/dhclient.conf :

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

Ebenso fand ich einen dritten Ansatz hier das Hinzufügen von Zeilen zu /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.

    
Randall Cook 09.05.2012 00:48
84

Es klingt, als ob Sie über das Paket resolvconf sprechen.

Installieren Sie das Paket resolvconf .

Ausführen

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 antworten Sie mit Ja, um die Datei zu speichern. Zum Schluss regenerieren Sie /etc/resolv.conf, damit die Änderungen sofort 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 da ist. Darüber hinaus wird es beim nächsten Systemstart oder beim nächsten Neustart des Netzwerkdienstes immer noch angezeigt.

    
Azendale 01.07.2011 01:41
29

Nachfolgend 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.

Eigentlich haben sie es mir leichter gemacht :), indem Sie alles in die Datei / etc / network / interfaces geschrieben haben. Die gleichen Konfigurationen, die Sie in resolv.conf geschrieben hätten, können jetzt in derselben Datei wie die Netzwerkadapterkonfigurationen sein, wie im folgenden Beispiel:

# 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, dass dies hilft und es einfacher macht, wie es für mich tut, jetzt können wir statische IP-Adressen erstellen und in Nameserver und DNS-Domäne alle in einer Datei hinzufügen:)

    
Joseph Mituzas 24.05.2012 00:55
16

Mine 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, dh ifdown eth0 oder ifup eth0 ).

In der Datei /etc/resolvconf/resolv.conf.d/base habe ich folgende Einträge hinzugefügt:

nameserver 8.8.8.8
nameserver 8.8.4.4

Ich hoffe, das obige hilft!

    
Don Chai 19.03.2013 06:56
11

Sie können NetworkManager wie in Franks Antwort angegeben verwenden, aber wenn Sie /etc/resolv.conf lieber manuell bearbeiten möchten, können Sie 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 Dienstprogramm resolvconf schreibt immer nur in die Datei /run/resolvconf/resolv.conf .

    
Jase 04.05.2012 16:38
8

Hinweis: Diese Antwort bezieht sich auf eine andere, vor der Zusammenführung verwendete Version der Frage, wobei der Fokus nur auf dem Voranstellen eines gewünschten Nameservers liegt.

Das funktioniert vor 12.04:

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

(In der Tat ist diese Zeile bereits vorhanden; Sie müssen sie nur auskommentieren.)

    
belacqua 06.03.2011 21:26
6

resolvconf ist nutzlos. Ich bin auf einem Linux-Server und meine IP-Adresse ist statisch und meine DNS Server sind statisch. Ich brauche nicht resolvconf oder NetworkManager .

Halten Sie es einfach, ist meine Richtlinie, wenn Sie an einem Server arbeiten. Je weniger komplex, desto einfacher wird es zu verwalten / reparieren, wenn die Dinge brechen.

Also habe ich aptitude purge resolvconf gemacht und manuell dafür gesorgt, dass /etc/resolv.conf kein symlink ist und nur eine statische erstellt hat Datei. Falls ein Programm versucht, die Datei zu ändern, habe ich chattr +i (unveränderlich) bis /etc/resolv.conf als Vorsichtsmaßnahme verwendet.

    
Mark 16.10.2012 17:41
4

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

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 spielt keine Rolle, wie oft ich sudo resolvconf -u oder sudo dpkg-reconfigure resolvconf starte, es hat den Nameserver nicht auf die im NetworkManager eingestellten aktualisiert. Die Information, die resolvconf vom 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 Schuldige war eine Datei, die nicht mit der Deinstallation von dnsmasq entfernt wurde:

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

Das Entfernen dieser Datei (und das Ausführen von 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, dies hilft anderen beim Debuggen (den komplexen Interaktionen zwischen all diesen verschiedenen Netzwerkwerkzeugen). Wenn Sie resolvconf verwenden, stellen Sie sicher, dass ls /run/resolvconf/interfaces ausgeführt wird, um zu sehen, was sich dort befindet.

    
Anne van Rossum 27.12.2014 13:54
2

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" als "Methode" auswählen und NM ermöglicht Ihnen, die Nameserver-Adresse (n) manuell einzustellen, selbst Adressen werden über DHCP übermittelt.

    
Frank Barcenas 04.05.2012 16:29
2

Ich habe gerade einen Link in /etc/resolv.conf gelöscht und eine reguläre Datei mit den Namenservers-Adressen erstellt. Es funktioniert, und ich sehe keinen Grund, diese seltsame Konstruktion zu verwenden, die die Ubuntu-Entwickler erstellt haben.

    
Ivan 19.03.2013 07:34
1

Ich habe das behoben, indem ich die Reihenfolge der Quellen geändert habe. Ich habe die dns Quelle vor mdns in verschoben /etc/nsswitch.conf :

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Sie können Ihre Einstellungen beibehalten und trotzdem den lokalen Caching-Server verwenden.

    
Dan B 13.10.2012 03:47
1

Wie wäre es mit:

  

sudo dpkg-reconfigure resolvconf

Vorher verwenden Sie Network Manager, um die DNS-Adresse zu ändern und die Methode in

zu ändern
  

Nur automatische (DHPC) Adressen

Führen Sie den obigen Befehl aus und starten Sie ihn neu. Das hat die Lösung für mich getan.

    
Adige72 03.02.2013 21:40
1

Ich füge mein Bit zu der bereits langen Liste hinzu, hier ist ein anderer Weg (getestet am 12.04):

Bearbeiten Sie /run/resolvconf/interface/NetworkManager entsprechend Ihren Anforderungen. Hier ist ein Beispiel:

search foobar.com example.com
nameserver 192.168.1.1

Dann, wie für die meisten anderen Beispiele angegeben, machen Sie sudo resolvconf -u . Jetzt sehen Sie Ihre resolv.conf wie folgt aussehen:

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

Ich mag immer noch nicht die Art, wie es jetzt implementiert wird (Ubuntu benötigt anscheinend einen Dienst für jedes foo, das es macht) und würde sicherlich eine einfache resolv.conf bevorzugen. Aber dieser Ansatz scheint für mich der beste Kompromiss zu sein. Der hinzugefügte "localhost-NS" sollte nicht zu sehr weh tun.

    
Izzy 28.09.2013 23:32
1
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp
    
Roy Rogers 04.07.2014 12:33
1

Dies ist eine sehr beliebte Frage, mit einer Sammlung von Standard-möglichen Antworten, von denen alle, IMO, ziemlich hacky sind. Ich für meinen Teil habe immer Probleme gehabt, Ubuntu dazu zu bringen, die in NetworkManager eingerichteten DNS-Einstellungen zu respektieren - insbesondere statische DNS-Server mit "Nur automatische (DHCP) -Adressen" einzurichten - und heute habe ich endlich herausgefunden, was wirklich falsch war / p>

Das Problem liegt in der Interaktion zwischen resolvconf und NetworkManager. resolvconf hat diese Datei namens /etc/resolvconf/interface-order . Zumindest auf meinen Systemen ist NetworkManager überhaupt nicht in dieser Datei (außer dass es am Ende von der * Wildcard abgedeckt ist). Was also passiert, ist der neueste Bericht von dhclient an resolvconf hat Vorrang vor allem, was NetworkManager zu sagen hat.

Also, zumindest in meinem Fall, bestand die eigentliche Antwort darin,

hinzuzufügen
NetworkManager

bei oder in der Nähe von /etc/resolvconf/interface-order .

(Ja, ich weiß, dass viele Leute einfach "deinstallieren resolvconf" sagen, was für mich an sich schon eine schlechte Idee ist. Aber mehr als das, zumindest listig und xenial halten resolvconf für einen wichtigen Teil des Systems [ dh ubuntu-minimal hängt davon ab], so dass es schwierig wäre, Ihr System ohne resolvconf in einem konsistenten, aktualisierten Zustand zu halten.)

Auf Anfrage kann ich mehr Details dazu liefern, wie ich das herausgefunden habe. Kurz gesagt, ich ersetzte die ausführbare Datei resolvconf durch einen Shell-Wrapper, der Argumente, Eingabe, Ausgabe und stderr in Dateien ablegte. und hinzugefügt -x zu resolvconf update scripts.

    
Steven Collins 31.05.2016 20:32
0

Eine andere Möglichkeit besteht darin, dockerspezifische DNS-Server unter:

zu definieren
/etc/docker/daemon.json

Wenn Sie keine solche Datei haben, erstellen Sie sie einfach:

{
    "dns": ["10.0.0.2", "8.8.8.8"]
}

Quelle: Pfandrecht

Siehe auch: Pfandrecht

    
AndreyKo 04.01.2017 13:27
0

Um DNS zu ändern, folgen Sie den Anweisungen in: Pfandrecht

  1. Gehen Sie zu Netzwerk

  2. Wählen Sie die Verbindung aus, für die Sie den DNS konfigurieren möchten.

  3. Um die Einstellungen für eine drahtlose Verbindung zu ändern, wählen Sie die Registerkarte Drahtlos und dann das entsprechende Drahtlosnetzwerk aus.

  4. Klicken Sie auf den Pfeil (rechts) und wählen Sie im daraufhin angezeigten Fenster die Registerkarte IPv4-Einstellungen oder IPv6-Einstellungen.

  5. Wenn die ausgewählte Methode Automatisch (DHCP) ist, öffnen Sie das Dropdown und wählen Sie stattdessen Nur automatische (DHCP) Adressen. Wenn die Methode auf etwas anderes eingestellt ist, ändern Sie sie nicht.

  6. Geben Sie im Feld DNS-Server die DNS-IP-Adressen ein, getrennt durch ein Komma

Ferroao 10.11.2017 21:54

Tags und Links