J'ai une machine exécutant ubuntu 10.04 serveur. J'ai commencé à rencontrer des retards longs (5 à 10 secondes) lors de la connexion à (certains) sites en dehors du LAN en utilisant des outils comme curl
et wget
.
En utilisant tcpdump
et wireshark, j'ai trouvé que le problème se situait dans les recherches DNS effectuées pour établir la connexion :
EXEMPLE
Quand j'exécute :
wget www.site1.com
Je vois le comportement suivant :
RECHERCHE: AAAA www.site1.com
# => échec, pas de retard, site1 n'a pas d'enregistrement AAAA IPv6
RECHERCHE: AAAA www.site1.com.mydomain.lan
# => échec, GROS RETARD, domaine fou n'existe pas
RECHERCHE: A www.site1.com
# => succès, pas de retard, se résout comme prévu (site1 a un enregistrement A IPv4)
CONNEXION PROGRESSE ...
MA CONFIGURATION
Le resolv.conf de mon serveur ressemble à ceci :
nameserver 192.168.0.1 # mon routeur
domain mydomain.lan # nom de domaine inventé, pour mon lan
search mydomain.lan
Le fichier hôtes de mon serveur ressemble à ceci :
127.0.0.1 localhost.localdomain localhost
192.168.0.10 server1.mydomain.lan serveur1
# Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
RÉSOLUTIONS ?
Pourquoi ma liste de recherche resolv.conf est-elle utilisée pour construire le nom de la 2ème recherche, alors que la page man de resolv.conf suggère qu'elle est seulement utilisée lors de recherches de noms d'hôtes (sans points) :
"Les requêtes Resolver ayant moins de ndots points (par défaut 1) seront tentées en utilisant chacun des composants du chemin de recherche tour à tour jusqu'à ce qu'une correspondance soit trouvée."
J'ai l'impression que la 2ème recherche est erronée et ne devrait pas être effectuée du tout...
Si je supprime les lignes domain
et search
du resolv.conf, la 2ème recherche n'est plus effectuée et mes retards disparaissent.
(aussi, si je force wget à ne traiter qu'en IPv4, les recherches AAAA ne sont plus effectuées, donc les retards disparaissent) :
wget --inet4-only www.site1.com