Jak skonfigurować lokalne wyszukiwanie DNS w Ubuntu 16.10?

9

Świeżo zainstalowałem Ubuntu 16.10 i zsynchronizowałem kopię zapasową mojego poprzedniego katalogu domowego z kubuntu 16.04 do mojej nowej instalacji. Wszystko działa dobrze, ale nie udało mi się rozwiązać adresów lokalnych pomimo wielu prób i błędów.

Wydaje się, że wszystkie sieci działają bez zarzutu. Przeglądanie Internetu, wyszukiwanie adresów zewnętrznych DNS, ssh itp. Są świetne. Lokalnie mogę uzyskać dostęp do maszyn poprzez ssh z ich adresami, ale nie ich nazwami. Wszystko działa dobrze w nautilus / samba, co oznacza, że ​​WINS działa. Wydaje się, że jedynym problemem jest DNS sieci lokalnej. Mam zainstalowanego i uruchomionego demona avahi, podobnie jak w Ubuntu.

Włączyłem rozwiązywanie problemów, używając << >>, aby skrócić zbędne lub poprawnie działające części.

$ 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

Uwaga: Sporo czasu poświęciłem na „starsze” rozwiązania, zanim Ubuntu przeszedł na systemd. Rozwiązany w 16.10. Nie działały one dla mnie i nie sądzę, aby było to duplikat pytań podobnych do wcześniejszych konfiguracji Ubuntu.

mightypile
źródło
1
Dzieje się tak również w ulepszonych systemach ... Wydaje mi się, że to pytanie będzie często odwiedzane w dniach :)
Michele d'Amico
NIENAWIDZĘ problemów z siecią, są najgorsze. A ten mocno mnie gryzie, ale w nieco inny sposób. Odpowiedź nie naprawiła tego dla mnie. Zobacz moje pytanie, aby uzyskać szczegółowe informacje.
moodboom

Odpowiedzi:

18

Jeśli dobrze rozumiem twoje pytanie, nie możesz rozwiązać swoich lokalnych nazw hostów.

Miałem ten sam problem ze świeżą instalacją 16.10 i okazuje się, że jest to znany problem ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071 ) związany z libnss -resolve w systemd.

W moim przypadku rozwiązaniem było przejrzenie pliku /etc/nsswitch.conf i zwrócenie szczególnej uwagi na sposób, w jaki NSS rozwiązuje problemy z hostami:

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

Wydaje się, że ta logika kończy się niepowodzeniem rozpoznawania nazwy hosta, zanim jeszcze przejdzie do mDNS.

Edycja linii hostów z powrotem do wersji wcześniejszej niż 16.10 naprawia ten oczywisty błąd logiczny:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

Dołączony link do raportu o błędzie sugeruje, że przyszłe wydanie pakietu systemowego może ostatecznie rozwiązać ten problem.

Bogaty

richbl
źródło
1
Fantastyczna odpowiedź z linkiem i przykładami! Bawiłem się z twoją sugestią i odkryłem, że dopóki przenosiłem „mdns4_minimal” przed „[NOTFOUND = return]” i „[! UNAVAIL = return]” to działało. Nadal potrzebuję sufiksu .local dla adresów lokalnych.
mightypile 18.10.16
1
Bardziej szczegółowy błąd dla libnss-resolver i mdns znajduje się na stronie bugs.launchpad.net/ubuntu/+source/systemd/+bug/1641328
azot
7

Alternatywnym rozwiązaniem, które automatycznie edytuje /etc/nsswitch.confjest usunięcie [ edycja: i ponowna instalacja] libnss-resolve :

sudo apt purge libnss-resolve
sudo apt install libnss-resolve
azot
źródło
+1. Jest to doskonałe rozwiązanie dla tych z nas, którzy lubią utrzymywać nienaruszoną konfigurację systemu dla pakietów, z którymi się nie spieprzyliśmy. Powinno to już zostać zrobione przez narzędzie do aktualizacji / instalatora ... 16.10 już od jakiegoś czasu.
eskhool