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.confapparence ressemble à:
search my-domain.com
nameserver 8.8.4.4
nameserver 8.8.8.8
Mon nsswitch.confa la ligne:
hosts: files dns
et mon /etc/hostsne 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 ltracesortie [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, tcpdumpré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 telnetdé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.confafin que je puisse voir l'intérieur de la addrinfostructure.