ping
me dit qu'il ne peut pas résoudre un nom d'hôte ("ping: hôte inconnu: domain.company.local") dans une URL, mais lorsque j'utilise host
ou nslookup
sur le même ordinateur sur la ligne de commande, les résolutions fonctionnent correctement (c'est-à-dire que c'est rapide et fiable ).
Qu'est-ce qui peut causer cela?
Plus de tests: Firefox, wget
et ping
ont le même problème. Faire un ping sur l'adresse IP fonctionne.
Système d'exploitation: Linux (Ubuntu 13.04)
ÉDITER Mes /etc/resolv.conf
lectures:
nameserver 127.0.1.1
search domain.company.local
netstat
rapports:
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 -
donc quelque chose tourne sur ce port ( nslookup
indique également qu'il utilise 127.0.1.1
le serveur DNS).
Il n'y en a pas /etc/*inetd.conf
, donc je ne sais pas quelle application sert ce port.
Il semble que dnsmasq
soit utilisé:
/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
Tous les fichiers et dossiers de configuration sont vides. Depuis nslookup
dit, il utilise 127.0.1.1#53
mon hypothèse est que cela dnsmasq
fonctionne même sans configuration. Mais comment sait-il quel DNS parent interroger?
EDIT2 Désactiver dnsmasq
comme suggéré par harrymc n'a pas aidé. Alors j'ai couru strace ping
qui m'a donné cette sortie étrange (juste les parties intéressantes):
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
Alors ping
regarde dans /etc/hosts
ce qui a du sens. Ensuite, il charge et mmap()
s /lib/libnss_mdns4_minimal.so.2
ce qui est logique aussi.
Mais alors il parle à avahi!?
Ce qui m'a amené à ce post sur le forum: ping ne fait pas de demande DNS .
Mon /etc/nsswitch.conf
contient également cette ligne:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
Si je ping
travaille une adresse, je vois que le processus se charge également, /lib/libnss_mdns4_minimal.so.2
mais ensuite, il effectue une requête DNS via le port 53.
Donc, je suppose que maintenant, c'est en /lib/libnss_mdns4_minimal.so.2
quelque sorte de remarquer que l'adresse IP se termine par .local
et non par .com
, puis [NOTFOUND=return]
est déclenchée.
Comment puis-je réparer ça?
wget
.
nslookup
ou host
peut résoudre le nom et toute autre chose sur le système ne peut pas.
/etc/NetworkManager/NetworkManager.conf
et commentez la dns=dnsmasq
ligne (mettez un # devant) puis faites un sudo restart network-manager
. Cela désactive le résolveur local. ( source )
/etc/resolv.conf
?