Ubuntu: Wie konfiguriere ich DNS-Server in / etc / network / interfaces korrekt für resolvconf?

11

Alle Beispiele, die ich für Konfigurationen ( /etc/network/interfaces) gesehen habe, haben gezeigt, dass Sie eine Schnittstelle konfigurieren und dann darunter die folgenden dns-*Zeilen angeben:

auto eth0
iface eth0 inet static
        ...
        dns-nameservers 127.0.0.2
        dns-search example.com my.example.com

Jetzt ist mir bekannt, dass das DNS-Protokoll unabhängig vom Transportmechanismus ist. Daher sollte es nicht per se falsch sein, eine IPv6-Adresse in die dns-nameserversLeitung einzufügen.

Da ich jedoch sowieso auch die Schnittstelle für IPv6 konfiguriere, war es sinnvoll, die dns-nameserversZeile dort hinzuzufügen :

iface eth0 inet6 static
        ...
        dns-nameservers ::2
        dns-search example.com my.example.com

... oder doch? Denn beim resolvconfErstellen werden /etc/resolv.confeinfach alle IPv6-DNS-Server ignoriert. Es scheint auch zu ignorieren dns-searchund dns-domain. Die einzige Zeile, die es zu ehren scheint, ist die dns-nameserversZeile aus der IPv4-Konfiguration für eth0.

Was ist die richtige Methode zum Konfigurieren von DNS-Servern?


Weitere Indizien dafür, warum es Teil der jeweiligen ifaceStrophe sein sollte. Zitat aus man 8 resolvconf:

Mit dem ifup(8) Programm können Netzwerkschnittstellen gemäß den Einstellungen in konfiguriert werden /etc/network/interfaces(5). ifupFügen resolvconfSie dns-der entsprechenden ifaceZeilengruppe in Zeilen hinzu, um Push-Nameserver-Informationen zum Konfigurieren einer Schnittstelle zu erhalten /etc/network/interfaces. Um Nameserver-Adressen hinzuzufügen, fügen Sie eine Zeile hinzu, die mit beginnt dns-nameservers.

0xC0000022L
quelle
Wenn Sie dieses Problem weiterhin haben, veröffentlichen Sie bitte Ihre gesamte Datei / etc / network / interfaces und die Ausgabe von / usr / share / resolvconf / dump-debug-info, die im Paket resolvconf in Ubuntu 15.04 enthalten ist.
jdthood

Antworten:

8

Es ist richtig, dns- * -Optionen entweder in die Zeilengruppe iface eth0 inet staticoder in die Zeilengruppe einzufügen iface eth0 inet6 static. Die Optionen werden aktiv, wenn die logische Schnittstellendefinition, zu der sie gehören, aktiv wird.

Ich habe dies gerade auf meinem eigenen Ubuntu 15.04-Computer getestet, den ich normalerweise mit DHCP konfiguriere. Ich habe NetworkManager deaktiviert und / etc / network / interfaces so bearbeitet, dass es so aussieht:

iface eth0 inet static
        address 192.168.178.22
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8
        dns-search foo

iface eth0 inet6 static
        address fe80::390:f5ff:fef7:96b9/64
        dns-nameservers ::2
        dns-search bar

Ich habe es dann getan

$ sudo ifup eth0

Die Ergebnisse:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:90:f5:f7:96:b9  
      inet addr:192.168.178.22  Bcast:192.168.178.255  Mask:255.255.255.0
      inet6 addr: fe80::390:f5ff:fef7:96b9/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2114609 errors:0 dropped:1 overruns:0 frame:0
      TX packets:1757693 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2033346950 (2.0 GB)  TX bytes:1318685445 (1.3 GB)
      Interrupt:20 Memory:f7e00000-f7e20000 

$ 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 ::2
nameserver 8.8.8.8
search bar foo

Beachten Sie, dass die Optionen Adressen, DNS-Nameserver und DNS-Suche aus beiden Zeilengruppen jetzt aktiv sind.

[Aktualisiert am 30. Mai 2015]

jdthood
quelle
Dies ist das Verhalten, das ich in meiner Frage beschrieben habe. Wie kann ich auch die IPv6-DNS-Server veranlassen /etc/network/interfacesund resolvconfhinzufügen? Sie werden feststellen, dass dieses Teil in Ihrem produzierten Teil fehlt /etc/resolv.conf.
0xC0000022L
1
Sie haben geschrieben: "Wenn resolvconf /etc/resolv.conf erstellt, werden einfach alle IPv6-DNS-Server ignoriert." Was Sie sehen, ist wahrscheinlich ein Effekt des Abschneidens der Nameserver-Liste nach der ersten Loopback-Adresse durch resolvconf. Suchen Sie in resolvconf (8) nach dem Abschnitt, der die Umgebungsvariable "TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS" beschreibt.
jdthood
Nein, meine Liste der DNS-Server enthält keine, die die Loopback-Adresse abhören. Laut Manpage wäre die Konfiguration auf diese Weise nicht betroffen. Das Beispiel, das ich gegeben habe, war lediglich, nicht zu viele Details preiszugeben. In einem lokalen Netz befindet sich jedoch kein DNS.
0xC0000022L
Hallo. Ich habe gerade meine Antwort aktualisiert, um die Ergebnisse anzuzeigen, wenn ich eine IPv6-Adresse anstelle einer IPv4-Adresse als Argument für die dns-nameserversOption in / e / n / i verwende. Zusammenfassung: Alles funktioniert wie erwartet.
jdthood
danke, es funktioniert also am 15.04, was mir bei den LTS-Versionen 14.04 und 12.04 allerdings nicht hilft. Danke trotzdem.
0xC0000022L
1

Auf meinem RPi mit Ubuntu 16.04.2 LTS waren meine Ergebnisse wie folgt:

Hinweis: Ich habe NetworkManager deinstalliert und nur resolvconf verlassen, um seine Aufgaben zu erledigen. (Dies ist ein fester Server, daher ändern sich die Dinge im Netzwerk nicht wesentlich.)

WENN ich die Zeilen dns-search und dns-nameserver nur auf EINER Schnittstelle (der primären, verkabelten), aber nicht auf der anderen (wlan0) hatte, dann wäre dies beim Neustart ungefähr 95% der Zeit meine /etc/resolv.conf-Datei leeren.

zB Wenn meine Schnittstellendatei so aussah:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

DANN würde meine resolv.conf nach einem Neustart folgendermaßen aussehen:

# 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

Bei ein oder zwei Neustarts bemerkte ich jedoch, dass es das hatte, was ich wollte, z

# 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 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

Lösung Als ich BEIDEN Schnittstellen (wired und wlan0) die Zeilen dns-search und dns-nameserver gab, funktionierte alles bei jedem Neustart einwandfrei (bisher sowieso)

dh die folgende Schnittstellendatei funktioniert bei mir:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

und gibt mir nach jedem Neustart (bisher) die folgende korrekte 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 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

Ich gehe davon aus, dass diese doppelte Konfiguration normal ist, wenn auch etwas redundant.

Schlussfolgerung: Wenn einer Schnittstelle (außer lo0) Informationen zu DNS-Suche und DNS-Nameserver fehlen, fügt resolvconf nichts in Ihre Datei resolv.conf ein. (Es ist, als ob ifup die wlan0-Schnittstelle als zweites ausgeführt und ifup resolv.conf oder ähnliches gelöscht hätte.)

Ich bin mir nicht sicher, ob dies ein Fehler ist oder nicht, aber ich fühle mich falsch.

Wille
quelle
-1

Das Bearbeiten von Netzwerkschnittstellen, um die Verwendung Ihres benutzerdefinierten DNS hinzuzufügen, ist eine Möglichkeit. Um die systemweite resolv.conf dauerhaft mit Ihrem benutzerdefinierten DNS-Nameserver zu ändern, müssen Sie das resolvconf-Paket installieren (sofern es nicht bereits standardmäßig installiert ist) und seine Basis füllen Konfigurationsdatei mit Ihren benutzerdefinierten DNS-Nameserver-Werten. Hoffe, diese kurze Anleitung hilft Ihnen bei weiteren Konfigurationen bezüglich resolv.conf DNS-Einträgen http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/

Matei Cezar
quelle
2
Willkommen bei Unix & Linux! Dies mag zwar theoretisch die Frage beantworten, es wäre jedoch vorzuziehen , hier mehr wesentliche Teile dieses Handbuchs aufzunehmen und den Link als Referenz bereitzustellen.
Anthon
@MateiCezar: Könnten Sie bitte näher darauf eingehen? Ich bin mir nicht sicher, ob Sie meine Frage bis zum Ende gelesen haben. Paket resolvconf ist installiert. Ich möchte /etc/network/interfacesmeine DNS-Server für IPv4 bzw. IPv6 konfigurieren .
0xC0000022L
-1

Sie möchten IPv6-DNS-Server unter /etc/network/interfaces verwenden. Fügen Sie Ihre IPv6-DNS-Namenseinträge einfach wie folgt in die spezifische Netzwerkschnittstelle ein:

dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888. 

Verwenden Sie zum dauerhaften Hinzufügen von IPv6-DNS-Namen zu resolv.conf denselben Link, den ich unten hinzugefügt habe, und bearbeiten Sie die resolvconf-Basisdatei, indem Sie Ihre eigenen IPv6-DNS-Namen hinzufügen:

nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888 

Um / etc / network / interfaces mit IPv6 zu konfigurieren, verwenden Sie dieses Handbuch http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/ und ersetzen Sie IPv4 durch IPv6 the as es folgt: auto eth0

iface eth0 inet6 static
        address 2800:210:0:1::3
        netmask 64
        gateway 2800:210:0:1::1
        dns-nameservers 2001:4860:4860::8844 
Matei Cezar
quelle
Ihre Formatierung wurde korrigiert. Wiederum stellt meine Frage klar, dass dies nicht dazu führt, dass diese DNS-Server für IPv6 hinzugefügt werden /etc/resolv.conf. Wenn dies für Sie irgendwie funktioniert, wäre es hilfreich, die genaue Systemversion zu kennen.
0xC0000022L
Lassen Sie mich das klarstellen ... Sie möchten IPv6-DNS-Resolver aus / etc / network / interfaces verwenden und irgendwie funktioniert das Hinzufügen in dieser Datei für Sie nicht?
Matei Cezar
Ich kann sie gut hinzufügen /etc/network/interfaces. Was nicht passiert, ist, dass sie so übertragen werden, /etc/resolv.confwie sie sollten. Und ich versuche herauszufinden, was ich falsch mache, ja.
0xC0000022L
Hast du es immer noch nicht verstanden? Diese DNS-Einträge von / etc / network / interfaces werden nach /etc/resolv.conf übertragen oder nicht? Obwohl diese Nameserver-Einträge von Schnittstellen niemals an /etc/resolv.com übertragen oder geschrieben werden, arbeiten sie von dieser Netzwerkkarte aus eigenständig und sind nicht systemweit implementiert. Nur die DNS-Datei /etc/resolv.conf wird von den Schnittstellen verwendet, denen dnsnameservers-Einträge fehlen.
Matei Cezar
Entschuldigung ... aber ich verstehe immer noch nicht, was Sie mit diesen DNS-Nameserver-Einträgen erreichen wollen.
Matei Cezar
-1

Warum implementieren Sie diese IPv6-DNS-Nameserver nicht direkt in der systemweiten Datei /etc/resolv.conf, indem Sie die resolvconf-Basisdatei wie in meiner vorherigen Antwort mit dem Link vorgeschlagen bearbeiten und weiterhin die Netzwerkschnittstellendatei verwenden? Sie können in /etc/resolv.conf eine Reihe von DNS-IPv6-Nameservern hinzufügen. Wenn Sie andere IPv6-Nameserver für eine bestimmte Netzwerkkarte verwenden möchten, verwenden Sie diese nur in / etc / network / interfaces.

bytelinux com
quelle
was Sie in Ihrem letzten Satz erwähnen ist genau der Grund , warum ich will nicht die resolvconf Basis Konfiguration verwendet werden und es ist genau das, was ich bin versucht. Darüber hinaus ist es genau das, was versagt.
0xC0000022L
OK ich habe es! Aber warum möchten Sie die Dinge auf diese Weise implementieren? In beiden Fällen müssen diese DNS-Nameserver nur systemweit zugänglich sein. Gibt es einen Grund, sie von Netzwerk / Schnittstellen auf resolv.conf zu übertragen, wenn Sie sie einfach in beide schreiben könnten? Dateien und Sie sind fertig!?
Bytelinux com
Ich bin mir nicht sicher, wie viele Computer Sie verwalten, aber für mich ist es genug, um mein Leben zu erleichtern. Da /etc/network/interfacessoll den Job machen, versuche ich herauszufinden, was ich falsch mache.
0xC0000022L