pingme dice que no puede resolver algún nombre de host ("ping: host desconocido domain.company.local") en una URL, pero cuando uso hosto nslookupen la misma computadora en la línea de comando, las resoluciones funcionan bien (es decir, es rápido y confiable )
¿Qué podría estar causando esto?
Más pruebas: Firefox, wgety pingtienen el mismo problema. Hacer ping a la dirección IP funciona.
SO: Linux (Ubuntu 13.04)
EDITAR Mis /etc/resolv.conflecturas:
nameserver 127.0.1.1
search domain.company.local
netstat informes:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
entonces algo se está ejecutando en este puerto ( nslookuptambién informa que se usa 127.0.1.1como servidor DNS).
No hay /etc/*inetd.conf, así que no estoy seguro de qué aplicación sirve este puerto.
Parece que dnsmasqse usa:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces
--pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1
--conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec
--enable-dbus=org.freedesktop.NetworkManager.dnsmasq
--conf-dir=/etc/NetworkManager/dnsmasq.d
Todos los archivos y carpetas de configuración están vacíos. Como nslookupdice que usa 127.0.1.1#53mi conjetura es que dnsmasqfunciona incluso sin una configuración. Pero, ¿cómo sabe qué DNS primario consultar?
EDIT2 Desactivar dnsmasqcomo lo sugiere harrymc no ayudó. Así que corrí, lo strace pingque me dio esta salida extraña (solo las partes interesantes):
open("/etc/host.conf", O_RDONLY|O_CLOEXEC) = 4
read(4, "127.0.0.1\tlocalhost\n#127.0.1.1\ta"..., 4096) = 613
...
open("/lib/libnss_mdns4_minimal.so.2", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\f\0\0\0\0\0\0"..., 832) = 832
...
mmap(NULL, 2105560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f7829b00000
...
socket(PF_FILE, SOCK_STREAM, 0) = 4
fcntl(4, F_GETFD) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fstat(4, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f782a4f8000
lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
write(4, "RESOLVE-HOSTNAME-IPV4 domain.com"..., 44) = 44
read(4, "-15 Timeout reached\n", 4096) = 20
Así se pingve en lo /etc/hostsque tiene sentido. Luego se carga y mmap()s, lo /lib/libnss_mdns4_minimal.so.2que tiene sentido también.
¿Pero entonces habla con avahi?
Lo que me llevó a esta publicación en el foro: ping no realiza una solicitud de DNS .
Mi /etc/nsswitch.conftambién contiene esta línea:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Si tengo pinguna dirección de trabajo, veo que el proceso también se carga, /lib/libnss_mdns4_minimal.so.2pero luego realiza una consulta DNS a través del puerto 53.
Entonces, supongo que ahora /lib/libnss_mdns4_minimal.so.2es de alguna manera notar que la dirección IP termina con .localy no con .comy luego [NOTFOUND=return]se activa.
¿Cómo puedo solucionar esto?

/etc/resolv.conf?wget.nslookupohostpuedo resolver el nombre y cualquier otra cosa en el sistema no pueden./etc/NetworkManager/NetworkManager.confy comente ladns=dnsmasqlínea (ponga un # delante) y luego haga unsudo restart network-manager. Eso apagará el resolutor local. ( fuente )Respuestas:
Como se describe en detalle en esta publicación de blog , debe editar
/etc/avahi/avahi-daemon.conf:Esto vincula el demonio al dominio en
.alocallugar del predeterminado.local.y reinicia el demonio con:
Nota de la publicación del blog:
Después de eso,
pingynslookupcomenzó a estar de acuerdo.Gracias a harrymc por llevarme por el buen camino.
fuente
pingutilizará nss,nslookupno. (usa lwres y, bueno, enlace, para hablar directamente con un resolutor)Modificando /etc/nsswitch.conf y reemplazando:
por:
trabajó para mi.
fuente
Algo fácil de hacer: editar
/etc/default/avahi-daemonCambia la linea:
a
Reinicia el
avahi-daemon, o mátalo.No me gusta Avahi, y no uso ninguna de sus características. Si realmente desea deshabilitar avahi, modifique
/etc/init/avahi-daemon.conf, similar a lo siguiente:fuente
Parece que la dirección .local no se puede acceder en ubuntu.
Una solución es editar
/etc/nsswitch.confy cambiar esta línea:por esto :
fuente
Si no está compartiendo la conexión con otros dispositivos o máquinas virtuales a través de su computadora, puede desactivar dnsmasq en Network Manager.
Edite
/etc/NetworkManager/NetworkManager.confy comente la línea (ponga un # delante):Entonces hazlo :
Eso apagará el resolutor local.
Fuente: DNS en Ubuntu 12.04 .
fuente
Bastante buena suposición, pero las otras respuestas son excesivas. La solución simple es eliminar el bit que efectivamente se dispara, es decir, eliminar solo
[NOTFOUND=return].Eliminarlo significa que si
mdns4_minimalregresaNOTFOUND, se usa la siguiente entrada en la lista de resolución. Este es el comportamiento normal;[NOTFOUND=return]es una optimización para fallar más rápido en nombres desconocidos, pero supone que todos los.localnombres están en mDNS.fuente
Tuve un caso interesante con los mismos síntomas (ping, montaje, etc.no funciona, pero host, excavación funciona). Verifique los permisos en el archivo /etc/resolv.conf . En mi caso, alguien lo cambió y no tenía derechos para leerlo (aunque
cat /etc/resolv.confy editar el archivo funcionó bien).De todos modos, strace estaba mostrando:
Y como resultado, intentaba consultar localhost (127.0.0.1) en lugar de una IP de servidor de nombres desde el archivo resolv.conf:
Y tcpdump no mostraba ningún tráfico DNS al hacer ping. Todo funciona después de una corrección de permiso:
Otro problema podrían ser los atributos extendidos del archivo o cualquier otro problema de acceso. En ese caso, simplemente elimine el archivo /etc/resolv.conf y vuelva a crearlo desde cero.
fuente
xmarca y, por lo tanto, muchos binarios no se comportaron correctamente. La solución fuechmod +x /*.Otra razón es el formato de
/etc/hosts. Asegúrese de que no haya espacios entre la IP y el nombre de host, en su lugar use una TAB. Después de cambiar a TAB, el nombre de host podría resolverse haciendo ping.fuente
Configure avahi-daemon en Ubuntu para que pueda alcanzar el nombre
ubuntu.localde host desde el sistema operativo hostsudo apt-get install avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan
fuente