J'ai une machine virtuelle exécutant Debian Wheezy sur laquelle certaines recherches de nom d'hôte prennent plusieurs secondes, même si le résolveur répond immédiatement. Étrangement, les recherches avec getaddrinfo()
sont affectées, mais ce gethostbyname()
n'est pas le cas.
Je suis passé aux résolveurs Google pour exclure la possibilité que les résolveurs locaux soient cassés, donc mon /etc/resolv.conf
apparence ressemble à:
search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
Mon nsswitch.conf
a la ligne:
hosts: files dns
et mon /etc/hosts
ne contient rien d'inhabituel.
Si j'essaye telnet webserver 80
, il se bloque pendant plusieurs secondes avant d'obtenir une résolution de nom. Une ltrace
sortie [1] montre que le blocage est en cours d' getaddrinfo()
appel:
getaddrinfo("ifconfig.me", "telnet", { AI_CANONNAME, 0, SOCK_STREAM, 0, 0, NULL, '\000', NULL }, 0x7fffb4ffc160) = 0 <5.020621>
Cependant, tcpdump
révèle que le serveur de noms a répondu immédiatement, et ce n'est que sur la deuxième réponse qui a telnet
débloqué. Les réponses semblent identiques:
05:52:58.609731 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:52:58.609786 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:52:58.612188 IP 8.8.4.4.53 > 192.168.1.75.43017: 54755 4/0/0 A 219.94.235.40, A 133.242.129.236, A 49.212.149.105, A 49.212.202.172 (93)
[...five second pause...]
05:53:03.613811 IP 192.168.1.75.43017 > 8.8.4.4.53: 54755+ A? ifconfig.me. (29)
05:53:03.616424 IP 8.8.4.4.53 > 192.168.1.75.43017: 54755 4/0/0 A 219.94.235.40, A 133.242.129.236, A 49.212.149.105, A 49.212.202.172 (93)
05:53:03.616547 IP 192.168.1.75.43017 > 8.8.4.4.53: 26090+ AAAA? ifconfig.me. (29)
05:53:03.618907 IP 8.8.4.4.53 > 192.168.1.75.43017: 26090 0/1/0 (76)
J'ai vérifié les journaux du pare-feu de l'hôte et rien sur le port 53 n'est bloqué.
Qu'est-ce qui fait que la première réponse DNS est ignorée?
[1] J'ai ajouté quelques lignes à mon ltrace.conf
afin que je puisse voir l'intérieur de la addrinfo
structure.