Wie konfiguriere ich die lokale DNS-Suche in Ubuntu 16.10?

9

Ich habe Ubuntu 16.10 neu installiert und eine Sicherungskopie meines vorherigen Home-Verzeichnisses von kubuntu 16.04 auf meine neue Installation erstellt. Die Dinge funktionieren gut, aber ich konnte lokale Adressen trotz vieler Versuche und Irrtümer nicht auflösen.

Alle Netzwerke scheinen einwandfrei zu funktionieren. Das Surfen im Internet, die DNS-Suche nach externen Adressen, SSH usw. sind großartig. Vor Ort kann ich über ssh mit ihren Adressen auf Maschinen zugreifen, aber nicht mit ihren Namen. In Nautilus / Samba funktioniert alles einwandfrei, was bedeutet, dass WINS funktioniert. Das einzige Problem scheint das lokale Netzwerk-DNS zu sein. Ich habe Avahi-Daemon installiert und läuft, wie es mit Ubuntu kam.

Ich habe einige Fehlerbehebungsmaßnahmen hinzugefügt, bei denen << >> verwendet wurde, um redundante oder korrekt funktionierende Teile zu verkürzen.

$ nmcli g
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled 

$ ping tendril8 << or tendril8.local >>
ping: tendril8: Name or service not known

$ ping gateway
PING gateway (192.168.1.1) 56(84) bytes of data.
64 bytes from gateway (192.168.1.1): icmp_seq=1 ttl=64 time=4.16 ms

$ ping askubuntu.com
PING askubuntu.com (151.101.129.69) 56(84) bytes of data.
64 bytes from 151.101.129.69 (151.101.129.69): icmp_seq=1 ttl=49 time=43.0 ms

$ nslookup askubuntu.com
Server:     127.0.1.1
Address:    127.0.0.1#53
<< followed by several IP addresses >>

$ nslookup tendril8 << or tendril8.local >>
Server:     127.0.1.1
Address:    127.0.0.1#53
** server can't find tendril8: NXDOMAIN

$ 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 127.0.1.1

$ ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 29 Oct 15 19:30 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files resolve [!UNAVAIL=return] mdns4_minimal dns [NOTFOUND=return]
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Hinweis: Ich habe viel Zeit damit verbracht, "ältere" Lösungen zu untersuchen, bevor Ubuntu zu systemd.resolved in 16.10 wechselte. Sie haben bei mir nicht funktioniert und ich glaube nicht, dass dies eine doppelte Frage zu ähnlichen Fragen mit früheren Ubuntu-Konfigurationen ist.

mächtig
quelle
1
Dies passiert auch auf aktualisierten Systemen ... Ich denke, diese Frage wird in den Tagen viel Besuch bekommen :)
Michele d'Amico
Ich hasse Netzwerkprobleme, sie sind die schlimmsten. Und dieser beißt mich hart, aber auf etwas andere Weise. Die Antwort hat es für mich nicht behoben. Siehe meine Frage für meine Details.
Moodboom

Antworten:

18

Wenn ich Ihre Frage richtig verstehe, können Sie Ihre lokalen Hostnamen nicht auflösen.

In diesem Fall hatte ich das gleiche Problem mit einer Neuinstallation von 16.10, und es stellte sich heraus, dass es sich um ein bekanntes Problem ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071 ) im Zusammenhang mit libnss handelt -auflösen in systemd.

In meinem Fall bestand die Lösung darin, Ihre Datei /etc/nsswitch.conf zu überprüfen und genau zu notieren, wie NSS Ihre Hosts auflöst:

hosts: files resolve [!UNAVAIL=return] mdns4_minimal [NOTFOUND=return] dns myhostname

Diese Logik scheint die Auflösung des Hostnamens nicht zu erfüllen, bevor sie überhaupt zu mDNS gelangt.

Das Bearbeiten der Host-Zeile auf eine Version vor 16.10 behebt diesen offensichtlichen logischen Fehler:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

Der enthaltene Link zum Fehlerbericht deutet darauf hin, dass eine zukünftige Version des systemd-Pakets dieses Problem möglicherweise beheben wird.

Reich

richbl
quelle
1
Fantastische Antwort mit Link und Beispielen! Ich habe mit Ihrem Vorschlag herumgespielt und festgestellt, dass es funktioniert hat, solange ich "mdns4_minimal" vor "[NOTFOUND = return]" und "[! UNAVAIL = return]" verschoben habe. Ich benötige immer noch das Suffix .local für lokale Adressen.
Mightypile
1
Es gibt einen spezifischeren Fehler für libnss-resolve und mdns unter bugs.launchpad.net/ubuntu/+source/systemd/+bug/1641328
Stickstoff
7

Eine alternative Lösung, die automatisch bearbeitet /etc/nsswitch.confwird, ist das Entfernen von [ Bearbeiten: und Neuinstallieren] libnss-resolve :

sudo apt purge libnss-resolve
sudo apt install libnss-resolve
Stickstoff-
quelle
+1. Dies ist eine überlegene Lösung für diejenigen von uns, die die Systemkonfiguration für die Pakete, mit denen wir nicht herumgespielt haben, intakt halten möchten. Sollte jetzt allerdings vom Upgrade / Installer-Tool erledigt werden ... 16.10 gibt es schon eine Weile.
Eskhool