it-swarm.com.de

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

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

Ich habe br0 interface auf der statischen IP-Adresse meines Host-Computers und eth0 auf VM zugewiesen, um Google DNS und meinen eigenen lokalen DNS zu verwenden, der auf der zweiten VM ausgeführt wird, indem ich ihn auf /etc/network/interfaces gesetzt habe. Es wurde versucht, in /etc/resolvconf/resolv.conf.d/ mit Head-Base- und Tail-Dateien zu fummeln, und es wurde versucht, die Schnittstellenreihenfolge in /etc/resolvconf/interface-order zu ändern, aber als ich den Netzwerkdienst neu startete, erhielt ich jedes Mal die DNS-Adressen des ISP zurück.

Gibt es eine Möglichkeit, wie ich es bei Red Hat immer getan habe, um resolvconf zu deaktivieren und meine resolv.conf-Datei manuell einzurichten? Oder können Sie mir sagen, welches Hook-Skript ISP-DNSs in der resolv.conf speichert? Mein ISP erlaubt mir nicht, die DHCP-Einstellungen meines Routers zu ändern, daher kann ich das nicht so machen.

Warum ist das Einstellen von DNS-Servern so einfach?

7
Aleks

1: Resolvconf schreibt seine dynamische resolv.conf-Datei unter /run/resolvconf/resolv.conf. /etc/resolv.conf ist eine symbolische Verknüpfung zu letzterem 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 Ubuntu Server Edition ausgeführt. In diesem Fall werden die Schnittstellen mit dem Programm ifup konfiguriert, dessen Konfigurationsdatei /etc/network/interfaces lautet. Für Schnittstellen, die mit der Methode dhcp konfiguriert wurden, verwendet ifup (normalerweise) dhclient aus dem Paket isc-dhcp-client. Dhclient empfängt Nameserver-Informationen vom DHCP-Server und sein Hook-Skript /etc/dhcp/dhclient-enter-hooks.d/resolvconf sendet diese Informationen an resolvconf, wodurch es in resolv.conf gestellt wird.

Sie können /etc/resolvconf/interface-order so bearbeiten, dass eth0.dhcp vor eth0.dhclient steht. (Ich gehe davon aus, dass die relevante Schnittstelle eth0 ist.) Wenn Sie den Standardwert interface-order haben, können Sie beispielsweise einfach eine Zeile eth0.dhcp vor der Zeile eth* hinzufügen.

--- 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*

Fügen Sie dann eine dns-nameservers -Zeile zur iface eth0 -Zeile in /etc/network/interfaces mit der richtigen Nameserver-Adresse hinzu.

iface eth0 inet dhcp
    dns-nameservers 1.2.3.4

Da eth0.dhcp vor eth0.dhclient steht, wird die richtige Nameserver-Adresse in resolv.conf vor der falschen angegeben.

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. Beispielsweise können Sie 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) ist das Hinzufügen einer Nameserver-Option zu /etc/resolvconf/resolv.conf.d/head.

3: Das Festlegen von DNS-Nameserveradressen ist komplizierter geworden, da Computer immer mobiler werden, immer mehr Schnittstellen erhalten und die statische Konfiguration allmählich durch die automatische Konfiguration ersetzt wird.

5
jdthood

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

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

  2. Bearbeite /etc/dhcp[3)/dhclient.conf (Ubuntu 14.04 lässt die 3 weg): Sudo vi /etc/dhcp/dhclient.conf

  3. Wenn eine Zeile mit Domain-Name-Servern vorhanden ist, notieren Sie sich die IP-Adressen, um später darauf zurückgreifen zu können.
  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 jetzt alle verwendeten Netzwerk-Clients neu (wie chrome oder so weiter)

3
rynop

IMO: Dies ist ein Fehler im grafischen Konfigurationstool.

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

0
ubuntu_new69