ping
mi dice che non è in grado di risolvere alcuni hostname ("ping: host sconosciuto domain.company.local") in un URL ma quando uso host
o nslookup
sullo stesso computer sulla riga di comando, le risoluzioni funzionano bene (cioè è veloce e affidabile ).
Che cosa potrebbe causare questo?
Altri test: Firefox wget
e ping
hanno lo stesso problema. Il ping dell'indirizzo IP funziona.
Sistema operativo: Linux (Ubuntu 13.04)
EDIT Le mie /etc/resolv.conf
letture:
nameserver 127.0.1.1
search domain.company.local
netstat
rapporti:
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 -
quindi qualcosa è in esecuzione su questa porta ( nslookup
segnala anche che utilizza 127.0.1.1
come server DNS).
No /etc/*inetd.conf
, quindi non sono sicuro di quale applicazione serve questa porta.
Sembra che dnsmasq
sia usato:
/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
Tutti i file e le cartelle di configurazione sono vuoti. Dal momento che nslookup
dice che usa la 127.0.1.1#53
mia ipotesi è che dnsmasq
funziona anche senza una configurazione. Ma come fa a sapere quale DNS genitore interrogare?
EDIT2 La disabilitazione dnsmasq
come suggerito da harrymc non ha aiutato. Quindi ho corso strace ping
che mi ha dato questo strano risultato (solo le parti interessanti):
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
Quindi ping
guarda in /etc/hosts
che senso. Quindi carica e mmap()
s /lib/libnss_mdns4_minimal.so.2
che ha anche senso.
Ma poi parla con avahi !?
Il che mi ha portato a questo post sul forum: ping non fa una richiesta dns .
Il mio /etc/nsswitch.conf
contiene anche questa riga:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Se ho ping
un indirizzo funzionante, vedo che viene caricato anche il processo /lib/libnss_mdns4_minimal.so.2
, ma esegue una query DNS tramite la porta 53.
Quindi la mia ipotesi ora è che in /lib/libnss_mdns4_minimal.so.2
qualche modo sta notando che l'indirizzo IP termina con .local
e non con .com
e quindi [NOTFOUND=return]
viene attivato.
Come posso risolvere questo problema?
wget
.
nslookup
o host
posso risolvere il nome e qualsiasi altra cosa sul sistema non può.
/etc/NetworkManager/NetworkManager.conf
e commenta la dns=dnsmasq
riga (metti un # davanti ad essa) quindi fai un sudo restart network-manager
. Ciò disattiverà il resolver locale. ( fonte )
/etc/resolv.conf
?