Wie lege ich eine statische DNS-Nameserver-Adresse auf Ubuntu Server fest?


7

Ich versuche statisch, DNS-Serveradressen auf meinem Ubuntu-Server festzulegen, der als virtuelle Maschine ausgeführt wird. Ich habe alle Empfehlungen auf den offiziellen Ubuntu-Support-Seiten befolgt, kann aber die von DHCP festgelegten DNS-Server meines ISP einfach nicht loswerden.

Ich habe die br0-Schnittstelle auf der statischen IP-Adresse meines Host-Computers und eth0 auf der VM zugewiesen, um Google DNS und mein eigenes lokales DNS zu verwenden, das auf der zweiten VM ausgeführt wird, indem ich es einstelle /etc/network/interfaces. Ich habe versucht, mit Head-Base- und Tail-Dateien /etc/resolvconf/resolv.conf.d/zu experimentieren, und habe versucht, die Schnittstellenreihenfolge zu mischen, /etc/resolvconf/interface-orderaber als ich den Netzwerkdienst neu startete, habe ich jedes Mal die DNS-Adressen des ISP zurückbekommen.

Gibt es eine Möglichkeit, resolvconf zu deaktivieren und meine resolv.conf-Datei manuell einzurichten, wie ich es bei Red Hat immer getan habe? Oder können Sie mir sagen, welches Hook-Skript ISP-DNSs immer wieder in resolv.conf einfügt? Mein ISP erlaubt mir nicht, die DHCP-Einstellungen auf meinem Router zu ändern, daher kann ich dies nicht so tun.

Warum ist eine so einfache Sache wie das Einstellen von DNS-Servern so kompliziert geworden?

Antworten:


5

1: Resolvconf schreibt seine dynamische Datei resolv.conf unter /run/resolvconf/resolv.conf. /etc/resolv.confist eine symbolische Verbindung zum letzteren Ort. Wenn Sie eine statische resolv.conf-Datei verwenden möchten, ersetzen Sie einfach den symbolischen Link /etc/resolv.conf durch eine Datei. Dies wird derzeit unterstützt, aber nicht empfohlen.

2: Soweit ich weiß, wird auf dem betroffenen Computer die Ubuntu Server Edition ausgeführt. In diesem Fall werden Schnittstellen mit dem ifupProgramm konfiguriert, dessen Konfigurationsdatei sich befindet /etc/network/interfaces. Für Schnittstellen, die über die dhcpMethode konfiguriert wurden , wird ifup(normalerweise) dhclientaus dem isc-dhcp-clientPaket verwendet. Dhclient empfängt Nameserver-Informationen vom DHCP-Server und sein Hook-Skript /etc/dhcp/dhclient-enter-hooks.d/resolvconfsendet diese Informationen, an resolvconfdie sie gesendet werden resolv.conf.

Eine Sache, die Sie tun können, ist, /etc/resolvconf/interface-orderso zu bearbeiten , dass eth0.dhcpvorher kommt eth0.dhclient. (Ich gehe davon aus, dass die relevante Schnittstelle ist eth0.) Wenn Sie die Standardeinstellung haben interface-order, können Sie beispielsweise einfach eine Zeile eth0.dhcpvor der Zeile hinzufügen eth*.

--- interface-order_ORIG    2012-11-06 10:12:47.630529145 +0100
+++ interface-order 2012-11-06 10:13:16.410529800 +0100
@@ -9,6 +9,7 @@
 hso*
 em+([0-9])?(_+([0-9]))*
 p+([0-9])p+([0-9])?(_+([0-9]))*
+eth0.dhcp
 eth*
 ath*
 wlan*

Dann fügen Sie eine dns-nameserversZeile der iface eth0Strophe in /etc/network/interfacesmit dem richtigen Name - Server - Adresse.

iface eth0 inet dhcp
    dns-nameservers 1.2.3.4

Da eth0.dhcpvorher kommt eth0.dhclient, wird die richtige Nameserver-Adresse resolv.confvor der falschen eingefügt.

Eine andere Möglichkeit, das unerwünschte Verhalten beim Einfügen der vom DHCP-Server bereitgestellten Nameserver-Adresse zu überschreiben, besteht darin, das dhclient-Hook-Skript zu bearbeiten. Sie können beispielsweise eine Zeile wie die folgende hinzufügen (wobei 1.2.3.4 eine Nameserver-Adresse ist, die Sie verwerfen möchten).

--- resolvconf_ORIG 2012-03-29 22:37:14.000000000 +0200
+++ resolvconf  2012-11-05 20:53:33.312681077 +0100
@@ -54,6 +54,7 @@
            fi
            shopt -s nocasematch
            for nameserver in $new_dhcp6_name_servers ; do
+               [ "$nameserver" = "1.2.3.4" ] && continue

Eine weitere Möglichkeit (eine etwas grobe, da sie vollständig statisch ist) besteht darin, eine Nameserver-Option hinzuzufügen /etc/resolvconf/resolv.conf.d/head.

3: Das Festlegen von DNS-Nameserver-Adressen ist komplizierter geworden, da Computer mobil werden, immer mehr Schnittstellen erhalten und die statische Konfiguration schrittweise durch die automatische Konfiguration ersetzt wird.


+1 zum Löschen des Symlinks und zum Deinstallieren von resolvconf!
ColinM

2
Selbst wenn Sie einen vollständig statischen /etc/resolv.confLink möchten und den Symlink dort löschen, sollten Sie resolvconf dennoch nicht deinstallieren, da andere Programme/etc/resolv.conf aufgrund seiner bloßen Anwesenheit nicht überschreiben .
jdthood

3

Nutzen Sie einfach dhclient (dies verwendet beispielsweise Google DNS). Das ist viel sauberer als die anderen Antworten IMO:

  1. Sichern Sie /etc/resolv.conf: sudo cp /etc/resolv.conf /etc/resolv.conf.auto

  2. Bearbeiten Sie /etc/dhcp[3‹/dhclient.conf (Ubuntu 14.04 lässt die 3 weg): sudo vi /etc/dhcp/dhclient.conf

  3. Wenn es eine Zeile mit Domain-Name-Servern gibt, notieren Sie die IP-Adressen zur späteren Bezugnahme.
  4. Ersetzen Sie diese Zeile durch die folgende Zeile oder fügen Sie sie hinzu: Für IPv4: prepend domain-name-servers 8.8.8.8, 8.8.4.4; Für IPv6: prepend domain-name-servers 2001:4860:4860::8888, 2001:4860:4860::8844;
  5. Jetzt IP freigeben und erneuern: ifdown eth0 && ifup eth0

Starten Sie nun alle von Ihnen verwendeten Netzwerkclients neu (z. B. Chrome oder so weiter).


0

IMO: Dies ist ein Fehler im grafischen Konfigurationstool.

Meine einfachste Lösung besteht darin, die Zeile, die mit "request ..." beginnt, in der Datei /etc/dhcp/dhclient.conf zu kommentieren (oder zu entfernen)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.