Wie kann ich meinen DNS einstellen, wenn resolv.conf überschrieben wird?
Die meisten Informationen, die ich im Internet finde, sagen, ich solle /etc/resolv.conf
bearbeiten, 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. Die dnsmasq
-Dokumente sagen, dass man /etc/resolv.conf
bearbeiten soll. Ich habe versucht, benutzerdefinierte Nameserver in /etc/resolv.conf.d/base
einzutragen, aber die Änderungen tauchten nicht in /etc/resolv.conf
auf, nachdem ich sudo resolvconf -u
ausgeführt hatte.
Zu Ihrer Information: Ich möchte DNS nicht pro Verbindung ändern, sondern Standard-DNS-Einstellungen festlegen, die für alle Verbindungen verwendet werden sollen, wenn nicht anders angegeben.
UPDATE:
Ich habe diese Frage selbst beantwortet: https://unix.stackexchange.com/a/163506/67024
Ich denke, das ist die beste Lösung, denn:
- Sie funktioniert.
- Sie erfordert die wenigsten Änderungen und
- Es funktioniert immer noch in Verbindung mit dnsmasq's DNS-Cache, anstatt ihn zu umgehen.
Ich glaube, wenn Sie den DNS-Nameserver außer Kraft setzen wollen, fügen Sie einfach eine ähnliche Zeile wie diese in Ihre
base
-Datei unterresolv.conf.d
ein.Beispiel
Dann fügen Sie Ihre Nameserverliste wie folgt ein:
Aktualisieren Sie schließlich
resolvconf
:Wenn Sie einen Blick auf die Manpage für
resolvconf
werfen, beschreibt sie die verschiedenen Dateien unter/etc/resolvconf/resolv.conf.d/
.Auch wenn es eine Warnung am Anfang der Datei
head
gibt:ist diese Warnung da, so dass, wenn diese Dateien konstruiert werden, die Warnung letztendlich ihren Weg in die resultierende
resolv.conf
-Datei findet, die diese Dateien benutzt, um zu erstellen. Sie könnten also genauso gut die oben beschriebenenNameserver'-Zeilen für die
base'-Datei auch in die `head'-Datei einfügen.Referenzen
Ich bin auch an dieser Frage interessiert und habe die von @sim vorgeschlagene Lösung ausprobiert.
Um es zu testen, habe ich
in
/etc/resolvconf/resolv.conf.d/base
undin
/etc/resolvconf/resolv.conf.d/head
Dann habe ich das Netzwerk neu gestartet mit
Das Ergebnis ist, dass
/etc/resolv.conf
wie folgt aussiehtund
nm-tool
gibt an, dass die dnsserversind, die von meinem Router bereitgestellt werden. Auf der anderen Seite sagt das Ausgraben einer Adresse, dass
Wenn ich richtig liege, schließe ich aus all dem, dass
Alles in allem funktioniert es, aber ich glaube nicht, daß es das gewünschte Ergebnis ist. Eine naheliegendere Lösung ist meiner Meinung nach die folgende. bearbeiten
dann hinzufügen
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
was bedeutet, dass der gesuchte Name, wenn er nicht im Cache ist, bei 8.8.8.8 und nicht bei dem von dhcp bereitgestellten Server abgefragt wird.
Eine andere (vielleicht bessere) Möglichkeit 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 den anderen Server zurück. In der Tat sagt nm-tool
Versuchen Sie,
dns-nameservers XXX.XXX.XXX.X
in Ihre/etc/networking/interfaces
Datei einzufügen.