AdminDNS » Historique » Version 4
Version 3 (Fabien Dupont, 18/09/2012 15:59) → Version 4/9 (Fabien Dupont, 11/11/2012 17:52)
h1. Administration des DNS
{{>toc}}
h2. Architecture générale des DNS de Tetaneutral.net
Les NS de l'association gèrent les 8 domaines suivants :
* as197422.net
* tetaneutral.biz
* tetaneutral.com
* tetaneutral.eu
* tetaneutral.fr
* tetaneutral.info
* tetaneutral.net + ipv6.tetaneutral.net
* tetaneutral.org
Tous ces domaines sont hébergés sur ns1.nomdudomaine.tld (ex: ns1.tetaneutral.net) qui, physiquement est gw.
De plus, ces zones ont pour NS secondaire : ns2.nomdudomaine.tld, qui est aussi gw temporairement, ns3.nomdudomaine.tld qui est la VM que l'on a chez grenode et ns6.gandi.net (sauf pour ipv6.tetaneutral.net), le secondaire de gandi.
De plus, les NS gère les zones reverse suivantes :
* 0.0.0.8.0.0.6.6.1.0.a.2.ip6.arpa
* 0.8.0.0.6.6.1.0.a.2.ip6.arpa
* 0.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa
* 1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa
* 148.224.91.in-addr.arpa
* 149.224.91.in-addr.arpa
* 236.213.91.in-addr.arpa
* 40/32.110.216.91.in-addr.arpa. ("délégation classless":http://chiliproject.tetaneutral.net/projects/tetaneutral/wiki/Bind#D%C3%A9l%C3%A9gation-dun-reverse-%C2%AB-classless-%C2%BB du reverse de la VM Grenode)
Elles sont toutes sur ns1.tetaneutral.net (gw), ns2.tetaneutral.net (gw aussi) et ns3.tetaneutral.net (grenode) mais pas gandi.
<pre>
.-------------------------------------.
| Serveur secondaire |
| ns2.tetaneutral.* |
| (gw) |
| S: as197422.net |
| S: ipv6.tetaneutral.net |
| S: tetaneutral.biz |
| S: tetaneutral.com |
| S: tetaneutral.eu |
| S: tetaneutral.fr |
.---------------------------->| S: tetaneutral.info |
| | S: tetaneutral.net |
| | S: tetaneutral.org |
| | S: 0.0.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| | S: 0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| | S: 0.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| | S: 1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| | S: 148.224.91.in-addr.arpa |
| | S: 149.224.91.in-addr.arpa |
| | S: 236.213.91.in-addr.arpa |
| | S: 40/32.110.216.91.in-addr.arpa |
| '-------------------------------------'
|
.-------------------------------------. .-------------------------------------.
| Serveur primaire | | Serveur secondaire |
| ns1.tetaneutral.* | | ns3.tetaneutral.* |
| (gw) | | (grenode) |
| P: as197422.net | | S: as197422.net |
| P: ipv6.tetaneutral.net | | S: ipv6.tetaneutral.net |
| P: tetaneutral.biz | | S: tetaneutral.biz |
| P: tetaneutral.com | | S: tetaneutral.com |
| P: tetaneutral.eu | | S: tetaneutral.eu |
| P: tetaneutral.fr | | S: tetaneutral.fr |
| P: tetaneutral.info |--------->| S: tetaneutral.info |
| P: tetaneutral.net | | S: tetaneutral.net |
| P: tetaneutral.org | | S: tetaneutral.org |
| P: 0.0.0.8.0.0.6.6.1.0.a.2.ip6.arpa | | S: 0.0.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| P: 0.8.0.0.6.6.1.0.a.2.ip6.arpa | | S: 0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| P: 0.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa | | S: 0.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| P: 1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa | | S: 1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| P: 148.224.91.in-addr.arpa | | S: 148.224.91.in-addr.arpa |
| P: 149.224.91.in-addr.arpa | | S: 149.224.91.in-addr.arpa |
| P: 236.213.91.in-addr.arpa | | S: 236.213.91.in-addr.arpa |
| P: 40/32.110.216.91.in-addr.arpa | | S: 40/32.110.216.91.in-addr.arpa |
'-------------------------------------' '-------------------------------------'
|
| .-------------------------------------.
| | Serveur secondaire |
| | ns6.gandi.net |
| | (gandi) |
| | S: as197422.net |
| | S: tetaneutral.biz |
'---------------------------->| S: tetaneutral.com |
| S: tetaneutral.eu |
| S: tetaneutral.fr |
| S: tetaneutral.info |
| S: tetaneutral.net |
| S: tetaneutral.org |
'-------------------------------------'
</pre>
h2. Modification d'une zone
Concrètement les zones sont stockée dans le "repository GIT bind-zones":http://git.tetaneutral.net/bind-zones.git/.
Pour modifier une zone, il faut donc cloner le repository, modifier la zone (penser à incrémenter le serial), commiter/pusher la modification puis lancer l'agent puppet sur gw.
h3. Clonage du repository
<pre>
$ git clone ssh://git@git.tetaneutral.net/bind-zones
</pre>
Les zones sont rangées et nommées de la façon suivante : [nom de la vue bind]/[nom de la zone].zone.
Ici, il n'y a qu'une vue bind appelée « wan ».
h3. Modification d'un zone
Avant de modifier une zone, il faut bien s'assurer qu'on est sur la dernier commit du repository (sinon, c'est la fête au conflit) :
<pre>
$ git pull
Already up-to-date.
</pre>
Ensuite, il suffit de modifier le fichier wan/nomdelazone.zone (ici, pour ajouter zorglub.tetaneutral.net) :
<pre>
$ vi wan/tetaneutral.net.zone
$ git diff
diff --git a/wan/tetaneutral.net.zone b/wan/tetaneutral.net.zone
index de147a8..5c6cb01 100644
--- a/wan/tetaneutral.net.zone
+++ b/wan/tetaneutral.net.zone
@@ -2,7 +2,7 @@
;
$TTL 86400
@ IN SOA ns1.tetaneutral.net. root.tetaneutral.net. (
- 2012082202 ; serial
+ 2012082203 ; serial
86400 ; Refresh
3600 ; Retry
3600000 ; expire
@@ -67,6 +67,8 @@ stg-free-nb6 IN AAAA 2a01:e34:edc8:94d0:221:85ff:fe48:708f
grenode IN A 91.216.110.40
mx2 IN A 91.216.110.40
+zorglub IN A 91.224.149.142
+
rps2 IN A 87.98.151.166
rps2-6 IN AAAA 2001:41d0:2:39a8::1
equinix-paris IN A 195.42.144.120
</pre>
+Important :+ Il faut bien penser à incrémenter le serial de la zone (voir en haut des fichiers) pour que les modifications soient prise en compte. Pour s'assurer que le serial est toujours augmenté, il est écrit dans la forme yyyymmddrr où :
* yyyy est l'année en cours sur 4 chiffres (ex: 2012),
* mm est le mois en cours sur 2 chiffres (ex: 08),
* dd est le jour du mois en cours sur 2 chiffres (ex: 22) et
* rr est le numéro de révision de la zone pour le jour en cours (ex: 00 pour la première, puis 01, 02, etc.).
Une fois la modification effectuée elle doit être commitée et pushée dans le repository git :
<pre>
$ git commit wan/tetaneutral.net.zone -m 'New host : zorglub.tetaneutral.net'
[master 107104b] New host : zorglub.tetaneutral.net
1 file changed, 3 insertions(+), 1 deletion(-)
$ git push
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 390 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
To ssh://git@git.tetaneutral.net/bind-zones.git
4fe0629..107104b master -> master
</pre>
h3. Prise en compte des modifications sur le primaire
Pour que les modifications effectuées dans le repository git soient prise en compte sur le serveur primaire (ns1.tetaneutral.net AKA gw), il suffit de lancer l'agent puppet dessus.
<pre>
# puppet agent -vt
info: Retrieving plugin
info: Caching catalog for gw.tetaneutral.net
info: Applying configuration version '1345644614'
*snip*
notice: /Stage[main]/Bind/Repo[/var/bind/chroot/var/named]/ensure: ensure changed 'present' to 'latest'
info: /Stage[main]/Bind/Repo[/var/bind/chroot/var/named]: Scheduling refresh of Service[bind9]
notice: /Stage[main]/Bind/Service[bind9]: Triggered 'refresh' from 1 events
*snip*
notice: Finished catalog run in 5.94 seconds
</pre>
L'agent puppet effectue un « git pull » s'il y a des nouveaux commits dans le repository. Si c'est le cas, il recharge les zones dans bind pour prise en compte.
h3. Vérifications
La première vérification à effectuer est de contrôler que bind a bien pris en compte la modification de la zone +avec le nouveau serial+ :
<pre>
# tail /var/log/named/general.log
22-Aug-2012 14:50:16.596 reloading zones succeeded
22-Aug-2012 14:50:16.603 zone tetaneutral.net/IN/wan: loaded serial 2012082203
</pre>
Exemple de rechargement de zone sans augmentation du serial :
<pre>
# tail /var/log/named/general.log
*snip*
22-Aug-2012 14:45:08.890 zone tetaneutral.net/IN/wan: zone serial (2012082101) unchanged. zone may fail to transfer to slaves.
</pre>
Ensuite, il faut vérifier que la nouvelle zone a bien été transférée aux serveurs secondaires :
<pre>
# tail /var/log/named/xfer-out.log
*snip*
22-Aug-2012 14:50:16.680 client 91.216.110.40#51301: view wan: transfer of 'tetaneutral.net/IN': AXFR-style IXFR started
22-Aug-2012 14:50:16.682 client 91.216.110.40#51301: view wan: transfer of 'tetaneutral.net/IN': AXFR-style IXFR ended
22-Aug-2012 14:53:37.118 client 217.70.177.40#44443: view wan: transfer of 'tetaneutral.net/IN': AXFR-style IXFR started
22-Aug-2012 14:53:37.121 client 217.70.177.40#44443: view wan: transfer of 'tetaneutral.net/IN': AXFR-style IXFR ended
</pre>
On ne voit que deux transferts, un vers 91.216.110.40 (grenode) et un vers 217.70.177.40 (ns6.gandi.net) alors qu'il y a trois secondaires. Mais ns1 et ns2 sont la même machine, ce n'est pas la peine de mettre à jour le cache du serveur primaire d'une zone alors qu'il connaît déjà la zone.
Dernière vérification : contrôler que la modification effectuée est bien prise en compte :
<pre>
$ dig +short zorglub.tetaneutral.net @ns1.tetaneutral.net
91.224.149.142
$ dig +short zorglub.tetaneutral.net @ns2.tetaneutral.net
91.224.149.142
$ dig +short zorglub.tetaneutral.net @ns3.tetaneutral.net
91.224.149.142
$ dig +short zorglub.tetaneutral.net @ns6.gandi.net.
91.224.149.142
</pre>
{{>toc}}
h2. Architecture générale des DNS de Tetaneutral.net
Les NS de l'association gèrent les 8 domaines suivants :
* as197422.net
* tetaneutral.biz
* tetaneutral.com
* tetaneutral.eu
* tetaneutral.fr
* tetaneutral.info
* tetaneutral.net + ipv6.tetaneutral.net
* tetaneutral.org
Tous ces domaines sont hébergés sur ns1.nomdudomaine.tld (ex: ns1.tetaneutral.net) qui, physiquement est gw.
De plus, ces zones ont pour NS secondaire : ns2.nomdudomaine.tld, qui est aussi gw temporairement, ns3.nomdudomaine.tld qui est la VM que l'on a chez grenode et ns6.gandi.net (sauf pour ipv6.tetaneutral.net), le secondaire de gandi.
De plus, les NS gère les zones reverse suivantes :
* 0.0.0.8.0.0.6.6.1.0.a.2.ip6.arpa
* 0.8.0.0.6.6.1.0.a.2.ip6.arpa
* 0.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa
* 1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa
* 148.224.91.in-addr.arpa
* 149.224.91.in-addr.arpa
* 236.213.91.in-addr.arpa
* 40/32.110.216.91.in-addr.arpa. ("délégation classless":http://chiliproject.tetaneutral.net/projects/tetaneutral/wiki/Bind#D%C3%A9l%C3%A9gation-dun-reverse-%C2%AB-classless-%C2%BB du reverse de la VM Grenode)
Elles sont toutes sur ns1.tetaneutral.net (gw), ns2.tetaneutral.net (gw aussi) et ns3.tetaneutral.net (grenode) mais pas gandi.
<pre>
.-------------------------------------.
| Serveur secondaire |
| ns2.tetaneutral.* |
| (gw) |
| S: as197422.net |
| S: ipv6.tetaneutral.net |
| S: tetaneutral.biz |
| S: tetaneutral.com |
| S: tetaneutral.eu |
| S: tetaneutral.fr |
.---------------------------->| S: tetaneutral.info |
| | S: tetaneutral.net |
| | S: tetaneutral.org |
| | S: 0.0.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| | S: 0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| | S: 0.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| | S: 1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| | S: 148.224.91.in-addr.arpa |
| | S: 149.224.91.in-addr.arpa |
| | S: 236.213.91.in-addr.arpa |
| | S: 40/32.110.216.91.in-addr.arpa |
| '-------------------------------------'
|
.-------------------------------------. .-------------------------------------.
| Serveur primaire | | Serveur secondaire |
| ns1.tetaneutral.* | | ns3.tetaneutral.* |
| (gw) | | (grenode) |
| P: as197422.net | | S: as197422.net |
| P: ipv6.tetaneutral.net | | S: ipv6.tetaneutral.net |
| P: tetaneutral.biz | | S: tetaneutral.biz |
| P: tetaneutral.com | | S: tetaneutral.com |
| P: tetaneutral.eu | | S: tetaneutral.eu |
| P: tetaneutral.fr | | S: tetaneutral.fr |
| P: tetaneutral.info |--------->| S: tetaneutral.info |
| P: tetaneutral.net | | S: tetaneutral.net |
| P: tetaneutral.org | | S: tetaneutral.org |
| P: 0.0.0.8.0.0.6.6.1.0.a.2.ip6.arpa | | S: 0.0.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| P: 0.8.0.0.6.6.1.0.a.2.ip6.arpa | | S: 0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| P: 0.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa | | S: 0.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| P: 1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa | | S: 1.8.0.8.0.0.6.6.1.0.a.2.ip6.arpa |
| P: 148.224.91.in-addr.arpa | | S: 148.224.91.in-addr.arpa |
| P: 149.224.91.in-addr.arpa | | S: 149.224.91.in-addr.arpa |
| P: 236.213.91.in-addr.arpa | | S: 236.213.91.in-addr.arpa |
| P: 40/32.110.216.91.in-addr.arpa | | S: 40/32.110.216.91.in-addr.arpa |
'-------------------------------------' '-------------------------------------'
|
| .-------------------------------------.
| | Serveur secondaire |
| | ns6.gandi.net |
| | (gandi) |
| | S: as197422.net |
| | S: tetaneutral.biz |
'---------------------------->| S: tetaneutral.com |
| S: tetaneutral.eu |
| S: tetaneutral.fr |
| S: tetaneutral.info |
| S: tetaneutral.net |
| S: tetaneutral.org |
'-------------------------------------'
</pre>
h2. Modification d'une zone
Concrètement les zones sont stockée dans le "repository GIT bind-zones":http://git.tetaneutral.net/bind-zones.git/.
Pour modifier une zone, il faut donc cloner le repository, modifier la zone (penser à incrémenter le serial), commiter/pusher la modification puis lancer l'agent puppet sur gw.
h3. Clonage du repository
<pre>
$ git clone ssh://git@git.tetaneutral.net/bind-zones
</pre>
Les zones sont rangées et nommées de la façon suivante : [nom de la vue bind]/[nom de la zone].zone.
Ici, il n'y a qu'une vue bind appelée « wan ».
h3. Modification d'un zone
Avant de modifier une zone, il faut bien s'assurer qu'on est sur la dernier commit du repository (sinon, c'est la fête au conflit) :
<pre>
$ git pull
Already up-to-date.
</pre>
Ensuite, il suffit de modifier le fichier wan/nomdelazone.zone (ici, pour ajouter zorglub.tetaneutral.net) :
<pre>
$ vi wan/tetaneutral.net.zone
$ git diff
diff --git a/wan/tetaneutral.net.zone b/wan/tetaneutral.net.zone
index de147a8..5c6cb01 100644
--- a/wan/tetaneutral.net.zone
+++ b/wan/tetaneutral.net.zone
@@ -2,7 +2,7 @@
;
$TTL 86400
@ IN SOA ns1.tetaneutral.net. root.tetaneutral.net. (
- 2012082202 ; serial
+ 2012082203 ; serial
86400 ; Refresh
3600 ; Retry
3600000 ; expire
@@ -67,6 +67,8 @@ stg-free-nb6 IN AAAA 2a01:e34:edc8:94d0:221:85ff:fe48:708f
grenode IN A 91.216.110.40
mx2 IN A 91.216.110.40
+zorglub IN A 91.224.149.142
+
rps2 IN A 87.98.151.166
rps2-6 IN AAAA 2001:41d0:2:39a8::1
equinix-paris IN A 195.42.144.120
</pre>
+Important :+ Il faut bien penser à incrémenter le serial de la zone (voir en haut des fichiers) pour que les modifications soient prise en compte. Pour s'assurer que le serial est toujours augmenté, il est écrit dans la forme yyyymmddrr où :
* yyyy est l'année en cours sur 4 chiffres (ex: 2012),
* mm est le mois en cours sur 2 chiffres (ex: 08),
* dd est le jour du mois en cours sur 2 chiffres (ex: 22) et
* rr est le numéro de révision de la zone pour le jour en cours (ex: 00 pour la première, puis 01, 02, etc.).
Une fois la modification effectuée elle doit être commitée et pushée dans le repository git :
<pre>
$ git commit wan/tetaneutral.net.zone -m 'New host : zorglub.tetaneutral.net'
[master 107104b] New host : zorglub.tetaneutral.net
1 file changed, 3 insertions(+), 1 deletion(-)
$ git push
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 390 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
To ssh://git@git.tetaneutral.net/bind-zones.git
4fe0629..107104b master -> master
</pre>
h3. Prise en compte des modifications sur le primaire
Pour que les modifications effectuées dans le repository git soient prise en compte sur le serveur primaire (ns1.tetaneutral.net AKA gw), il suffit de lancer l'agent puppet dessus.
<pre>
# puppet agent -vt
info: Retrieving plugin
info: Caching catalog for gw.tetaneutral.net
info: Applying configuration version '1345644614'
*snip*
notice: /Stage[main]/Bind/Repo[/var/bind/chroot/var/named]/ensure: ensure changed 'present' to 'latest'
info: /Stage[main]/Bind/Repo[/var/bind/chroot/var/named]: Scheduling refresh of Service[bind9]
notice: /Stage[main]/Bind/Service[bind9]: Triggered 'refresh' from 1 events
*snip*
notice: Finished catalog run in 5.94 seconds
</pre>
L'agent puppet effectue un « git pull » s'il y a des nouveaux commits dans le repository. Si c'est le cas, il recharge les zones dans bind pour prise en compte.
h3. Vérifications
La première vérification à effectuer est de contrôler que bind a bien pris en compte la modification de la zone +avec le nouveau serial+ :
<pre>
# tail /var/log/named/general.log
22-Aug-2012 14:50:16.596 reloading zones succeeded
22-Aug-2012 14:50:16.603 zone tetaneutral.net/IN/wan: loaded serial 2012082203
</pre>
Exemple de rechargement de zone sans augmentation du serial :
<pre>
# tail /var/log/named/general.log
*snip*
22-Aug-2012 14:45:08.890 zone tetaneutral.net/IN/wan: zone serial (2012082101) unchanged. zone may fail to transfer to slaves.
</pre>
Ensuite, il faut vérifier que la nouvelle zone a bien été transférée aux serveurs secondaires :
<pre>
# tail /var/log/named/xfer-out.log
*snip*
22-Aug-2012 14:50:16.680 client 91.216.110.40#51301: view wan: transfer of 'tetaneutral.net/IN': AXFR-style IXFR started
22-Aug-2012 14:50:16.682 client 91.216.110.40#51301: view wan: transfer of 'tetaneutral.net/IN': AXFR-style IXFR ended
22-Aug-2012 14:53:37.118 client 217.70.177.40#44443: view wan: transfer of 'tetaneutral.net/IN': AXFR-style IXFR started
22-Aug-2012 14:53:37.121 client 217.70.177.40#44443: view wan: transfer of 'tetaneutral.net/IN': AXFR-style IXFR ended
</pre>
On ne voit que deux transferts, un vers 91.216.110.40 (grenode) et un vers 217.70.177.40 (ns6.gandi.net) alors qu'il y a trois secondaires. Mais ns1 et ns2 sont la même machine, ce n'est pas la peine de mettre à jour le cache du serveur primaire d'une zone alors qu'il connaît déjà la zone.
Dernière vérification : contrôler que la modification effectuée est bien prise en compte :
<pre>
$ dig +short zorglub.tetaneutral.net @ns1.tetaneutral.net
91.224.149.142
$ dig +short zorglub.tetaneutral.net @ns2.tetaneutral.net
91.224.149.142
$ dig +short zorglub.tetaneutral.net @ns3.tetaneutral.net
91.224.149.142
$ dig +short zorglub.tetaneutral.net @ns6.gandi.net.
91.224.149.142
</pre>