[Admin-ml] Perte de surf.

Laurent PERTOIS laurent_pertois at mac.com
Ven 9 Oct 22:33:04 CEST 2009


On 6 oct. 2009, at 18:28, Olivier DUCROT wrote:

Re Olivier,

On en a discuté ensemble hier mais autant en faire profiter nos petits  
camarades ;-)

> Attention, depuis le 10.5, toutes les résolutions DNS ne sont pas  
> faites de
> la même façon suivant l'outil qu'en l'on utilise.
> (cf: Mac OS X Directory Services de ArekDreyer - Peachpit Press -  
> page 6-7)

Ce qui était déjà vrai avant. En 10.4 et précédentes versions la  
résolution DNS était assurée par lookupd qui finissait par utiliser la  
libc, d'ailleurs, mais après avoir utilisé ses agents, dont le  
CacheAgent (qui gardait les infos en cache, vous l'aviez deviné).

En 10.5 lookupd a pris sa retraite (mais vous pouvez encore taper man  
lookupd, je vous laisse découvrir ce que ça fait...) et a été  
remplacé, dans son rôle de resolver DNS par le daemon DirectoryService  
(oui, je sais, moi aussi je trouve ça débile, mais c'est comme ça et  
pis c'est tout, au passage, ça a encore changé en 10.6,  
DirectoryService ne fait plus la résolution DNS, remplacé par... ah  
ben je vous laisse un peu chercher quand même). DirectoryService a des  
plugins, l'un BSD qui va lire /etc/hosts, et un agent de cache CCache  
qui, lorsqu'il n'a pas l'info, va utiliser la libc.

Mais, il y a des exceptions, car nous vivons dans un monde  
d'exceptions. Des outils comme host, nslookup et dig sont des outils  
conçus pour interroger les DNS, il n'y a donc absolument aucun intérêt  
à ce qu'ils utilisent le resolver de l'OS. Par défaut, et c'est écrit  
dans le man (au moins pour host que je viens de lire mais ça doit  
aussi le faire pour les autres) ils utilisent directement les appels à  
la libc et ils vont lire /etc/resolv.conf mais on peut généralement  
leur préciser l'adresse d'un serveur DNS à interroger spécifiquement.

> Certaines passent directement, d'autres passent par les directory  
> services.

Oui, c'est logique. Du coup, quand je fais un host, je teste mon DNS,  
pas la capacité de mon OS à résoudre un nom ou à chercher dans son  
cache (qui contient peut-être une information erronée), pour ça j'ai  
dscacheutil.

Si des outils comme host passaient par le resolver, il serait plus  
difficile de débugger un problème dans la config de ton DNS, vu que tu  
dépendrais aussi du cache de ton OS.

> Par ailleurs, le poste cache les résultats des recherches.
> On peut vider le cache des recherches faites par DS avec la commande  
> dsutil
> -flushcache
>

Attention, en 10.4 et inférieur il faut utiliser lookupd et en 10.6  
dscacheutil ne flushe plus le cache DNS.

> Par exemple :
> - ping, dscacheutil et ssh font leurs requêtes par DS

Oui.

> - host, dig et nslookup utilisent la librairie C standard
>

Oui aussi, comme DS d'ailleurs ;-)

> Au passage, il en résulte une interprétation différente du fichier
> /etc/hosts qui est géré par le plugin BSD de DS. Donc host, dig et  
> nslookup
> n'interrogent pas le fichier /etc/hosts lors des recherches DNS !!


Et c'est tant mieux, ce n'est pas leur rôle du tout, sinon tu vas  
encore perdre plus de cheveux quand tu vas débugger ton BIND ;-D

-- 
85.	what's this hash prompt on my terminal mean?
101 Things You Do Not Want Your System Administrator To Say





Plus d'informations sur la liste de diffusion Admin-ml