Comment configurer la recherche DNS locale dans Ubuntu 16.10?

9

J'ai fraîchement installé Ubuntu 16.10 et rsyncé une sauvegarde de mon répertoire personnel précédent de kubuntu 16.04 vers ma nouvelle installation. Les choses fonctionnent bien, mais je n'ai pas pu résoudre les adresses locales malgré de nombreux essais et erreurs.

Tout le réseautage semble fonctionner parfaitement. La navigation sur Internet, la recherche DNS d'adresses externes, ssh, etc. sont excellentes. Localement, je peux accéder aux machines via ssh avec leurs adresses, mais pas leurs noms. Tout fonctionne bien en nautilus / samba, ce qui signifie que WINS fonctionne. Il semble que le seul problème soit le DNS du réseau local. J'ai avahi-daemon installé et en cours d'exécution, comme il est venu avec Ubuntu.

J'ai inclus un dépannage, en utilisant << >> pour raccourcir les portions redondantes ou fonctionnant correctement.

$ 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

Remarque: J'ai passé beaucoup de temps à rechercher des solutions "plus anciennes", avant que Ubuntu ne passe à systemd.resolved en 16.10. Ils n'ont pas fonctionné pour moi et je ne pense pas que ce soit une question en double à des questions similaires avec des configurations Ubuntu antérieures.

mayypile
la source
1
Cela se produit également sur les systèmes mis à niveau ... Je suppose que cette question recevra beaucoup de visites dans les jours :)
Michele d'Amico
Je déteste les problèmes de réseautage, ce sont les pires. Et celui-ci me mord fort, mais d'une manière légèrement différente. La réponse ne l'a pas corrigé pour moi. Voir ma question pour mes détails.
moodboom

Réponses:

18

Si je comprends bien votre question, vous ne pouvez pas résoudre vos noms d'hôtes locaux.

Sur cela, j'ai eu le même problème avec une nouvelle installation de 16.10, et il s'avère que c'est un problème connu ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071 ) lié à libnss -résoudre dans systemd.

La solution dans mon cas était de revoir votre fichier /etc/nsswitch.conf et de noter spécifiquement comment NSS résout vos hôtes:

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

Cette logique semble échouer dans la résolution du nom d'hôte avant même d'accéder au mDNS.

La modification de la ligne d'hôtes vers une version antérieure à 16.10 corrige cette erreur logique apparente:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

Le lien de rapport de bogue inclus suggère qu'une future version du package systemd pourrait éventuellement corriger ce problème.

Riches

richbl
la source
1
Réponse fantastique avec lien et exemples! J'ai joué avec votre suggestion et j'ai constaté que tant que je déplaçais "mdns4_minimal" avant "[NOTFOUND = return]" et "[! UNAVAIL = return]" cela fonctionnait. J'ai toujours besoin du suffixe .local pour les adresses locales.
mightypile
1
Il existe un bogue plus spécifique pour libnss-resolver et mdns sur bugs.launchpad.net/ubuntu/+source/systemd/+bug/1641328
nitrate
7

Une solution alternative qui modifie automatiquement /etc/nsswitch.confsupprime [ modifier: et réinstaller] libnss-resolve :

sudo apt purge libnss-resolve
sudo apt install libnss-resolve
azote
la source
+1. C'est une solution supérieure pour ceux d'entre nous qui aiment garder la configuration du système intacte pour les packages avec lesquels nous n'avons pas tourné le dos. Cela devrait être fait par l'outil de mise à niveau / installateur maintenant ... 16.10 existe depuis un certain temps.
eskhool