Utilisation avancé de Bind
Contents
1 Introduction
Bind c'est bien, mais des fois ça devient un peu complexe. Surtout quand on veut gérer des serveurs DNS à la façon providers. Bref, voici quelques astuces que j'ai trouvé pour améliorer la bête.
2 Forcer les mises à jour de ses zones
2.1 Méthode 1
On peut avoir rapidement besoin de mettre à jour ses zones sans attendre que Bind le fasse lui même (voir les SOA, refresh etc... de chaque zone). Pour cela, il faut freezer les mises à jour de Bind sur la zone en questions :
rndc |
rndc freeze deimos.fr in internalview |
- deimos.fr : la zone
- internalview : la vue dans laquelle la zone est située
Il est possible d'enlever "in <view>" si vous n'avez pas de vue de définie. Si l'action s'est bien déroulée, au niveau des logs, vous trouverez :
Oct 2 19:05:42 star1 named[8403]: freezing zone 'deimos.fr/IN' internalview: success
Maintenant, faites les modifications que vous souhaitez sur votre fichier de zone.
Une fois terminé, lancez ces commandes :
rndc |
rndc reload deimos.fr in internalview rndc thaw deimos.fr in internalview |
- reload :reload configuration file and zones.
- thaw : Enable updates to a frozen dynamic zone and reload it.
Si tout ce passe bien, vous verrez quelquechose du genre dans les logs :
Oct 2 19:09:50 star1 named[8403]: zone deimos.fr/IN/internalview: loaded serial 2008100208 Oct 2 19:09:50 star1 named[8403]: zone deimos.fr/IN/internalview: sending notifies (serial 2008100208) Oct 2 19:09:50 star1 named[8403]: client 192.168.0.27#47874: view internalview: transfer of 'deimos.fr/IN': AXFR-style IXFR started Oct 2 19:09:50 star1 named[8403]: client 192.168.0.27#47874: view internalview: transfer of 'deimos.fr/IN': AXFR-style IXFR ended Oct 2 19:09:54 star1 named[8403]: unfreezing zone 'deimos.fr/IN' internalview: success
2.2 Méthode 2
Voici une deuxième méthode, permettant de faire de même :
rndc |
rndc retransfer deimos.fr |
3 Round Robin : Load balancer
Tout d'abord il faut savoir qu'on ne peut load balancer qu'avec des enregistrements A (sauf apparemment pour BIND v4 ou l'on peut en faire avec des CNAME). Puis voici une exemple de comment gérer une configuration d'un domaine :
/etc/bind/db.deimos.fr |
; Round Robin / Load Balancing www 60 IN A x.x.x.1 www 60 IN A x.x.x.2 |
- 60 : correspond au TTL, et il est très important, car c'est lui qui va décider quand basculer
- x.x.x.x : IP des serveurs. Vous ne pouvez malheureusement pas mettre de noms DNS.
Vous pouvez également choisir le type de load balancing parmis ceux là :
- fixed - records are returned in the order they are defined in the zone file
- random - records are returned in a random order
- cyclic - records are returned in a round-robin fashion
Pour ce faire, ajoutez ce type de lignes et adaptez selon vos besoins :
/etc/bind/named.conf |
... rrset-order { order cyclic; }; ... |
Pour plus d'informations, regardez les sites références plus bas.
4 FAQ
4.1 journal rollforward failed: journal out of sync with zone
Si vous avez cette erreur, c'est du à un problème de synchronisation de zone. Regardez dans vos logs la ou les zones qui posent problème, puis supprimer le fichier de syncro :
rm |
rm /etc/bind/db.deimos.fr.jnl |
Il ne reste plus qu'a reloader ou redémarrer votre bind et la syncro va repartir correctement.
5 Ressources
http://jon.netdork.net/2008/08/21/bind-dynamic-zones-and-updates
http://www.zytrax.com/books/dns/
http://www.zytrax.com/books/dns/ch7/queries.html#rrset-order
http://www.zytrax.com/books/dns/info/ttl.html
http://www.zytrax.com/books/dns/ch9/rr.html