¿Cómo configurar la búsqueda de DNS local en Ubuntu 16.10?

9

Recientemente instalé Ubuntu 16.10 y realicé una copia de seguridad de mi directorio de inicio anterior desde kubuntu 16.04 a mi nueva instalación. Las cosas funcionan bien, pero no he podido resolver las direcciones locales a pesar de muchas pruebas y errores.

Todas las redes parecen estar funcionando sin problemas. La navegación por Internet, la búsqueda DNS de direcciones externas, ssh, etc. son excelentes. A nivel local, puedo acceder a las máquinas a través de ssh con sus direcciones, pero no sus nombres. Todo funciona bien en nautilus / samba, lo que significa que WINS funciona. Parece que el único problema es el DNS de la red local. Tengo avahi-daemon instalado y ejecutándose, como vino con Ubuntu.

He incluido algunas soluciones de problemas, utilizando << >> para acortar porciones redundantes o que funcionan correctamente.

$ 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: He pasado mucho tiempo buscando soluciones "más antiguas", antes de que Ubuntu cambiara a systemd.resuelto en 16.10. No me han funcionado y no creo que sea una pregunta duplicada a otras similares con configuraciones anteriores de Ubuntu.

mightypile
fuente
1
Esto sucede también en sistemas actualizados ... Supongo que esa pregunta recibirá muchas visitas en los días :)
Michele d'Amico
ODIO los problemas de redes son los peores. Y este me está mordiendo duro, pero de una manera ligeramente diferente. La respuesta no me lo ha solucionado. Vea mi pregunta para mis detalles.
moodboom

Respuestas:

18

Si entiendo su pregunta correctamente, no puede resolver sus nombres de host locales.

En eso, tuve el mismo problema con una nueva instalación de 16.10, y resultó ser un problema conocido ( https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624071 ) relacionado con libnss -resolver en systemd.

La solución en mi caso fue revisar su archivo /etc/nsswitch.conf y observar específicamente cómo NSS resuelve sus hosts:

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

Esta lógica parece fallar la resolución del nombre de host incluso antes de llegar a mDNS.

La edición de la línea de hosts a una versión anterior a la 16.10 corrige este aparente error lógico:

hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname

El enlace de informe de errores incluido sugiere que una versión futura del paquete systemd podría eventualmente corregir este problema.

Rico

richbl
fuente
1
¡Fantástica respuesta con enlace y ejemplos! Jugué con su sugerencia y descubrí que mientras moviera "mdns4_minimal" antes de "[NOTFOUND = return]" y "[! UNAVAIL = return]" funcionaba. Todavía necesito el sufijo .local para las direcciones locales.
mightypile
1
Hay un error más específico para libnss-resolve y mdns en bugs.launchpad.net/ubuntu/+source/systemd/+bug/1641328
nitrógeno
7

Una solución alternativa que edita automáticamente /etc/nsswitch.confes eliminar [ editar: y reinstalar] libnss-resolve :

sudo apt purge libnss-resolve
sudo apt install libnss-resolve
nitrógeno
fuente
+1. Esta es una solución superior para aquellos de nosotros que nos gusta mantener intacta la configuración del sistema para aquellos paquetes con los que no nos hemos metido. Sin embargo, la herramienta de actualización / instalación ya debería hacerlo ... 16.10 ha existido por un tiempo.
eskhool