Die meisten Informationen, die ich online sehe, sagen, dass sie bearbeitet werden müssen /etc/resolv.conf
, aber alle Änderungen, die ich dort vornehme, werden einfach überschrieben.
$ 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.1.1
Es scheint, dass 127.0.1.1 eine lokale Instanz von ist dnsmasq
. Die dnsmasq
Dokumente sagen zu bearbeiten /etc/resolv.conf
. Ich habe versucht, benutzerdefinierte Nameserver /etc/resolv.conf.d/base
einzurichten, aber die Änderungen wurden /etc/resolv.conf
nach dem Ausführen nicht angezeigt sudo resolvconf -u
.
Zu Ihrer Information, ich möchte DNS nicht für jede Verbindung einzeln ändern. Ich möchte Standard-DNS-Einstellungen festlegen, die für alle Verbindungen verwendet werden, wenn nichts anderes angegeben ist.
AKTUALISIEREN:
Ich habe diese Frage selbst beantwortet: https://unix.stackexchange.com/a/163506/67024
Ich denke, es ist die beste Lösung seit:
- Es klappt.
- Es erfordert die geringste Menge an Änderungen und
- Es funktioniert weiterhin in Verbindung mit dem DNS-Cache von dnsmasq, anstatt ihn zu umgehen.
dns=none
in/etc/NetworkManager/NetworkManager.conf
(siehe Details in meiner Antwort unten).Antworten:
Ich glaube, wenn Sie den DNS-Nameserver überschreiben möchten, fügen Sie einfach eine ähnliche Zeile in Ihre
base
Datei unterresolv.conf.d
.Beispiel
Dann stelle deine Nameserver-Liste so ein:
Endlich Update
resolvconf
:Wenn Sie einen Blick auf die Manpage werfen
resolvconf
, werden die verschiedenen Dateien unter beschrieben/etc/resolvconf/resolv.conf.d/
.Auch wenn oben in der
head
Datei eine Warnung angezeigt wird:Diese Warnung ist vorhanden, damit die Warnung beim Erstellen
resolv.conf
dieser Dateien in die resultierende Datei eingeht, für deren Erstellung diese Dateien verwendet werden. Sie hätten also genauso gut dienameserver
oben für diebase
Datei beschriebenen Zeilen zur Datei hinzufügen könnenhead
.Verweise
quelle
base
und starteteresolvconf -u
, wurden die Nameserver nicht in die resolv.conf eingefügt - Als ich die Nameserverhead
/run/resolvconf/interface/NetworkManager
nslookup google.com
und die erste IP in der Liste sollte Ihr neuer Nameserver sein, wenn nicht, haben Sie es falsch gemacht/etc/resolvconf/resolv.conf.d/head
, nicht mitbase
. Bestätigt mitnslookup google.com
.resolvconf
installiert haben. Sie können es installieren, indem Sie tunsudo apt-get install resolvconf
.Diese Frage interessiert mich auch und ich habe die vorgeschlagene Lösung @sim ausprobiert.
Um es zu testen, habe ich gesetzt
in
/etc/resolvconf/resolv.conf.d/base
undim
/etc/resolvconf/resolv.conf.d/head
Dann habe ich das Netzwerk mit neu gestartet
Das Ergebnis
/etc/resolv.conf
sieht so ausund
nm-tool
gibt an, dass die dnsserver sindWelche werden von meinem Router bereitgestellt? Andererseits sagt das Graben einer Adresse das aus
Wenn ich recht habe, schließe ich daraus folgendes
Alles in allem funktioniert es, aber ich glaube nicht, dass es das gewünschte Ergebnis ist. Eine engere Lösung, denke ich, ist die folgende. Bearbeiten
dann füge hinzu
Das Ergebnis ist folgendes: resolv.conf enthält nur 127.0.0.1, was bedeutet, dass der dnsmasq-Cache aufgerufen wird und nm-tool sagt
Das heißt, wenn der gesuchte Name nicht im Cache ist, wird er am 8.8.8.8 und nicht auf dem von dhcp bereitgestellten Server abgefragt.
Eine andere (vielleicht bessere) Option ist die Verwendung von "prepend" anstelle von "supersede": Wenn der Name in 8.8.8.8 nicht aufgelöst wird, wird die Anforderung auf den anderen Server zurückgesetzt. Tatsächlich sagt nm-tool
quelle
Ich habe herausgefunden, dass Sie die verwendeten Nameserver ändern können,
dnsmasq
indem Sie die folgenden Zeilen hinzufügen/etc/dnsmasq.conf
:Ich hatte zwar keine
/etc/dnsmasq.conf
Datei, da sie vom dnsmasq-Paket installiert wurde, aber Ubuntu wird nur mit dnsmasq-base geliefert. Ich liefsudo apt-get install dnsmasq
, dann bearbeitete/etc/dnsmasq.conf
, dannsudo service dnsmasq restart
undsudo service network-manager restart
.Ich
sudo tail -n 200 /var/log/syslog
habe mein Syslog überprüft und festgestellt, dassdnsmasq
die angegebenen Nameserver verwendet wurden:quelle
sudo service network-manager restart
)In statischen IP-Situationen wird im Ubuntu Server-Handbuch empfohlen, die Datei / etc / network / interfaces zu ändern. Dies kann folgendermaßen aussehen:
Sie ändern die IPs 192.168.3.45 192.168.8.10 für diejenigen, die Sie möchten, wie z. B. 8.8.8.8
https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Page 38
quelle
ifdown eth0; ifup eth0
.Öffne es
Wählen Sie dann entweder WiFi oder Ethernet oder was auch immer Sie verwenden, und klicken Sie auf Bearbeiten. Du bekommst folgendes:
Wählen Sie in den Registerkarten ipv4 aus
Geben Sie unten Ihren DNS-Namen ein und speichern Sie ihn
Sie sind fertig
quelle
sudo service network-manager restart
, etwas warten, bestätigen mitnmcli d list | grep 'DNS\|IP-IFACE'
. Und pingen Sie Ihren internen Client mit dem Namen.Eine schnelle und unsaubere Lösung, die noch nicht erwähnt wurde, besteht darin, das unveränderliche Flag für die
resolv.conf
Datei direkt nach der Bearbeitung zu setzen.Füge dies hinzu und speichere:
Dann:
Das sollte den Trick machen. Das mache ich auch auf meinem System.
quelle
DNS-Konfiguration unter Linux
Die DNS-Nutzung unter Linux erfolgt über eine Reihe von Routinen in der C-Bibliothek, die den Zugriff auf das Internet Domain Name System (DNS) ermöglichen. Die Resolver-Konfigurationsdatei (
resolv.conf
) enthält Informationen, die von den Resolver-Routinen gelesen werden, wenn sie zum ersten Mal von einem Prozess aufgerufen werden. Kurz gesagt, jeder Prozess, der DNS anfordert, liest/etc/resolv.conf
die Bibliothek. Das NSS ist darüber geschichtet und wird von konfiguriert/etc/nsswitch.conf
.Die Linux-DNS-Konfiguration befindet sich in der Datei,
/etc/resolv.conf
ABER es gibt eine Reihe von Programmen / Diensten, die die DNS-Konfigurationsdatei unter automatisch verwalten und verwalten möchten/etc/resolv.conf
. In einigen Situationen möchten Sie diese Datei möglicherweise selbst verwalten. Jedes Programm / Dienst, der DNS verwaltet, hat seine eigenen Konfigurationsdateien wie/etc/dnsmasq.conf
(für den DNSMASQ-Dienst) und hängt die DNS-Konfiguration an, wenn sich die Verbindung ändert und / oder wenn andere Ereignisse eintreten. Eine schnelle Lösung besteht darin, die DNS-Konfigurationsdatei mit zu sperren.chattr +i /etc/resolv.conf
Dies wird jedoch nicht empfohlen In bestimmten Fällen ist es eine bessere Lösung, alle Programme / Dienste mithilfe des DNS korrekt einzurichten (dnsmasq / network-manager / resolvconf / etc.)Die Kontrolle über DNS zurückerhalten
Hier finden Sie eine vollständige Liste der Setups, mit denen Sie die Steuerung von resolv.conf wiederherstellen und ein Überschreiben vermeiden können ( Deaktivieren / Einrichten von DNS von einem anderen Ort als resolv.conf ). Beachten Sie, dass resolvconf auch ein unabhängiges Programm von resolv.conf ist Abhängig von Ihrem System / Ihrer Konfiguration verfügen Sie möglicherweise nicht über eines oder mehrere der hier aufgeführten Programme.
1. Resolvconf:
Konfigurationsdateien
Aktualisiere die Konfiguration
Deaktivieren Sie resolvconf
2. Dnsmasq Service:
Konfigurationsdateien
Aktualisiere die Konfiguration
3. Netzwerkmanager:
Konfigurationsdateien
DNS deaktivieren
DNS aktivieren
Verwenden Sie den aufgelösten Dienst
Benutze resolvconf
Aktualisiere die Konfiguration
4. Netzwerkschnittstellen:
Konfigurationsdateien
Aktualisieren Sie die Konfiguration
5. DHCP-Client:
Konfigurationsdateien
Aktualisieren Sie die Konfiguration
6. Rdnssd Service:
Deaktivieren Sie rdnssd
7. Gelöster Dienst:
Deaktivieren Sie gelöst
8. Netconfig:
Konfigurationsdateien
Deaktivieren Sie netconfig
Aktualisieren Sie die Konfiguration
Einstellen des DNS-Servers
Beispiel einer
/etc/resolv.conf
Konfigurationquelle
Mein Problem war ein bisschen anders, ich wollte die DNS-Server meines Routers überschreiben. Ich habe diesen Link von Ubuntu gefunden: https://wiki.ubuntu.com/OverrideDNSServers
Es heißt: Wenn Sie die von einem DHCP-Server bereitgestellten DNS-Einstellungen überschreiben möchten, öffnen Sie
und füge die folgende Zeile hinzu:
<dns_ip_address*>
Elemente durch den richtigen Inhalt ersetzen .quelle
dhcp3
Ordner nicht haben ? Ich habe Xubuntu 17.10, ist es/etc/dhcp
einfach umgezogen ?Möglicherweise fehlt mir etwas, aber gemäß den Konfigurationsanweisungen unter https://help.ubuntu.com/14.04/serverguide/network-configuration.html müssen Sie nur Folgendes aktualisieren. Ich verwende keinen Proxy - nur einen Computer hinter einer Firewall und lokalem DNS (Beispiel zeigt Google, aber stellen Sie ihn auf das ein, was Sie benötigen).
Standard:
AKTUALISIERT:
Starten Sie neu, wenn Sie können.
quelle
Versuchen Sie,
dns-nameservers XXX.XXX.XXX.X
in Ihre/etc/networking/interfaces
Datei einzufügen.quelle
Einige der Antworten hier funktionieren einwandfrei. Allerdings war ich mit der Tatsache nicht glücklich , dass ich manuell müssen nur Konfigurationsdateien gehen durch die „richtige“ zu setzen ,
DNS
die ich bereits am Empfang überDHCP
mitNetworkManager
.Ich habe ein wenig gegraben und festgestellt, dass es sich bei der
/etc/resolv.conf
Datei tatsächlich um einen Link handelt, auf den verwiesen wird/run/systemd/resolve/stub-resolv.conf
. Nach einigen Experimenten scheint das/run/systemd/resolve/
Verzeichnis eine andere Datei mit dem Namen zu enthalten,resolv.conf
die bereits die Einstellungen enthält, die Sie über erhalten habenDHCP
. Anstatt Konfigurationsdateien manuell überschreiben / erstellen zu müssen/etc/
, können Sie einfach eine neue Verknüpfung erstellen/etc/resolv.conf
, um auf die/run/systemd/resolve/resolv.conf
Datei zu verweisen, und alles sollte in Ordnung sein:Sie sollten nun in der Lage sein, die Einstellungen auch über den Netzwerkmanager in Gnome zu bearbeiten. :)
Ich bin nicht sicher, ob dies auf älteren Ubuntu-Versionen funktioniert, aber auf Ubuntu 17.10.
quelle
systemd-resolve --flush-cache
die ursprüngliche verknüpfte Datei ausführen, wird anscheinend die Antwort oben abgetrennt, um die ursprüngliche Funktionalität wiederherzustellenEDIT MAI 6,2016
Ich habe ein Skript geschrieben, um alle Einstellungen für Systemverbindungen im
/etc/Network-Manager/system-connections/
Verzeichnis zu aktualisieren . Die GUI, mit der Sie einzelne Verbindungen bearbeiten, bearbeitet eine bestimmte Datei in diesem Verzeichnis. Das Skript aktualisiert alle Dateien - es sucht nur nach denen, die keine DNS mit grep gesetzt haben und setzt sie mit awk.Da für den Zugriff auf diese Dateien ein
sudo
Zugriff erforderlich ist , führen Sie dieses Skript mit dem folgendensudo
Befehl aus: - Starten Sie den Netzwerkmanager neuSkript in Aktion:
ORIGINAL POST Einige Benutzer hier wiesen darauf hin, dass DNS irgendwie von gesteuert wird
dnsmasq
. Das stimmt in der Tat. Ich habe eine etwas kleinere Problem konfrontiert, wo , egal wie ich mich veränderthead
oderbody
in/etc/resolvconf/resolv.conf.d
, könnte mein Computer nicht tatsächlich Zugriff von Domain - Namen interniert - nur mit IP - Adressen arbeiten.Ich habe die
/etc/NetworkManager/NetworkManager.conf
Datei bearbeitet . Ursprünglich hieß esdns=dnsmasq
aber habe ich es zu:dns=208.67.222.222
. Obwohl auf diese Weisenm-tool
208.67.222.222 nicht erwähnt wird, konnte ich immer noch Domänennamen verwenden, nicht nur IP-Adressen.So sieht meine
NetworkManager.conf
Datei jetzt aus:HINWEIS: Weitere Details zu meinem Problem und dieser Lösung finden Sie in meinem Beitrag auf askubuntu.com .
UPDATE # 1
Nachdem ich heute von der Universität nach Hause zurückgekehrt war, stellte ich fest, dass ich keine Verbindung zu meinem Heim-WLAN herstellen konnte. Ich habe ein wenig nachgelesen
man NetworkManager.conf
und es stellte sich heraus, dassdns=
in[main]
eigentlich eine Zeile für Plug-Ins ist, alsodns=dnsmasq
fügt line anscheinend tatsächlich das dnsmasq- Plug- In zum NetworkManager hinzu.Meine Lösung funktionierte also immer noch nicht so, wie ich es erwartet hatte. Hier ist ein Auszug aus der Manpage:
Durch die Einstellung habe
dns=208.67.222.222
ich NetworkManager möglicherweise daran gehindert, dieses Plugin zu verwenden, das ansonsten den lokalen DNS-Server verwendet (was anscheinend nicht funktioniert).quelle
Es gibt zwei Methoden
Methode 1
Der zu verwendende DNS-Server kann geändert werden, indem die
head
Datei unter aktualisiert wirdresolv.conf.d
und dann rennen
Das Obige generiert eine generische
resolv.conf
Datei im/etc
Verzeichnis. Alle Ihre Auflösungsanfragen werden an den oben genannten Nameserver gesendet. GelöstDies hat jedoch Auswirkungen. Bei
resolvconf
der direkten Abfrage1.1.1.1
von Adressauflösungen entfällt die Caching-Fähigkeit von dnsmasq. Jede Anfrage geht an1.1.1.1
Methode 2
Wenn dies nicht der Fall sein soll und Sie dnsmasq für DNS-Auflösungen verwenden, lesen Sie diese Antwort. Die Antwort wird hier einfach beschrieben.
Fügen Sie den folgenden Inhalt in die
/etc/dnsmasq.conf
Datei ein.Starten Sie dann den dnsmasq-Dienst neu
Die Dinge werden gut funktionieren. Gelöst
quelle
Der einfache Weg, DNS zu ändern:
Wenn Probleme auftauchen, installieren Sie
nano
:dann ..
dns-nameservers
dns-nameservers 199.85.126.10 199.85.127.10
Ich hoffe, das ist der beste Weg, ich habe es übrigens auf einem VPS so gemacht.
quelle
auf root:
dns=dnsmasq
zu/etc/NetworkManager/NetworkManager.conf
supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;
am Ende von hinzufügen/etc/dhcp/dhclient.conf
sudo service network-manager restart
Folgendes nimmt die oben gezeigten Änderungen vor:
Warten Sie 7/10 Sekunden, bis der Neustart abgeschlossen ist. Überprüfen Sie Ihre Konfiguration mit "nslookup nist.gov". Funktioniert gut auf Ubuntu LTS 14.04.
quelle
NB: Wie bei den meisten Antworten wird hier die Verwendung von NetworkManager vorausgesetzt. Doch im Gegensatz zu den meisten anderen Antworten, ist es nicht die Verwendung von übernehmen
resolvconf
,dhclient
oder irgendetwas anderes - passen Sie auf , können sie übernehmen, wenn auch (siehe Update).In Anbetracht der Anzahl der Ansichten dieser Frage ist es ziemlich unglaublich , dass diese 8 Zeichen Lösung wurde noch nicht bekannt gegeben worden: nach
man NetworkManager.conf
,Deshalb addieren
im
[main]
Abschnitt/etc/NetworkManager/NetworkManager.conf
dann Network neu starten und es wird nicht ändern/etc/resolv.conf
mehr.Beachten Sie, dass die Einstellung
rc-manager=unmanaged
gleichbedeutend mit seindns=none
sollte und dass die Einstellungrc-manager=symlink
zusammen mit der/etc/resolv.conf
symbolischen Verknüpfung eine bessere Idee sein kann (siehe oben genannte Hilfeseite).Update:
Nachdem NetworkManager das Überschreiben gestoppt hatte
/etc/resolv.conf
, stellte ich fest, dass beim Bootendhcpcd
bereits/etc/resolv.conf
eine nutzlose leere Datei vorhanden war. Die Manpage von hatdhcpcd.conf
geholfen, es genügt hinzuzufügenin deinem
dhcpcd.conf
(meins ist in/etc/dhcpcd.conf
).quelle
Auf meinem Linux-Centos7-Server konnte ich diese Option am besten ändern, indem ich sie verwendete
Befehl, der hier in keiner Antwort vorgeschlagen wird. Sie können Nameserver in diesem Tool bearbeiten. Wenn Sie die Optionen des Netzwerkmanagers von diesem Dienstprogramm aus ändern, werden sienmtui
/etc/resolv.conf
nach dem Neustart automatisch angewendet . Hier finden Sie weitere Informationen .quelle