Ich glaube, wenn Sie den DNS-Nameserver überschreiben möchten, fügen Sie einfach eine ähnliche Zeile in Ihrem base
hinzu Datei unter resolv.conf.d
.
Beispiel
$ sudo vim /etc/resolvconf/resolv.conf.d/base
Dann tragen Sie Ihre Nameserver-Liste wie folgt ein:
nameserver 8.8.8.8
nameserver 8.8.4.4
Aktualisieren Sie abschließend resolvconf
:
$ sudo resolvconf -u
Wenn Sie einen Blick auf die Manpage für resolvconf
werfen es beschreibt die verschiedenen Dateien unter /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 head
eine Warnung steht Datei:
$ 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 da, damit die Warnung beim Erstellen dieser Dateien letztendlich in den resultierenden resolv.conf
einfließt Datei, zu deren Erstellung diese Dateien verwendet werden. Sie hätten also genauso gut die nameserver
hinzufügen können Zeilen, die oben für base
beschrieben sind Datei, in head
Datei auch.
Referenzen
- DNS-Nameserver für Ubuntu 14.04 beibehalten
- Wie füge ich einen DNS-Server über resolv.conf hinzu?
Diese Frage interessiert mich auch und ich habe die vorgeschlagene Lösung @sim.
ausprobiertUm 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
Dann habe ich das Netzwerk mit
neu gestartetsudo service network-manager restart
Das Ergebnis ist /etc/resolv.conf
sieht aus 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
gibt an, dass die dnsserver sind
DNS: 208.67.222.222
DNS: 208.67.220.220
die von meinem Router bereitgestellt werden. Auf der anderen Seite sagt das Graben einer Adresse das aus
;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
Wenn ich recht habe, schließe ich daraus das
- nur der "head"-Teil wird von resolvonf gelesen:der "base"-Teil wird irgendwie von dnsmasq kontrolliert
- der dnsserver wird tatsächlich zu 8.8.4.4 gezwungen, unabhängig von dem von dhcp bereitgestellten Server, ABER Sie verlieren das von dnsmasq bereitgestellte Caching, da die Anfrage 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 angestrebte Ergebnis ist. Eine nähere Lösung ist meiner Meinung nach die folgende. Bearbeiten
sudo vim /etc/dhcp/dhclient.conf
dann hinzufügen
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
dh wenn der gesuchte Name nicht im Cache ist, dann wird er bei 8.8.8.8 abgefragt und nicht bei dem von dhcp bereitgestellten Server.
Eine andere (vielleicht bessere) Option ist die Verwendung von „prepend“ anstelle von „supersede“:Wenn der Name von 8.8.8.8 nicht aufgelöst wird, fällt die Anfrage auf diese Weise 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
Ich habe herausgefunden, dass Sie die Nameserver ändern können, die dnsmasq
verwendet, indem Sie die folgenden Zeilen zu /etc/dnsmasq.conf
hinzufügen :
server=8.8.8.8
server=8.8.4.4
Ich hatte keinen /etc/dnsmasq.conf
-Datei, da sie vom dnsmasq-Paket installiert wird, aber Ubuntu 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 zu bestätigen, dass dnsmasq
verwendete die von mir angegebenen Nameserver:
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