Die meisten Informationen, die ich online sehe, besagen, dass /etc/resolv.conf
bearbeitet werden soll, 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 dnsmasq
ist. In den Dokumenten dnsmasq
wird angegeben, dass /etc/resolv.conf
bearbeitet werden soll. Ich habe versucht, benutzerdefinierte Nameserver in /etc/resolv.conf.d/base
einzufügen, aber die Änderungen wurden in /etc/resolv.conf
nach dem Ausführen von sudo resolvconf -u
.
Zu Ihrer Information, ich möchte DNS nicht pro Verbindung ändern, sondern Standard-DNS-Einstellungen festlegen, die für alle Verbindungen verwendet werden, sofern nicht anders angegeben.
UPDATE:
Ich habe diese Frage selbst beantwortet: https://unix.stackexchange.com/a/163506/67024
Ich denke, es ist die beste Lösung seit:
- Es funktioniert.
- Es erfordert die geringste Anzahl von Änderungen und
- Es funktioniert immer noch in Verbindung mit dem DNS-Cache von dnsmasq, anstatt ihn zu umgehen.
Kommentare
- Beantworten Sie Ihre Frage besser, anstatt Ihre Frage zu aktualisieren. Ich denke, es wird einfacher sein, die richtige Antwort auf Ihr Problem zu finden
- Es scheint, dass die meisten Antworten Ubuntu-orientiert und übermäßig kompliziert sind. Eine universelle Lösung für NetworkManager-Benutzer besteht darin, einfach
dns=none
in/etc/NetworkManager/NetworkManager.conf
hinzuzufügen (siehe Details in meiner Antwort unten). - Ich denke, diese Antwort verdeutlicht, warum die resolve.conf überschrieben wird, dann wissen Sie, wie Sie sie konfigurieren.
Antwort
Wenn Sie den DNS-Nameserver überschreiben möchten, fügen Sie in Ihrer base
Datei unter resolv.conf.d
.
Beispiel
$ sudo vim /etc/resolvconf/resolv.conf.d/base
Fügen Sie dann Ihre Nameserver-Liste in like ein Also:
nameserver 8.8.8.8 nameserver 8.8.4.4
Aktualisieren Sie schließlich resolvconf
:
$ sudo resolvconf -u
Wenn Sie sich die Manpage für resolvconf
ansehen, werden die verschiedenen Dateien unter /etc/resolvconf/resolv.conf.d/
beschrieben.
/etc/resolvconf/resolv.conf.d/base File containing basic resolver information. The lines in this file are included in the resolver configuration file even when no interfaces are configured. /etc/resolvconf/resolv.conf.d/head File to be prepended to the dynamically generated resolver configuration file. Normally this is just a comment line. /etc/resolvconf/resolv.conf.d/tail File to be appended to the dynamically generated resolver configuration file. To append nothing, make this an empty file. This file is a good place to put a resolver options line if one is needed, e.g., options inet6
Obwohl oben in der Datei head
eine Warnung angezeigt wird:
Diese Warnung ist vorhanden, damit die Warnung beim Erstellen dieser Dateien letztendlich in die resultierende resolv.conf
-Datei eingreift, die diese Dateien verwenden verwendet werden, um zu machen. Sie hätten also genauso gut die Zeilen nameserver
, die oben für die Datei base
beschrieben wurden, zur Datei Datei auch.
Referenzen
Kommentare
Antwort
Diese Frage interessiert mich auch und ich habe die vorgeschlagene Lösung @sim ausprobiert.
Um sie zu testen, habe ich
nameserver 8.8.8.8
in /etc/resolvconf/resolv.conf.d/base
und
nameserver 8.8.4.4
in /etc/resolvconf/resolv.conf.d/head
Dann habe ich das Netzwerk mit
sudo service network-manager restart
neu gestartet. Das Ergebnis ist, dass /etc/resolv.conf
wie
# 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 127.0.1.1
und nm-tool
geben an, dass die dnsserver
DNS: 208.67.222.222 DNS: 208.67.220.220
sind Welches sind die von meinem Router bereitgestellten. Auf der anderen Seite sagt das Graben einer Adresse, dass
;; Query time: 28 msec ;; SERVER: 8.8.4.4#53(8.8.4.4)
Wenn ich Recht habe, schließe ich daraus, dass
- nur Der „head“ -Teil wird von resolvonf gelesen: Der „base“ -Teil wird irgendwie von dnsmasq gesteuert.
- Der dnsserver wird tatsächlich auf 8.8.4.4 gezwungen, unabhängig vom von dhcp bereitgestellten Server, ABER Sie verlieren das bereitgestellte Caching von dnsmasq, da die Anfrage immer an 8.8.4.4 gesendet wird
- dnsmasq verwendet immer noch NUR den von dhcp bereitgestellten dnsserver.
Alles in allem funktioniert es, aber ich Ich glaube nicht, dass es das gewünschte Ergebnis ist.Eine engere Lösung ist meiner Meinung nach die folgende. Bearbeiten Sie
sudo vim /etc/dhcp/dhclient.conf
und fügen Sie dann
supersede domain-name-servers 8.8.8.8;
hinzu. Das Ergebnis lautet wie folgt: resolv.conf enthält nur 127.0.0.1, was bedeutet, dass der dnsmasq-Cache aufgerufen wird und das nm-Tool
DNS: 8.8.8.8
sagt, was bedeutet, dass sich der gesuchte Name nicht im Cache befindet , dann wird es um 8.8.8.8 und nicht auf dem von dhcp bereitgestellten Server abgefragt.
Eine andere (vielleicht bessere) Option ist die Verwendung von „voranstellen“ anstelle von „ersetzen“: auf diese Weise, wenn die Der Name wird von 8.8.8.8 nicht aufgelöst, dann fällt die Anforderung auf den anderen Server zurück. Tatsächlich sagt nm-tool
DNS: 8.8.8.8 DNS: 208.67.222.222 DNS: 208.67.220.220
Kommentare
- Eine viel bessere Antwort als das Hacken in die NS-Konfigurationen. Insbesondere die Option, einen Server vor den von DHCP bereitgestellten zu stellen. Scheint die perfekte Balance zu sein, um das Problem zu lösen, ohne neue zu erstellen!
- ‚ Es ist erwähnenswert, dass das nm-Tool durch nmcli
ersetzt wurde
Antwort
Ich habe herausgefunden, dass Sie die von dnsmasq
verwendeten Nameserver ändern können Durch Hinzufügen der folgenden Zeilen zu /etc/dnsmasq.conf
:
server=8.8.8.8 server=8.8.4.4
hatte ich keine /etc/dnsmasq.conf
-Datei, da sie vom dnsmasq-Paket installiert wird, Ubuntu jedoch nur mit dnsmasq-base geliefert wird. Ich habe sudo apt-get install dnsmasq
ausgeführt, dann /etc/dnsmasq.conf
bearbeitet, dann sudo service dnsmasq restart
und sudo service network-manager restart
.
Ich habe sudo tail -n 200 /var/log/syslog
ausgeführt, um mein Syslog zu überprüfen und sicherzustellen, dass dnsmasq
das verwendet Nameserver, die ich angegeben habe:
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53 Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53
Kommentare
- Es gibt einen Grund, warum dies als der beste markiert wird antworte … weil es tatsächlich so ist! vielen Dank! Ich würde hinzufügen, dass nach all den Schritten, die Sie erwähnt haben, möglicherweise ein Neustart des Netzwerks erforderlich ist, damit alles reibungslos funktioniert (für mich …
sudo service network-manager restart
) - ‚ ist faszinierend, dass dnsmasq installiert werden muss. Dies hat zwar mein DNS in einer normalen Situation behoben, aber meine VPN-Konfiguration wurde vollständig beschädigt (VPN-Verbindung schlägt jetzt fehl …).
- Auf Centos
- Ubuntu 16 gibt es keine solche Datei: Änderungen gegenüber der Prozedur mit
dnsmasq
werden nicht in/etc/resolv.conf
übertragen. Die Folge ist, dass nslookup immer noch seinen ursprünglich definierten localhost 127.0.0.1 verwendet. Obwohl ich Ihre erwähnten Syslogs bestätigen kann.
uf Ubuntu 14.04 Server würde ein Kaltstart ungefähr die Hälfte der Zeit dazu führen, dass keine Internetverbindung über eine URL hergestellt wird, aber eine IP-Adresse funktioniert. Ich verbrachte viel Zeit erfolglos damit, es zu reparieren, gab monatelang auf und fand dann diese Lösung. Ich denke auch, dass dies die beste Antwort ist.
Antwort
Für statische IP-Situationen wird im Ubuntu Server-Handbuch Folgendes angegeben Ändern Sie die Datei / etc / network / interfaces, die folgendermaßen aussehen kann:
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
Sie ändern die IPs 192.168.3.45 192.168.8.10 für die gewünschten , wie 8.8.8.8
https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Page 38
Kommentare
- Das sieht sicherlich richtig aus, aber wie regeneriere ich jetzt resolv.conf?!
- @JoelBerger
ifdown eth0; ifup eth0
. - no / etc / network / interfaces auf Centos
Antwort
-
Suche nach „Netzwerkverbindung“
-
Öffnen Sie sie
-
Wählen Sie dann entweder WiFi oder Ethernet oder was auch immer Sie verwenden, und klicken Sie auf Bearbeiten. Sie erhalten Folgendes:
-
Wählen Sie ipv4 in den Registerkarten
-
Wählen Sie Adressen nur in der Methode
-
aus. Geben Sie unten Ihren DNS-Namen ein und speichern Sie ihn
-
Sie sind fertig
Kommentare
- I ‚ Ich müsste dies jedoch für jede Netzwerkverbindung tun. In der Vergangenheit konnten Sie die Standardeinstellung für alle Verbindungen ändern, was ich hier gesucht habe.
- Ich liebe dich! Diese UI-Einstellung rettete meinen Arsch vor Sudo und Vim-Chaos: ‚ (
- Verwenden von Mint (unter Ubuntu 14.04) – aber auch bei KDE – für einige Aus diesem Grund hat das Festlegen von DNS-Servern im GUI-Netzwerk-Manager ‚ keinen Einfluss auf die in einem Terminal verwendeten DNS-Einstellungen.
- Beste Antwort imho. Unter Ubuntu 14.04 habe ich 2 externe IP-Adressen für DNS, die ‚ Clients in meinem Heimnetzwerk nicht erkennen würden. Methode auf ‚ Automatisch (DHCP) ‚ für die Kabelverbindung hat die IP-Adresse meines Routers ‚ zur vorhandenen Liste hinzugefügt.Für die drahtlose Verbindung über wlan0 funktionierte das ‚ nicht, aber die Methode für ‚ Automatische (DHCP) Adressen nur ‚ ersetzte die externen Adressen durch meine Router-IP und dann funktionierte das auch. Übernehmen Sie die Änderungen mit
sudo service network-manager restart
, warten Sie ein wenig und überprüfen Sie dies mitnmcli d list | grep 'DNS\|IP-IFACE'
. Und pingen Sie Ihren internen Client mit seinem Namen an. - Dies ist die richtige Antwort.
Antwort
Eine schnelle und schmutzige Problemumgehung, die noch nicht erwähnt wurde, setzt das unveränderliche Flag für die Datei resolv.conf
direkt nach der Bearbeitung.
$ sudo nano /etc/resolv.conf
Fügen Sie dies hinzu und speichern Sie:
nameserver 8.8.8.8
Dann:
$ sudo chattr +i /etc/resolv.conf
Das sollte den Trick machen. Ich mache das auch auf meinem System.
Kommentare
- Immer wenn Ihre Lösung Chattr beinhaltet, ist es ‚ ist keine wirkliche Lösung.
- Dies ist das, was ich auf Systemen mache, auf denen ich aus irgendeinem Grund das DNS vorübergehend ändern und ‚ t möchte die Konfiguration nicht ändern. Als dauerhafte Lösung würde ich ‚ es nicht empfehlen.
- “ Schnelle und schmutzige Problemumgehung “
- Dies ist nicht ‚ nicht schmutzig. Programme Diese zerstören die lokale Konfiguration, weil sie glauben, dass sie besser wissen, dass sie schmutzig sind.
Antwort
Mein Problem war etwas 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 möchten Überschreiben Sie die von einem DHCP-Server bereitgestellten DNS-Einstellungen, öffnen Sie
/etc/dhcp3/dhclient.conf
und fügen Sie die folgende Zeile hinzu:
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;
Ersetzen von <dns_ip_address*>
Elementen durch den richtigen Inhalt.
Kommentare
- Dies ist die Antwort, die mein Problem gelöst hat.
- Perfekt. Fügen Sie einfach hinzu, dass Sie das sudo service-Netzwerk neu starten sollten, um die Änderungen zu aktivieren.
- Was ist, wenn wir ‚ nicht haben, dass
dhcp3
Ordner? Ich habe Xubuntu 17.10, wurde es einfach in/etc/dhcp
verschoben? - @PlasmaBinturong in meinem Fall war es
/etc/dhcp/dhclient.conf
aktiviert Neueste Debian- und Ubuntu-Versionen.
Antwort
Fügen Sie dns-nameservers XXX.XXX.XXX.X
in Ihre /etc/networking/interfaces
-Datei.
Kommentare
- Hinterlassen Sie bitte einen Kommentar, wenn Sie abstimmen. Dies ist die im Handbuch , Seite 38, angegebene Methode.
- Das nicht erwähnte Handbuch zeigt alle IPs in einer Zeile. Diese Antwort scheint darauf hinzudeuten, eine Zeile hinzuzufügen. Und warum ist die letzte Zahl nur ein X breit? Ich denke, es war hauptsächlich das äußerst informelle und unsichere kurze Schreiben im Chat-Stil, das die negativen Stimmen @Zook einbrachte.
Antwort
Vielleicht fehlt mir etwas, aber gemäß den Konfigurationsanweisungen unter https://help.ubuntu.com/14.04/serverguide/network-configuration.html ist alles, was Sie tun Aktualisieren Sie Folgendes: Ich verwende keinen Proxy – nur einen Computer hinter einer Firewall und lokalem DNS (Beispiel zeigt Googles, aber stellen Sie ihn auf das ein, was Sie benötigen).
nano /etc/network/interfaces
Standard:
# This file... # and how to activate... # The loopback... auto local iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp
AKTUALISIERT:
# This file... # and how to activate... # The loopback... auto local iface lo inet loopback # The primary network interface #iface eth0 inet dhcp iface eth0 inet static address x.x.x.x netmask 255.255.255.0 gateway x.x.x.x #nameservers # you may not need dns-search # I use it because I"m running this on a Windows network # so its useful to have # dns-search x.y dns-nameservers 4.4.4.4 8.8.8.8
Starten Sie neu, wenn Sie können.
Antwort
Einige der Antworten hier funktionieren einwandfrei. Ich war jedoch nicht zufrieden mit der Tatsache, dass ich manuell durchgehen muss Konfigurationsdateien, nur um die „richtige“ DNS
festzulegen, die ich alre ady empfängt über DHCP
mit NetworkManager
.
Ich habe ein wenig gegraben und festgestellt, dass die Datei /etc/resolv.conf
tatsächlich ein Link ist und auf /run/systemd/resolve/stub-resolv.conf
div zeigt Nach einigen Experimenten scheint das Verzeichnis /run/systemd/resolve/
eine andere Datei mit dem Namen resolv.conf
zu enthalten, die bereits die Einstellungen enthält, die Sie über DHCP
. Anstatt Konfigurationsdateien in /etc/
manuell überschreiben / erstellen zu müssen, können Sie /etc/resolv.conf
einfach neu verknüpfen, um auf /run/systemd/resolve/resolv.conf
Datei und alles sollte in Ordnung sein:
# sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Sie sollten jetzt in der Lage sein, die Einstellungen auch über das Netzwerk zu bearbeiten Manager in Gnome. 🙂
Ich bin mir nicht sicher, ob dies unter älteren Ubuntus funktioniert, aber unter Ubuntu 17.10.
Kommentare
- Wenn wir
systemd-resolve --flush-cache
ausführen, wird die ursprünglich verknüpfte Datei anscheinend getrennt, die obige Antwort wird wiederhergestellt die ursprüngliche Funktionalität
Antwort
BEARBEITEN 6. MAI, 2016
Ich habe ein Skript geschrieben, um alle Einstellungen für Systemverbindungen im Verzeichnis /etc/Network-Manager/system-connections/
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, für die DNS nicht mit grep festgelegt wurde, und legt sie mit awk fest.
Da für den Zugriff auf diese Dateien sudo
Zugriff erforderlich ist, führen Sie dieses Skript mit sudo
aus und starten Sie den Netzwerkmanager
#!/bin/bash # Author: Serg Kolo # Date: May 6, 2015 # Description: this script checks all settings for connections in # /etc/NetworkManager/system-connections/ , and if there"s no custom # dns set , this script sets it; # NOTE: run sudo service network-manager restart after running this script set -x for file in /etc/NetworkManager/system-connections/* ; do grep "dns=208.67.220.220;" "$file" || ( awk "{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220. 220;\nignore-auto-dns=true"}}" "$file" > .tmpfile && ( cat .tmpfile > "$file") ) done
Skript in Aktion:
ORIGINAL POST Einige Benutzer hier wiesen darauf hin, dass DNS irgendwie von dnsmasq
gesteuert wird. Das ist wahr. Ich hatte ein etwas kleineres Problem, bei dem ich head
oder body
in /etc/resolvconf/resolv.conf.d
, mein Computer konnte nicht intern auf den Domänennamen zugreifen – nur mit IP-Adressen.
Ich habe die Datei /etc/NetworkManager/NetworkManager.conf
bearbeitet. Ursprünglich stand dns=dnsmasq
, aber ich habe es geändert in: dns=208.67.222.222
. Obwohl auf diese Weise nm-tool
208.67.222.222 nicht erwähnt wird, konnte ich immer noch Domänennamen verwenden, nicht nur IP-Adressen.
So gehts Die Datei NetworkManager.conf
sieht jetzt so aus:
[main] plugins=ifupdown,keyfile,ofono #dns=dnsmasq dns=208.67.222.222 [ifupdown] managed=false
HINWEIS: Weitere Informationen zu meinem Problem und dieser Lösung finden Sie in meinem Beitrag unter 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 über und es stellt sich heraus, dass dns=
in [main]
tatsächlich eine Zeile für Plug-Ins ist, also Zeile dns=dnsmasq
fügt anscheinend tatsächlich das dnsmasq-Plugin zum NetworkManager hinzu.
Meine Lösung funktionierte also immer noch, nur nicht so, wie ich es erwartet hatte. Hier ist ein Auszug aus der Manpage:
dns=plugin1,plugin2, ... List DNS plugin names separated by ",".
DNS-Plugins werden verwendet, um lokale Caching-Nameserver-Funktionen bereitzustellen (wodurch DNS-Abfragen beschleunigt werden) und DNS-Daten an Anwendungen übertragen werden, die sie verwenden.
Setzen Sie also dns=208.67.222.222
Ich habe NetworkManager möglicherweise grundsätzlich daran gehindert, dieses Plugin zu verwenden, das andernfalls den lokalen DNS-Server verwenden würde (der anscheinend nicht funktioniert).
Antwort
Es gibt zwei Methoden
Methode 1
Der zu verwendende DNS-Server kann geändert werden, indem die Datei head
unter resolv.conf.d
und führen Sie dann
$ sudo resolvconf -u
aus. Das oben Gesagte generiert eine generische resolv.conf
-Datei im Verzeichnis /etc
. Alle Ihre Auflösungsanfragen werden an den oben genannten Nameserver gesendet. Gelöst.
Dies hat jedoch Auswirkungen. Wenn Sie mit resolvconf
1.1.1.1
direkt nach Adressauflösungen abfragen, ist die von dnsmasq bereitgestellte Caching-Leistung weg. Jede Anforderung wird an 1.1.1.1
Methode 2
gesendet. Wenn dies nicht der Fall sein soll und dnsmasq für DNS-Auflösungen verwendet wird, lesen Sie diese Antwort. Die Antwort wird hier einfach beschrieben.
Fügen Sie den folgenden Inhalt in die Datei /etc/dnsmasq.conf
ein
server = 1.1.1.1
Starten Sie anschließend den dnsmasq-Dienst
$ sudo systemctl restart dnsmasq.service
Die Dinge werden gut funktionieren. Gelöst.
Antwort
Der einfache Weg, DNS zu ändern:
$ sudo nano /etc/network/interfaces
Wenn Probleme auftreten, installieren Sie nano
:
$ sudo apt-get install nano -y
dann ..
- finde dies:
dns-nameservers
- Wenn Sie es nicht finden, geben Sie es einfach dort ein.
- Ich habe meins so gemacht:
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.
Antwort
im Stammverzeichnis:
- Kommentar
dns=dnsmasq
am/etc/NetworkManager/NetworkManager.conf
- füge
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/etc/dhcp/dhclient.conf
-
sudo service network-manager restart
Im Folgenden werden die oben gezeigten Änderungen vorgenommen:
$ sudo sed -i "s/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/" \ /etc/NetworkManager/NetworkManager.conf $ echo "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;" | \ sudo tee --append /etc/dhcp/dhclient.conf $ sudo service network-manager restart
Warten Sie 7/10 Sekunden, um den Neustartvorgang abzuschließen. Überprüfen Sie Ihre Konfiguration mit“ nslookup nist.gov „. Funktioniert gut unter Ubuntu LTS 14.04.
Antwort
Hinweis: Wie bei den meisten Antworten wird bei diesem die Verwendung von NetworkManager vorausgesetzt . Im Gegensatz zu den meisten anderen Antworten wird jedoch nicht davon ausgegangen, dass resolvconf
, dhclient
oder irgendetwas anderes verwendet wird. obwohl (siehe Update).
Angesichts der Anzahl der Aufrufe dieser Frage ist es ziemlich unglaublich, dass diese 8 Zeichen Lösung wurde noch nicht veröffentlicht: Laut man NetworkManager.conf
dns: […] none: NetworkManager ändert die resolv.conf nicht. Dies impliziert, dass der RC-Manager nicht verwaltet wird.
Fügen Sie daher
dns=none
im Abschnitt [main]
von /etc/NetworkManager/NetworkManager.conf
starten Sie NetworkManager neu und es wird /etc/resolv.conf
mehr.
Beachten Sie, dass die Einstellung rc-manager=unmanaged
dns=none
entsprechen sollte und diese Einstellung rc-manager=symlink
zusammen mit /etc/resolv.conf
als Symb olic link ist möglicherweise eine bessere Idee (siehe oben genannte Manpage).
Update:
Nachdem NetworkManager aufgehört hat, /etc/resolv.conf
zu überschreiben, dachte ich mir dhcpcd
ersetzte /etc/resolv.conf
bereits beim Booten durch eine nutzlose leere Datei. Die Manpage von dhcpcd.conf
hat geholfen. Es reicht aus,
nohook resolv.conf
in Ihre dhcpcd.conf
(meins ist in /etc/dhcpcd.conf
).
Antwort
Das „s, weil eine bestimmte installierte Anwendung diese Datei verwaltet. Sie können diese Anwendung entweder deinstallieren oder Ihre gewünschten Optionen direkt über diese Anwendung festlegen.
In meinem Fall (Linux Centos7 Minimal Server) mit der gleichen Situation, die ich hatte # Generated by NetworkManager
oben in der Datei resolv.conf
, sodass ich diese Option am besten ändern konnte, indem ich
nmtui
Befehl. Sie können Nameserver in diesem Tool bearbeiten. Wenn Sie die Optionen von networkmanager in diesem Dienstprogramm ändern, werden sie nach dem Neustart automatisch auf /etc/resolv.conf
angewendet. Hier finden Sie weitere Informationen .
Antwort
Nichts bei alles im Internet er Ich habe es getan, weil das CLI-Dienstprogramm von NordVPN jedes Mal, wenn ich eine Verbindung zum VPN herstellte und die Verbindung zum VPN aufgab, /etc/resolv.conf
überschrieb. Es hat sogar chattr +i
überschrieben, was super nervig war !!
Was für mich funktioniert hat, war die Auflösung von resolvconf !
/etc/resolvconf.conf
und machen Sie dies zum einzigen Eintrag:
resolv_conf=NO
Dadurch wird , dh Ihre /etc/resolv.conf
wird dadurch niemals geändert. Dann fahren Sie fort und sudo chattr +i /etc/resolv.conf
für ein gutes Maß.
Getestet unter Arch Linux.
Antwort
Unter Centos 7 besteht die sauberste, beständigste und funktionierendste Lösung, die ich finden konnte, darin, ein NetworkManager-Skript zu erstellen, das nmcli verwendet, um die gewünschten Werte festzulegen.
zB
Erstellen Sie /etc/NetworkManager/dispatcher.d/mydns.sh
mit den Berechtigungen 755 und den folgenden Inhalten:
#!/usr/bin/sh if [ $1 == "enp0s11" -a $2 == "up" ] then echo "Setting my DNS ($1 is $2)" | logger # disable default DNS nmcli device mod enp0s11 ipv4.ignore-auto-dns yes # Substitute our own DNS, in the desired order nmcli device mod enp0s11 ipv4.dns "10.0.1.101 10.0.1.1" fi
Und zum Testen ohne Neustart:
systemctl restart NetworkManager.service cat /etc/resolv.conf
YMMV, aber dies ist der einzige Weg, den ich gefunden habe, der es meiner /etc/resolv.conf erlaubt „Überleben“ Sie einen Neustart, ohne mit Werten überschrieben zu werden, die ich nicht möchte.
base
steckte undresolvconf -u
ausführte, waren die Nameserver nicht in resolv.conf eingefügt – als ich die Nameserver inhead
einfügte, waren sie/run/resolvconf/interface/NetworkManager
nslookup google.com
ein, und die erste IP in der Liste sollte Ihr neuer Nameserver sein, wenn nicht , du hast es falsch gemacht/etc/resolvconf/resolv.conf.d/head
angehängt wird, nicht mitbase
. Bestätigt mitnslookup google.com
.resolvconf
installiert sein. Sie können es installieren, indem Siesudo apt-get install resolvconf
ausführen.