GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

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.

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

Dann habe ich das Netzwerk mit

neu gestartet
sudo 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

  1. nur der "head"-Teil wird von resolvonf gelesen:der "base"-Teil wird irgendwie von dnsmasq kontrolliert
  2. 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
  3. 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

Linux
  1. Wie werden Parameter eingestellt, wenn Bash-Skript an Bash übergeben wird?

  2. Linux – Wie überschreibe ich einen VM-Dns-Server?

  3. Wie verwende ich den Dateityp in Vim?

  4. Wie bearbeite ich die resolv.conf?

  5. Wie verwendet man Systemd, um einen Dienst neu zu starten, wenn er ausgefallen ist?

So richten Sie Raspberry Pi als DNS-Server ein

So legen Sie DNS-Nameserver unter Ubuntu 18.04 fest

So richten Sie den Lighttpd-Webserver unter Ubuntu 18.04 ein

resolv.conf wird immer wieder überschrieben, wenn dnsmasq neu gestartet wird, wodurch dnsmasq beschädigt wird

Wie richte ich eine verschlüsselte Auslagerungsdatei unter Linux ein?

Wie lösche ich .fuse_hidden*-Dateien?