Come configurare la ricerca DNS locale in Ubuntu 16.10?


9

Ho appena installato Ubuntu 16.10 e ho sincronizzato un backup della mia home directory precedente da Kubuntu 16.04 alla mia nuova installazione. Le cose funzionano bene, ma non sono stato in grado di risolvere gli indirizzi locali nonostante molte prove ed errori.

Tutto il networking sembra funzionare alla perfezione. La navigazione in Internet, la ricerca DNS di indirizzi esterni, ssh, ecc. Sono fantastici. A livello locale, posso accedere alle macchine tramite ssh con i loro indirizzi, ma non i loro nomi. Funziona tutto bene in nautilus / samba, il che significa che WINS funziona. Il singolo problema, a quanto pare, è il DNS di rete locale. Ho avahi-daemon installato e funzionante, come è arrivato con Ubuntu.

Ho incluso un po 'di risoluzione dei problemi, usando << >> per abbreviare porzioni ridondanti o correttamente funzionanti.

$ 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

Nota: ho passato molto tempo a cercare soluzioni "precedenti", prima che Ubuntu passasse a systemd.resolved in 16.10. Non hanno funzionato per me e non credo che questa sia una domanda duplicata a domande simili con precedenti configurazioni di Ubuntu.


1
Questo succede anche su sistemi aggiornati ... Immagino che questa domanda riceverà molta visita nei giorni :)
Michele d'Amico,

Odio i problemi di rete, sono i peggiori. E questo mi sta mordendo forte, ma in un modo leggermente diverso. La risposta non l'ha risolto per me. Vedi la mia domanda per i miei dettagli.
moodboom

Risposte:


18

Se capisco correttamente la tua domanda, non puoi risolvere i nomi host locali.

Su questo, ho avuto lo stesso problema con una nuova installazione di 16.10 e risulta essere un problema noto ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071 ) relativo a libnss -resolve in systemd.

La soluzione nel mio caso è stata quella di rivedere il tuo file /etc/nsswitch.conf e notare in particolare come NSS risolve i tuoi host:

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

Questa logica sembra non riuscire a risolvere il nome host prima ancora di arrivare a mDNS.

La modifica della riga host in una versione precedente alla 16.10 risolve questo errore logico apparente:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

Il link di segnalazione bug incluso suggerisce che una versione futura del pacchetto systemd potrebbe eventualmente correggere questo problema.

Ricco


1
Risposta fantastica con link ed esempi! Ho giocato con il tuo suggerimento e ho scoperto che finché ho spostato "mdns4_minimal" prima di "[NOTFOUND = return]" e "[! UNAVAIL = return]" ha funzionato. Ho ancora bisogno del suffisso .local per gli indirizzi locali.
poderoso

1
C'è un bug più specifico per libnss-resolver e mdns su bugs.launchpad.net/ubuntu/+source/systemd/+bug/1641328
nitrogen

7

Una soluzione alternativa che modifica automaticamente /etc/nsswitch.confè la rimozione di [ modifica: e reinstallazione] libnss-resolve :

sudo apt purge libnss-resolve
sudo apt install libnss-resolve

+1. Questa è una soluzione superiore per quelli di noi a cui piace mantenere intatta la configurazione del sistema per quei pacchetti con cui non abbiamo fatto confusione. Ormai dovrebbe essere eseguito dallo strumento di aggiornamento / installazione ... 16.10 è in circolazione da un po '.
eskhool

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.