Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DNS : configuration de /etc/resolv.conf

4 réponses
Avatar
Francois Lafont
Bonjour à tous,

Dans le fichier /etc/resolv.conf d'un Linux, on met en général des
instructions du genre :

nameserver 192.168.0.11
nameserver 192.168.0.12

pour indiquer une liste de serveur DNS à utiliser (dans l'ordre où
ils sont indiqués). Le problème, c'est quand le premier serveur DNS
tombe (ie celui avec l'IP 192.168.0.11 dans le cas ci-dessus). Dans
ce cas, à chaque fois que la machine doit faire une résolution, elle
interroge d'abord le premier DNS et comme celui-ci est « mort » elle
attends un certain délai, 5 secondes par défaut à en croire man
resolv.conf, et passe ensuite au deuxième serveur DNS qui lui va
répondre. Moralité, à chaque requête DNS, la machine va se prendre 5
secondes de latence dans la figure.

Y aurait-il un configuration possible pour dire à la machine que, si
un des "nameserver" tombe, il faut « l'oublier » quelques temps ? Par
exemple, si 192.168.0.11 dépasse le timeout des 5 secondes, alors pendant
disons 10 minutes, la machine n'interroge plus ce serveur DNS et elle
interroge à la place directement 192.168.0.12. Et si dans 10 minutes
192.168.0.11 ne répond toujours pas dans le temps imparti alors la machine
continue à ignorer ce serveur DNS pendant 10 minutes. Et ainsi de suite...

Bon, d'après ma lecture de la page man de resolv.conf, ce genre de
fonctionnalité ne semble pas prévu par défaut. Peut-être existe-t-il des
paquets additionnels permettant cela ?

Sinon, si jamais une telle chose n'est pas possible, quelles sont les
bonnes pratiques en matière de « hautes disponibilités » de serveurs
DNS ? Indiquer par exemple dans les fichiers /etc/resolv.conf des
clients *un* *seul* "nameserver" qui correspond à une IP flottante d'un
cluster de DNS ?

Merci pour votre aide.

--
François Lafont

4 réponses

Avatar
Nicolas Richard
Francois Lafont writes:
Y aurait-il un configuration possible pour dire à la machine que, si
un des "nameserver" tombe, il faut « l'oublier » quelques temps ? Par
exemple, si 192.168.0.11 dépasse le timeout des 5 secondes, alors pendant
disons 10 minutes, la machine n'interroge plus ce serveur DNS et elle
interroge à la place directement 192.168.0.12. Et si dans 10 minutes
192.168.0.11 ne répond toujours pas dans le temps imparti alors la machine
continue à ignorer ce serveur DNS pendant 10 minutes. Et ainsi de suite...

Bon, d'après ma lecture de la page man de resolv.conf, ce genre de
fonctionnalité ne semble pas prévu par défaut. Peut-être existe-t-il des
paquets additionnels permettant cela ?



Aucune idée, mais si je devais faire ça, je pense que je mettrais un
cron qui vérifierait une liste de serveurs et modifierait le
/etc/resolv.conf à la volée.

Sinon, si jamais une telle chose n'est pas possible, quelles sont les
bonnes pratiques en matière de « hautes disponibilités » de serveurs
DNS ?



Mais je ne prétends pas que ma solution tombe dans cette catégorie :)

Amicalement,

--
Nicolas Richard
Avatar
Bruno Ducrot
On 2014-11-09, Francois Lafont wrote:
Bonjour à tous,

Dans le fichier /etc/resolv.conf d'un Linux, on met en général des
instructions du genre :

nameserver 192.168.0.11
nameserver 192.168.0.12

pour indiquer une liste de serveur DNS à utiliser (dans l'ordre où
ils sont indiqués). Le problème, c'est quand le premier serveur DNS
tombe (ie celui avec l'IP 192.168.0.11 dans le cas ci-dessus). Dans
ce cas, à chaque fois que la machine doit faire une résolution, elle
interroge d'abord le premier DNS et comme celui-ci est « mort » elle
attends un certain délai, 5 secondes par défaut à en croire man
resolv.conf, et passe ensuite au deuxième serveur DNS qui lui va
répondre. Moralité, à chaque requête DNS, la machine va se prendre 5
secondes de latence dans la figure.



Il y a un retry. Ca fait donc 10 secondes. On peut abaisser
à l'aide de :
options timeout:1
dans le resolv.conf.

Y aurait-il un configuration possible pour dire à la machine que, si
un des "nameserver" tombe, il faut « l'oublier » quelques temps ? Par
exemple, si 192.168.0.11 dépasse le timeout des 5 secondes, alors pendant
disons 10 minutes, la machine n'interroge plus ce serveur DNS et elle
interroge à la place directement 192.168.0.12. Et si dans 10 minutes
192.168.0.11 ne répond toujours pas dans le temps imparti alors la machine
continue à ignorer ce serveur DNS pendant 10 minutes. Et ainsi de suite...



Hélas non. Il faut réecrire à la volée. Mais bon. C'est un peu crade
IMHO.

Bon, d'après ma lecture de la page man de resolv.conf, ce genre de
fonctionnalité ne semble pas prévu par défaut. Peut-être existe-t-il des
paquets additionnels permettant cela ?

Sinon, si jamais une telle chose n'est pas possible, quelles sont les
bonnes pratiques en matière de « hautes disponibilités » de serveurs
DNS ? Indiquer par exemple dans les fichiers /etc/resolv.conf des
clients *un* *seul* "nameserver" qui correspond à une IP flottante d'un
cluster de DNS ?




Là où je bosse, les serveurs DNS à usage interne pour les DCs
fonctionnent par paire, avec VRRPd pour gérer la haute dispo.

Certains serveurs un peu trop gourmands ont leurs propres
BIND en mode forward vers nos serveurs "officiels".

A plus,

--
Bruno Ducrot

A quoi ca sert que Ducrot hisse des carcasses ?
Avatar
Francois Lafont
Bonsoir,

Le 10/11/2014 10:36, Nicolas Richard a écrit :

Aucune idée, mais si je devais faire ça, je pense que je mettrais un
cron qui vérifierait une liste de serveurs et modifierait le
/etc/resolv.conf à la volée.



Ah oui, parfois un bon vieux petit cron c'est pas forcément le truc
super « hype » mais ça présente une certaine robustesse. ;)

Sinon, si jamais une telle chose n'est pas possible, quelles sont les
bonnes pratiques en matière de « hautes disponibilités » de serveurs
DNS ?



Mais je ne prétends pas que ma solution tombe dans cette catégorie :)



Pas de souci.
Merci de ton aide.

--
François Lafont
Avatar
Francois Lafont
Bonsoir,

Le 10/11/2014 16:42, Bruno Ducrot a écrit :

Il y a un retry. Ca fait donc 10 secondes. On peut abaisser
à l'aide de :
options timeout:1
dans le resolv.conf.



Ok, merci.

Hélas non. Il faut réecrire à la volée. Mais bon. C'est un peu crade
IMHO.



Ok, il me semblait bien que ce genre de fonctionnalité n'existait pas.

Sinon, si jamais une telle chose n'est pas possible, quelles sont les
bonnes pratiques en matière de « hautes disponibilités » de serveurs
DNS ? Indiquer par exemple dans les fichiers /etc/resolv.conf des
clients *un* *seul* "nameserver" qui correspond à une IP flottante d'un
cluster de DNS ?




Là où je bosse, les serveurs DNS à usage interne pour les DCs
fonctionnent par paire, avec VRRPd pour gérer la haute dispo.



Ok et donc si je comprends bien, les machines qui utilisent ces
serveurs DNS ne possèdent qu'une seule instruction « nameserver »
dans leur fichier /etc/resolv.conf avec comme adresse une IP
virtuelle qui pointe vers un des nœuds du cluster, c'est bien ça ?

Certains serveurs un peu trop gourmands ont leurs propres
BIND en mode forward vers nos serveurs "officiels".



Ok, merci de aide.
Ce que tu me dis me confirme dans l'idée de monter des DNS en cluster
avec une IP flottante.

--
François Lafont