In den meisten Informationen, die ich online sehe, steht „Bearbeiten“ /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
. In der dnsmasq
Dokumentation steht, dass ich bearbeiten soll /etc/resolv.conf
. Ich habe versucht, benutzerdefinierte Nameserver in einzugeben , aber die Änderungen wurden nach dem Ausführen /etc/resolv.conf.d/base
nicht angezeigt ./etc/resolv.conf
sudo resolvconf -u
Zu Ihrer Information: Ich möchte DNS nicht für jede Verbindung einzeln ändern, sondern die Standard-DNS-Einstellungen für alle Verbindungen festlegen, wenn nichts anderes angegeben ist.
AKTUALISIEREN:
Diese Frage habe ich mir selbst beantwortet: https://unix.stackexchange.com/a/163506/67024
Ich denke, es ist die beste Lösung, da:
- Es klappt.
- Es erfordert die geringste Anzahl von Änderungen und
- Es funktioniert weiterhin in Verbindung mit dem DNS-Cache von dnsmasq, anstatt ihn zu umgehen.
Antwort1
Ich glaube, wenn Sie den DNS-Nameserver überschreiben möchten, fügen Sie lediglich eine ähnliche Zeile in Ihrer base
Datei unter hinzu resolv.conf.d
.
Beispiel
NOTIZ:Bevor wir beginnen, stellen Sie sicher, dass das folgende Paket installiert ist apt install resolvconf
.
$ sudo vim /etc/resolvconf/resolv.conf.d/base
Geben Sie dann Ihre Nameserverliste folgendermaßen ein:
nameserver 8.8.8.8
nameserver 8.8.4.4
Zum Schluss noch ein Update resolvconf
:
$ sudo resolvconf -u
Wenn Sie einen Blick auf die Manpage werfen, resolvconf
werden dort die verschiedenen Dateien darunter beschrieben /etc/resolvconf/resolv.conf.d/
.
/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 head
Datei eine Warnung steht:
$ cat /etc/resolvconf/resolv.conf.d/head
# 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
Diese Warnung ist vorhanden, damit die Warnung beim Erstellen dieser Dateien letztendlich in die resultierende Datei einfließt, resolv.conf
die mit diesen Dateien erstellt wird. Sie hätten also die nameserver
oben für die Datei beschriebenen Zeilen genauso gut auch base
zur head
Datei hinzufügen können.
Verweise
Antwort2
Diese Frage interessiert mich auch und ich habe die von @sim vorgeschlagene Lösung ausprobiert.
Um es 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
Anschließend habe ich das Netzwerk neu gestartet mit
sudo service network-manager restart
Das Ergebnis /etc/resolv.conf
sieht so aus:
# 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
gibt an, dass die DNS-Server
DNS: 208.67.222.222
DNS: 208.67.220.220
welche von meinem Router bereitgestellt werden. Andererseits zeigt das Ausgraben 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 "Kopf"-Teil wird von resolvonf gelesen: der "Basis"-Teil wird irgendwie von dnsmasq gesteuert
- der DNS-Server wird tatsächlich auf 8.8.4.4 gezwungen, unabhängig vom von DHCP bereitgestellten Server, ABER Sie verlieren das von dnsmasq bereitgestellte Caching, da die Anforderung immer an 8.8.4.4 gesendet wird
- dnsmasq verwendet immer noch NUR den von DHCP bereitgestellten DNS-Server.
Alles in allem funktioniert es, aber ich glaube nicht, dass es das gewünschte Ergebnis ist. Eine nähere Lösung ist meiner Meinung nach die folgende. Bearbeiten
sudo vim /etc/dhcp/dhclient.conf
dann füge hinzu
supersede domain-name-servers 8.8.8.8;
Das Ergebnis ist das folgende: resolv.conf enthält nur 127.0.0.1, was bedeutet, dass der dnsmasq-Cache aufgerufen wird und nm-tool sagt
DNS: 8.8.8.8
das heißt, wenn der gesuchte Name nicht im Cache vorhanden ist, wird er bei 8.8.8.8 abgefragt und nicht bei dem per DHCP bereitgestellten Server.
Eine andere (vielleicht bessere) Möglichkeit ist, „prepend“ statt „supersede“ zu verwenden: Auf diese Weise wird die Anforderung auf den anderen Server zurückgesetzt, wenn der Name von 8.8.8.8 nicht aufgelöst wird. Tatsächlich sagt nm-tool
DNS: 8.8.8.8
DNS: 208.67.222.222
DNS: 208.67.220.220
Antwort3
Ich habe herausgefunden, dass Sie die dnsmasq
verwendeten Nameserver ändern können, indem Sie die folgenden Zeilen hinzufügen /etc/dnsmasq.conf
:
server=8.8.8.8
server=8.8.4.4
Ich hatte /etc/dnsmasq.conf
allerdings keine Datei, da sie vom dnsmasq-Paket installiert wird, Ubuntu aber nur mit dnsmasq-base geliefert wird. Ich habe ausgeführt sudo apt-get install dnsmasq
, dann bearbeitet /etc/dnsmasq.conf
, dann sudo service dnsmasq restart
und sudo service network-manager restart
.
Ich habe sudo tail -n 200 /var/log/syslog
mein Syslog überprüft und sichergestellt, dass dnsmasq
die von mir angegebenen Nameserver verwendet wurden:
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
Antwort4
Suche 'Netzwerkverbindung'
Öffne es
Wählen Sie dann entweder WLAN oder Ethernet oder was auch immer Sie verwenden und klicken Sie auf Bearbeiten. Sie erhalten Folgendes:
Wählen Sie IPv4 in Tabs
Wählen Sie nur Adressen in der Methode aus
Geben Sie unten Ihren DNS-Namen ein und speichern Sie ihn
Du bist fertig