clarification maj dynamique et typos
This commit is contained in:
parent
8be2a413a4
commit
4dd6f03248
141
HowtoBind.md
141
HowtoBind.md
|
@ -210,7 +210,7 @@ ftp CNAME ftp.example.net.
|
||||||
* `allow-transfer` : spécifie les adresses des serveurs replica ou clefs [TSIGs](/Glossaire.md#tsig) autorisées à faire des requêtes AXFR (transfert de zone). Par défaut, toutes les adresses sont autorisées, il est impératif de restreindre les autorisations.
|
* `allow-transfer` : spécifie les adresses des serveurs replica ou clefs [TSIGs](/Glossaire.md#tsig) autorisées à faire des requêtes AXFR (transfert de zone). Par défaut, toutes les adresses sont autorisées, il est impératif de restreindre les autorisations.
|
||||||
* `allow-recursion` : spécifie les adresses autorisées à faire des requêtes DNS récursives. À restreindre impérativement également.
|
* `allow-recursion` : spécifie les adresses autorisées à faire des requêtes DNS récursives. À restreindre impérativement également.
|
||||||
* `allow-update` : spécifie les adresses ou clefs [TSIGs](/Glossaire.md#tsig) autorisées à mettre à jour dynamiquement des informations dans leur zone. Par défaut, aucune adresse n'est autorisée.
|
* `allow-update` : spécifie les adresses ou clefs [TSIGs](/Glossaire.md#tsig) autorisées à mettre à jour dynamiquement des informations dans leur zone. Par défaut, aucune adresse n'est autorisée.
|
||||||
* `update-policy` : spécifie finement les droit de modification des entrées pour les adresses ou clefs [TSIGs](/Glossaire.md#tsig) autorisées via une liste d'ACL, **Attention** : on ne peut pas définir à la fois `allow-update` et `update-policy`. voir [Configuration update-policy](/HowtoBind#configuration-update-policy)
|
* `update-policy` : spécifie finnement les droit de modification des entrées pour les adresses ou clefs [TSIGs](/Glossaire.md#tsig) autorisées via une liste d'ACL, **Attention** : on ne peut pas définir à la fois `allow-update` et `update-policy`. voir [Configuration update-policy](/HowtoBind#configuration-update-policy)
|
||||||
|
|
||||||
## chroot
|
## chroot
|
||||||
|
|
||||||
|
@ -418,24 +418,125 @@ Options :
|
||||||
|
|
||||||
## Mise à jour dynamique
|
## Mise à jour dynamique
|
||||||
|
|
||||||
La mise à jour dynamique permet de mettre à jour une zone avec des demandes de mise à jour
|
La mise à jour dynamique permet de mettre à jour une zone avec des demandes de mise à jour `Dynamic Updates` envoyés par le réseau au server autoritaire pour ajouter ou supprimer des champs ( voir RFC2136 )
|
||||||
"Dynamic Updates" envoyés par le réseau au server authoritaire pour ajouter ou supprimer des champs :
|
|
||||||
|
|
||||||
* Il n'y a plus besoin de se connecter au serveur authoritaire pour changer le fichier de zone
|
* Il n'y a plus besoin de se connecter au serveur autoritaire pour changer le fichier de zone
|
||||||
* La syntaxe d'une demande est vérifiée avant d'être envoyé pour éviter d'ajouter des entrées incorrectes.
|
* La syntaxe d'une demande est vérifiée avant d'être envoyé pour éviter d'ajouter des entrées incorrectes.
|
||||||
* Le serial SOA est incrémenté automatiquement.
|
* Le SOA est incrémenté automatiquement.
|
||||||
* Dans une zone DNSSEC, le changement est immédiatement signé.
|
* Dans une zone DNSSEC, le changement est immédiatement signé.
|
||||||
* On peut facilement scripter ces mises à jours ( certbot par exemple )
|
* On peut facilement scripter ces mises à jours ( certbot par exemple )
|
||||||
|
* **Important** : Les directives `$INCLUDE` et `$GENERATE` d'un fichier de zone ne pourront plus être utilisé. Pour conserver cette fonctionnalité, on recommande d'activer la mise à jour uniquement sur des sous domaines/zone d'une zone qui utilise ces directives (ces sous-zones seront alors incluses).
|
||||||
|
|
||||||
|
> **Attention** : lorsqu'on active le `dynamic-update` sur une zone, il devient difficile d'éditer le fichier de zone à la main, voir [màj manuelle](#mise-à-jour-manuelle-de-la-zone).
|
||||||
|
|
||||||
|
### Activer la mise à jour dynamique sur une zone
|
||||||
|
|
||||||
Pour faire la mise à jour dynamique, Bind génère un fichier de journal `.jnl` binaire du même nom que la zone, contenant l'historique des modifications apportées à la zone.
|
Pour faire la mise à jour dynamique, Bind génère un fichier de journal `.jnl` binaire du même nom que la zone, contenant l'historique des modifications apportées à la zone.
|
||||||
Il est possible de mettre à jour le fichier de zone directement mais ce n'est pas recommandé car on va devoir temporairement désactiver la mise à jour dynamique "freeze".
|
L'historique est
|
||||||
|
|
||||||
|
> **Note** : la synchronisation avec le fichier de zone n'est pas faite en temps réel, cela se fait toutes les 15 minutes en général, on peut forcer la synchronisation avec `$ rndc sync [nom_zone]`.
|
||||||
|
|
||||||
|
Pour éviter de donner à Bind le droit d'éditer tous les fichiers dans `/etc/bind`, il est préférable de placer les fichiers de zones mise à jour dynamique dans un dossier séparer ou bind à l'accès en écriture, par exemple :
|
||||||
|
|
||||||
|
~~~{.bash}
|
||||||
|
$ mkdir -p /etc/bind/dynamic-zones
|
||||||
|
$ chown -R bind:bind /etc/bind/dynamic-zones
|
||||||
|
~~~
|
||||||
|
|
||||||
|
> **Attention** : la zone ne doit pas contenir de directives telles que `$INCLUDE` et `$GENERATE` ... celles-ci seront perdues à la synchronisation avec le fichier journal
|
||||||
|
|
||||||
|
On peut alors mettre en place le fichier de zone dans ce dossier...
|
||||||
|
|
||||||
|
~~~{.bash}
|
||||||
|
# copier ou créer un fichier de zone avec les bon droits
|
||||||
|
$ touch /etc/bind/dynamic-zones/db.example.com
|
||||||
|
$ chown bind:bind /etc/bind/dynamic-zones/db.example.com
|
||||||
|
~~~
|
||||||
|
|
||||||
|
Puis activer la mise à jour dynamique dans sa configuration :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
|
zone "example.com" in {
|
||||||
|
type master;
|
||||||
|
file "/etc/bind/dynamic-zones/db.example.com";
|
||||||
|
allow-update { key "custom-tsig"; localhost ;};
|
||||||
|
allow-transfer { key "secondary-tsig"; 1.2.3.4 ; localhost ; };
|
||||||
|
// update-policy {
|
||||||
|
// grant custom-tsig name _acme-challenge.example.com. txt;
|
||||||
|
// };
|
||||||
|
// serial-update-method ( date | increment | unixtime );
|
||||||
|
};
|
||||||
|
~~~
|
||||||
|
|
||||||
|
* `allow-update` permet d'autoriser la mise à jour de toute la zone avec des IPs ou clefs TSIGs tandis que `update-policy` permet de contrôler finement quels champs peuvent être mis à jour, voir [configuration update-policy](#configuration-update-policy)
|
||||||
|
* `allow-transfer` pour permettre de transférer la zone, utilisé pour que le client puisse aussi récupérer la zone
|
||||||
|
* `serial-update-method` permet de définir le mécanisme de mise à jour du serial SOA (incrément par défaut).
|
||||||
|
|
||||||
|
> Voir [mise en place d'une clef tsig](#mise-en-place-de-clefs-tsigs) si besoin
|
||||||
|
|
||||||
|
On peut ensuite tester le fonctionnement en jouant nsupdate ou nsvi pour ajouter ou supprimer une entrée.
|
||||||
|
|
||||||
|
Si le nsupdate fonctionne, on peut alors vérifier avec un dig normal ou axfr ( par exemple `dig -t axfr example.com @localhost` sur le server dns) ou encore mieux, en [controlant le journal](#contrôler-le-journal-dune-zone).
|
||||||
|
|
||||||
|
### client nsupdate
|
||||||
|
|
||||||
|
nsupdate est utilitaire en ligne de commande interactif fournit le paquet de bind `bind9-dnsutils` sur Debian.
|
||||||
|
|
||||||
|
Celui-ci permet d'envoyer des demandes de mise à jour à un serveur dns, avec ou sans TSIGs :
|
||||||
|
|
||||||
|
~~~{.bash}
|
||||||
|
# nsupdate [-y [hmac:]keyname:secret]
|
||||||
|
$ nsupdate -y hmac-sha512:happydomain:"3JtiVQEBFXtQeU/3PorKpCV7jM1bZEEzkdD1zb9emvwaBZFSgYxOXV41OdSeeHb5dcud+SvNo47jEf5yRwfSkQ=="
|
||||||
|
> server <adresse_server> [port]
|
||||||
|
> zone example.com
|
||||||
|
> update add www.example.com. 172800 IN A 192.168.254.7
|
||||||
|
> send
|
||||||
|
>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
> Une réponse vide après send indique que la mise à jour à eu lieu. Sinon un code d'erreur sera affiché.
|
||||||
|
|
||||||
|
Le manuel contient plusieurs examples.
|
||||||
|
|
||||||
|
### nsdiff
|
||||||
|
|
||||||
|
Documentation : <https://dotat.at/prog/nsdiff/>
|
||||||
|
|
||||||
|
nsdiff est outil permettant de faciliter l'utilisation de nsupdate avec différents utilitaires:
|
||||||
|
|
||||||
|
* nsdiff : comme son nom l'indique, permet de voir la diff entre une ancienne et une nouvelle vertsion de la zone, sa sortie peut directement etre fournie à nsupdate : `nsdiff | nsupdate`
|
||||||
|
* nspatch : joue `nsdiff | nsupdate` et n'affiche rien s'il n'y a pas d'erreur, utile dans un CRON
|
||||||
|
* nsvi : fait un transfert de zone, ouvre la zone dans vi (ou un autre editeur) et envoie les mise à jour avec `nsdiff | nsupdate`
|
||||||
|
|
||||||
|
> **Remarque** : les enregistrements dnssec sont retirés avant de passer la zone à l'éditeur et il n'y a pas besoin de s'occuper du SOA
|
||||||
|
|
||||||
|
Exemples d'utilisations (WIP) :
|
||||||
|
|
||||||
|
~~~{.bash}
|
||||||
|
# editer une zone dynamique sur le serveur dns ... (avec localhost dans allow-update)
|
||||||
|
# nsvi example.com
|
||||||
|
# editer une zone dynamique avec la clef tsig associée
|
||||||
|
~~~
|
||||||
|
|
||||||
|
### Contrôler le journal d'une zone
|
||||||
|
|
||||||
|
On peut vérifier le contenu du journal
|
||||||
|
|
||||||
|
~~~{.bash}
|
||||||
# voir les changement dans le fichier de journal .jnl
|
# voir les changement dans le fichier de journal .jnl
|
||||||
$ named-journalprint [fichier_zone_jnl]
|
$ named-journalprint [fichier_zone_jnl]
|
||||||
# si il y a des changement, on peut les synchroniser et vider le journal
|
# si il y a des changement, on peut les synchroniser et vider le journal
|
||||||
$ rndc sync -clean example.com
|
$ rndc sync -clean example.com
|
||||||
# desactiver la mise à jour dynamique
|
~~~
|
||||||
|
|
||||||
|
### Mise à jour manuelle de la zone
|
||||||
|
|
||||||
|
Il est possible de mettre à jour le fichier de zone directement, mais ce n'est pas recommandé, car on va devoir temporairement désactiver la mise à jour dynamique "freeze".
|
||||||
|
|
||||||
|
Avant cela, il est préférable de vérifier l'état du journal et de la vider ( voir [contrôler le journal](#contrôler-le-journal-dune-zone) )
|
||||||
|
|
||||||
|
~~~{.bash}
|
||||||
|
# désactiver la mise à jour dynamique
|
||||||
$ rndc freeze [nom_zone]
|
$ rndc freeze [nom_zone]
|
||||||
# Modification manuelle de la zone avec vim ou autre
|
# Modification manuelle de la zone avec vim ou autre
|
||||||
$ named-checkzone <nom_zone> <fichier_de_zone>
|
$ named-checkzone <nom_zone> <fichier_de_zone>
|
||||||
|
@ -443,17 +544,9 @@ $ rndc unfreeze [nom_zone]
|
||||||
$ rndc reload [nom_zone]
|
$ rndc reload [nom_zone]
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
Comme cela est compliqué et risqué, il est préférable d'utiliser un outil comme nsdiff avec nsvi qui va nous permettre d'éditer la zone comme si on l'edite à la main, mais va envoyer les changements par demande de mise à jour.
|
Comme cela est compliqué et risqué, il est préférable d'utiliser un outil comme nsdiff avec nsvi qui va nous permettre d'éditer la zone comme si on l'édite à la main, mais va envoyer les changements par demande de mise à jour, voir [nsdiff](#nsdiff).
|
||||||
|
|
||||||
Voir : https://dotat.at/prog/nsdiff/ (documentation à venir)
|
### Mise en place de clefs TSIGs
|
||||||
|
|
||||||
> *Note* : la synchronisation avec le fichier réel de zone n'est pas faite en temps réel, cela se fait toutes les 15 minutes en général, on peut forcer la synchronisation avec :
|
|
||||||
|
|
||||||
~~~
|
|
||||||
$ rndc sync [nom_zone]
|
|
||||||
~~~
|
|
||||||
|
|
||||||
### Petit guide TSIG
|
|
||||||
|
|
||||||
On peut utiliser nsupdate, ou n'importe quel client, pour mettre à jour la zone en s'authentifiant avec une clef [TSIG](/Glossaire.md#tsig).
|
On peut utiliser nsupdate, ou n'importe quel client, pour mettre à jour la zone en s'authentifiant avec une clef [TSIG](/Glossaire.md#tsig).
|
||||||
Pour mettre celle-ci en place, il faut ...
|
Pour mettre celle-ci en place, il faut ...
|
||||||
|
@ -485,20 +578,6 @@ $ named-checkconf /etc/bind/named.conf && rndc reload
|
||||||
$ rndc tsig-list
|
$ rndc tsig-list
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
On peut alors confirmer le fonctionnement avec nsupdate
|
|
||||||
|
|
||||||
~~~{.bash}
|
|
||||||
$ nsupdate -y hmac-sha512:happydomain:"3JtiVQEBFXtQeU/3PorKpCV7jM1bZEEzkdD1zb9emvwaBZFSgYxOXV41OdSeeHb5dcud+SvNo47jEf5yRwfSkQ=="
|
|
||||||
> server <adresse_server> [port]
|
|
||||||
> zone example.com
|
|
||||||
> update add www.example.com. 172800 IN A 192.168.254.7
|
|
||||||
> send
|
|
||||||
>
|
|
||||||
~~~
|
|
||||||
|
|
||||||
Une réponse vide après send indique que la mise à jour à eu lieu. Sinon un code d'erreur sera affiché.
|
|
||||||
|
|
||||||
|
|
||||||
## DNSSEC
|
## DNSSEC
|
||||||
|
|
||||||
### Ajouter la gestion DNSSEC
|
### Ajouter la gestion DNSSEC
|
||||||
|
|
Loading…
Reference in a new issue