Falscher Nameserver von resolvconf und NetworkManager gesetzt

34

Mein DNS-Server ist 192.168.1.152.

Dieser DNS wird Clients von DHCP bereitgestellt. Die Windows-Clients in meinem LAN lösen Namen mithilfe dieses DNS ordnungsgemäß auf, meine Ubuntu-VM jedoch nicht.

Die VM ist für das Bridge-Netzwerk eingerichtet und der DNS-Server wird ordnungsgemäß bereitgestellt, meine lokalen Hostnamen werden jedoch nicht von nslookup oder Browsern aufgelöst.

Hier ist eine nslookupmeiner lokalen Domains:

# nslookup unraid.local
Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find unraid.local: SERVFAIL

Folgendes sollte mithilfe meines DNS-Servers behoben werden:

# nslookup unraid.local 192.168.1.152
Server:     192.168.1.152
Address:    192.168.1.152#53

Name:   unraid.local
Address: 192.168.1.152

/etc/resolv.conf hat einen falschen Nameserver:

# 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
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53

Ich habe diesen Befehl ausgeführt. Verwirrenderweise gibt es unter DNS-Server den richtigen Server (und mein Standard-Gateway) an.

root@ubuntu:~# systemd-resolve --status
Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 2 (ens33)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.152
                      192.168.1.1

Ich möchte die IP des DNS-Servers in einer Konfigurationsdatei nicht "fest codieren", da ich sie nicht auflösen kann, wenn ich das Netzwerk ändere.

Wie kann ich resolvconf und NetworkManager dazu bringen , die IP des DHCP-Servers automatisch festzulegen /etc/resolv.conf?

FireSpore
quelle

Antworten:

37

Versuchen Sie /etc/systemd/resolved.conf, den gewünschten DNS-Server zu bearbeiten :

ändere das:

[Resolve]
#DNS=

Dazu (aber verwenden Sie das, was Sie wollen - dies ist ein Beispiel):

[Resolve]
DNS=192.168.1.152

Starten Sie danach den Dienst neu:

service systemd-resolved restart

Und wenn Sie den Status überprüfen, sollten Sie sehen

$ systemd-resolve --status
Global
         DNS Servers: 192.168.1.152

      DNSSEC NTA: 10.in-addr.arpa
                  16.172.in-addr.arpa
                  168.192.in-addr.arpa
                  17.172.in-addr.arpa
                  18.172.in-addr.arpa
                  19.172.in-addr.arpa
Leandro Noskoski
quelle
Hier ist der systemd-resolve --status nach dem Wechsel /etc/systemd/resolved.conf pastebin.com/AeUFQkyB Browser auch noch zu lösen Namen scheitern.
FireSpore
12
systemd ist so kaputt. DHCP teilt dem Host mit, was DNS sein soll (und eine Reihe anderer Netzwerkeinstellungen). Sie sollten keine Dateien auf dem Host ändern müssen, damit dies funktioniert.
Teknopaul
4
Sieht nicht optimal aus, müssen Sie dies jedes Mal tun, wenn Sie den DNS-Server / das DNS-Netzwerk ändern
Victor
1
Sie müssten jedes Mal neu konfigurieren, wenn sich die DNS-IP ändert (z. B. in verschiedenen Netzwerken).
Victor
34

Bekannte systemd Fehler .

Temporäre Problemumgehung, ohne dass eine Neukonfiguration erforderlich ist, wenn sich die DNS-IP ändert:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
reboot
teknopaul
quelle
2
Diese Lösung funktionierte etwas, Host- und Nslookup-Befehle lösen Namen richtig auf, aber Wget und Browser sind es nicht
FireSpore
1
das ist richtig ... der aktuelle Fehler ist, dass der Link zu /etc/resolv.confkommt, von /run/systemd/resolve/stub-resolv.confdem Bollox ist, es sollte /run/systemd/resolve/resolv.conf beachtet werden, dass /etc/resolv.confes in beiden Fällen nicht wirklich existiert
Mr Heelis
@FireSpore: funktioniert das pingdann? hostund nslookupHostnamen anders auflösen als pingoder wget. Möglicherweise müssen Sie nach /etc/nsswitch.confeiner Lösung suchen.
HongboZhu
9

Ich habe endlich eine Lösung für dieses Problem für Ubuntu 17.10. Standardmäßig wird diese Ubuntu-Version verwendet systemd-resolved, von der ich hoffe, dass sie für die nächsten Versionen stabil bleibt.

Gehen Sie folgendermaßen vor, um benutzerdefinierte DNS anstelle des vom lokalen System aufgelösten Caches zu verwenden:

  1. füge neue Nameserver hinzu. Bearbeiten Sie die Datei /etc/systemd/resolved.confals Sudoer. Hier habe ich den DNS-Eintrag auskommentiert und meine DNS platziert [Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4

  2. storniere den aktuellen Symlink zu /etc/resolv.conf

  3. erstelle einen neuen symlink sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
  4. Starten Sie den Dienst neu sudo service systemd-resolved restart
  5. Starten Sie den Netzwerkmanager neu sudo systemctl restart networking

Und jetzt, wenn Sie zu einem Namen graben, der von Ihrem DNS zur Verfügung gestellt wird, sollten Sie den aufgelösten Satz sehen dig nexus.default.svc.cluster.mydomain

Der letzte Schritt besteht darin, die Auflösungsreihenfolge in zu aktualisieren /etc/nsswitch.conf, indem Sie die DNS vor dem mdns4_minimal platzieren

hosts           files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname
Fabio Fumarola
quelle
1
Sie müssten jedes Mal neu konfigurieren, wenn sich die DNS-IP ändert (z. B. in verschiedenen Netzwerken).
Victor
Victor hast du eine beste lösung? Dies ist auch der
Fall,
Diese Antwort funktioniert sowohl für statische als auch für dynamische Konfigurationen: askubuntu.com/a/974482/343617
Victor
Danke, die Lösung, auf die ich hingewiesen habe, war statisch. Ich stimme zu
Fabio Fumarola
Dies funktionierte gerade für mich bei einer neuen 18.04 Installation
JamesCW
1

Ich habe ein Skript zusammengestellt, das das Problem von Netplan umgeht, das derzeit nicht die Möglichkeit unterstützt, von DHCP bereitgestellte DNS-Server und die Domänen-Suchreihenfolge zu ersetzen. Es erstellt die Netplan-yaml-Datei und konfiguriert systemd-resolved so, dass es wie erwartet funktioniert.

################## Start Netplan config (renderer: NetworkManager)
#  Some useful commands for customisation
# NetConn=$(nmcli device show|grep GENERAL.CONNECTION|head -n1|awk '{print $2}')
# IP=$(nmcli device show|grep IP4.ADDRESS|head -n1|awk '{print $2}')
# GATEWAY=$(nmcli device show|grep IP4.GATEWAY|head -n1|awk '{print $2}')
# sed -i 's/renderer: networkd/renderer: NetworkManager/' //etc/netplan/01-netcfg.yaml
######################################
systemctl start NetworkManager
NIC=$(nmcli device show|grep GENERAL.DEVICE|head -n1|awk '{print $2}')

#####   create Netplan yaml config file
cat >/etc/netplan/01-netcfg.yaml <<EOF 
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
  network:
   version: 2
   renderer: NetworkManager
   ethernets:
EOF
echo "    ${NIC}:" >> /etc/netplan/01-netcfg.yaml
cat >>/etc/netplan/01-netcfg.yaml <<EOF
      dhcp4: yes
      nameservers:
        search: [abc.domain.edu, def.domain.edu]
        addresses: [10.10.11.22, 10.10.11.23]

EOF

#work around DNS resolv bug
systemctl stop systemd-resolved
sed -i 's/#DNS=/DNS=10.10.11.22 10.10.11.23/' /etc/systemd/resolved.conf
sed -i 's/#Domains=/Domains=abc.domain.edu def.domain.edu' /etc/systemd/resolved.conf
systemctl start systemd-resolved
systemctl restart NetworkManager
netplan apply
reboot
############### End Netplan Config
Wildpirscher
quelle
1

Die Lösung, die für mich funktioniert hat, finden Sie hier in meinem Blog

Verwenden Sie den Nano-Editor, um diese 2 Dateien zu bearbeiten

nano /etc/resolv.conf
nano /etc/resolvconf/resolv.conf.d/head

Fügen Sie die DNS-Server hinzu, die Sie verwenden möchten

nameserver 9.9.9.9
nameserver 127.0.0.1

Starten Sie dann den Dienst neu

service systemd-resolved restart

Letzter Check:

cat /etc/resolv.conf

Mach nslookup

nslookup google.com 

Ich habe dies nur verwendet und es hat das Problem auf meinem Laptop zu Hause behoben, aber irgendwann in der Zukunft, wenn ich nicht in meinem Heimnetzwerk bin, kann ich sehen, dass es Probleme verursachen wird, weil der primäre und sekundäre DNS-Server immer noch mein Zuhause sein werden Server mit ihren LAN-Adressen.

ookangzheng
quelle
2
Sie müssten jedes Mal neu konfigurieren, wenn sich die DNS-IP ändert (z. B. in verschiedenen Netzwerken).
Victor
es ist nicht elegant, aber es funktioniert, manchmal sabotiert es meine Schlafenszeit.
Rodrigo Ferrari
Die Bearbeitung /etc/resolv.conffunktioniert nicht, da die Datei beim systemd-resolvedNeustart überschrieben wird . Einfach bearbeiten /etc/systemd/resolved.conf. Siehe meine Antwort hier: askubuntu.com/questions/977243/ubuntu-17-10-disable-netplan/…
EnzoR
1

Dein /etc/resolv.confist nicht das Problem. systemd-resolvedDer Standardwert ist "nicht konfiguriert", sodass alle Suchvorgänge fehlschlagen. Sie können sich gerne über Unconfigured vs A Reasonable Default austoben.

Fügen Sie Nameserver manuell hinzu systemd-resolved. (Bearbeiten von Olorins Kommentar unten mkdir, um den Pfad /etcnicht zu korrigieren /lib, um Systemaktualisierungen zu überleben)

sudo mkdir -p /etc/systemd/resolved.conf.d
sudo nano /etc/systemd/resolved.conf.d/00-my-dns-server-is.conf

Hinzufügen:

[Resolved]
Cache=yes
DNS=192.168.1.152

Dann...

sudo systemctl daemon-reload

systemd-resolvedist klug, aber von Paketbetreuern nicht so konfiguriert, wie es ist, es SCHAUT nur dumm, weil Paketbetreuer nicht an einen vernünftigen Standard glauben. Wir können dort 13 Internet-Root-Server, auch bekannt als "DJB Way", oder 10 OpenNic-Server unterbringen: https://pastebin.com/JBfYVVtG oder die drei schnellsten OpenNic-Server, gemessen von namebench. Plus ISP Nameserver, klar. Plus Google, klar. systemd-resolvedist nicht das problem. Ich bin das Problem.

BobDodds
quelle
Obwohl Sie wahrscheinlich keine Datei bearbeiten möchten, /usr/libwerden diese beim Upgrade des Pakets wahrscheinlich überschrieben. Ich denke, eine entsprechende Datei irgendwo in /etc/systemdist der Weg zu gehen (es sollte bereits /etc/systemd/resolved.confbereit sein, von Administratoren bearbeitet zu werden).
Olorin
1
mann aufgelöst.conf.d, mit dem d, ja /etc/systemd/resolved.d ist der platz. Mir ist aufgefallen, dass wir oft mkdir /etc/[path‹.d müssen. bob @ laptop l /etc/systemd/resolved.conf.d ls: Kein Zugriff auf '/etc/systemd/resolved.conf.d': Keine solche Datei oder kein solches Verzeichnis
BobDodds
0

Auf meinem System habe ich einen fehlerhaften Symlink gefunden: /etc/resolv.confWar ein Symlink, der auf zeigt/run/systemd/resolve/stub-resolv.conf

Diese Datei enthält nur eine Zeile:

nameserver 127.0.0.53#53

Infolgedessen fehlte häufig die DNS-Suche des lokalen Netzwerks.

Also wechselte ich stattdessen /etc/reolv.confzu/run/systemd/resolve/resolv.conf

und jetzt funktioniert es richtig.

Bánó Gábor
quelle
0

Es ist seltsam, aber die einzige Lösung, die für mich unter Ubuntu 18.04 funktioniert hat, war die, die ich hier gefunden habe :

Ändern Sie zunächst, /etc/resolv.confindem Sie den gewünschten Nameserver einstellen :

# nano /etc/resolv.conf

Stellen Sie zum Beispiel ein,

nameserver 8.8.8.8

Und dann tu es

# chattr +i /etc/resolv.conf

Dies schützt die /etc/resolv.confDatei, so dass niemand sie ändern kann, einschließlich des Root-Benutzers.

Artem S
quelle
-3

Ich habe das gleiche Problem. Bei jedem Neustart wird nichts behoben. Ich habe alles deinstalliert und es bereits etwa 50 Mal neu installiert. Es ist einfach nur kaputt.

Das Update lautet also ... "Nehmen Sie bei jedem Start Ihres PCs ein paar Einstellungen vor, damit 90% der Hostnamen aufgelöst werden können. Wget- und Apt-Get-Updates und -Upgrades schlagen jedoch ohne Grund nach dem Zufallsprinzip fehl."

cat /etc/systemd/resolved.conf

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Wenn Sie Ubuntu 17.10 Desktop verwenden, müssen Sie die Datei bearbeiten, in der steht: DIESE DATEI NICHT BEARBEITEN BLAH BLAH BLAH

Nun, das ist die einzige Möglichkeit, wie es funktioniert ~!

root@nas:~# cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 8.8.8.8

Entfernen Sie also die IP-Adresse 127.0.0.53 als Nameserver und geben Sie eine andere ein, z. B. Google. Es scheint, dass meine tatsächliche DNS-IP-Adresse auch keine Hostnamen auflöst (obwohl sie auf 10 anderen Computern und Geräten im Haus funktioniert), aber Google funktioniert einwandfrei.

Schwärmerei
quelle