ping
me dice que no puede resolver algún nombre de host ("ping: host desconocido domain.company.local") en una URL, pero cuando uso host
o nslookup
en 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, wget
y ping
tienen el mismo problema. Hacer ping a la dirección IP funciona.
SO: Linux (Ubuntu 13.04)
EDITAR Mis /etc/resolv.conf
lecturas:
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 ( nslookup
también informa que se usa 127.0.1.1
como servidor DNS).
No hay /etc/*inetd.conf
, así que no estoy seguro de qué aplicación sirve este puerto.
Parece que dnsmasq
se 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 nslookup
dice que usa 127.0.1.1#53
mi conjetura es que dnsmasq
funciona incluso sin una configuración. Pero, ¿cómo sabe qué DNS primario consultar?
EDIT2 Desactivar dnsmasq
como lo sugiere harrymc no ayudó. Así que corrí, lo strace ping
que 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 ping
ve en lo /etc/hosts
que tiene sentido. Luego se carga y mmap()
s, lo /lib/libnss_mdns4_minimal.so.2
que 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.conf
también contiene esta línea:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Si tengo ping
una dirección de trabajo, veo que el proceso también se carga, /lib/libnss_mdns4_minimal.so.2
pero luego realiza una consulta DNS a través del puerto 53.
Entonces, supongo que ahora /lib/libnss_mdns4_minimal.so.2
es de alguna manera notar que la dirección IP termina con .local
y no con .com
y luego [NOTFOUND=return]
se activa.
¿Cómo puedo solucionar esto?
/etc/resolv.conf
?wget
.nslookup
ohost
puedo resolver el nombre y cualquier otra cosa en el sistema no pueden./etc/NetworkManager/NetworkManager.conf
y comente ladns=dnsmasq
lí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
.alocal
lugar del predeterminado.local
.y reinicia el demonio con:
Nota de la publicación del blog:
Después de eso,
ping
ynslookup
comenzó a estar de acuerdo.Gracias a harrymc por llevarme por el buen camino.
fuente
ping
utilizará nss,nslookup
no. (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-daemon
Cambia 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.conf
y 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.conf
y 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_minimal
regresaNOTFOUND
, 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.local
nombres 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.conf
y 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
x
marca 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.local
de host desde el sistema operativo hostsudo apt-get install avahi-daemon avahi-discover avahi-utils libnss-mdns mdns-scan
fuente