Wie stelle ich meinen DNS ein, wenn resolv.conf überschrieben wird?

Wie stelle ich meinen DNS ein, wenn resolv.conf überschrieben wird?

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 dnsmasqDokumentation 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/basenicht angezeigt ./etc/resolv.confsudo 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:

  1. Es klappt.
  2. Es erfordert die geringste Anzahl von Änderungen und
  3. 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 baseDatei 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, resolvconfwerden 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 headDatei 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.confdie mit diesen Dateien erstellt wird. Sie hätten also die nameserveroben für die Datei beschriebenen Zeilen genauso gut auch basezur headDatei 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/baseund

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.confsieht 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-toolgibt 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

  1. nur der "Kopf"-Teil wird von resolvonf gelesen: der "Basis"-Teil wird irgendwie von dnsmasq gesteuert
  2. 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
  3. 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 dnsmasqverwendeten 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.confallerdings 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 restartund sudo service network-manager restart.

Ich habe sudo tail -n 200 /var/log/syslogmein Syslog überprüft und sichergestellt, dass dnsmasqdie 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

  1. Suche 'Netzwerkverbindung'

  2. Öffne es

                        Bildbeschreibung hier eingeben

  3. Wählen Sie dann entweder WLAN oder Ethernet oder was auch immer Sie verwenden und klicken Sie auf Bearbeiten. Sie erhalten Folgendes:

                  Bildbeschreibung hier eingeben

  4. Wählen Sie IPv4 in Tabs

  5. Wählen Sie nur Adressen in der Methode aus

  6. Geben Sie unten Ihren DNS-Namen ein und speichern Sie ihn

  7. Du bist fertig

verwandte Informationen