_ _____ _ _ _____
/\ | | | __ \ | \ | | / ____|
/ \ _ _ | |_ ___ | | | | | \| | | (___
/ /\ \ | | | | | __| / _ \ | | | | | . ` | \___ \
/ ____ \ | |_| | | |_ | (_) | | |__| | | |\ | ____) |
/_/ \_\ \__,_| \__| \___/ |_____/ |_| \_| |_____/
AutoDNS est un outil qui automatise la configuration d'un serveur DNS basé sur Bind9 sous Ubuntu ou Debian. Il génère automatiquement les fichiers de zone nécessaires pour les résolutions DNS directes et inverses, met à jour la configuration de Bind9, et redémarre le service pour appliquer les changements.
Ce dépôt contient deux versions du script (English_version.py
et French_version.py
), qui offrent les mêmes fonctionnalités mais avec des interfaces utilisateur dans des langues différentes.
Avant d'utiliser ce script, assurez-vous d'avoir installé les dépendances suivantes:
- Ubuntu ou Debian (recommandé: 18.04 pour ubuntu ou plus récent / 12 LTS pour Debian)
- Python 3.x
- Bind9
- dnspython
- Privilèges administrateur (sudo)
- Mise à jour du système et installation de Bind9:
sudo apt update
sudo apt install -y bind9 bind9utils bind9-doc
- Installation de dnspython:
pip install dnspython
autodns/
├── English_version.py # Script en anglais
├── French_version.py # Script en français
├── README.md # Ce fichier
Avant d'exécuter le script, vous devrez l'adapter à votre environnement spécifique. Voici les principales variables à modifier:
Dans les scripts, recherchez et modifiez les valeurs suivantes:
# Dans la version anglaise (English_version.py)
IP_ADDRESS = "192.168.183.17"
DOMAIN_NAME = "integris.ptt"
# Dans la version française (French_version.py)
ADRESSE_IP = "192.168.183.17"
NOM_DOMAINE = "integris.ptt"
Les scripts offrent des options supplémentaires pour personnaliser leur comportement :
# Dans la version anglaise (English_version.py)
BACKUP_FILES = True # Créer des sauvegardes des fichiers existants
RESTART_SERVICE = True # Redémarrer le service Bind9 après configuration
ADD_SAMPLE_RECORDS = True # Ajouter des exemples d'enregistrements DNS
# Dans la version française (French_version.py)
CREER_SAUVEGARDES = True # Créer des sauvegardes des fichiers existants
REDEMARRER_SERVICE = True # Redémarrer le service Bind9 après configuration
AJOUTER_EXEMPLES = True # Ajouter des exemples d'enregistrements DNS
Les chemins des fichiers sont générés automatiquement en fonction du nom de domaine et de l'adresse IP :
# La fonction crée automatiquement les chemins suivants
zone_file_path = f'/etc/bind/db.{DOMAIN_NAME}'
ip_prefix = '.'.join(IP_ADDRESS.split('.')[:3])
reverse_zone_file_path = f'/etc/bind/db.{ip_prefix}'
named_conf_local_path = '/etc/bind/named.conf.local'
Si l'option ADD_SAMPLE_RECORDS
(ou AJOUTER_EXEMPLES
dans la version française) est activée, le script ajoute automatiquement plusieurs enregistrements DNS d'exemple. Vous pouvez personnaliser cette fonction pour ajouter vos propres enregistrements :
# Dans la fonction generate_forward_zone_content() / generer_contenu_zone_directe()
# Vous pouvez modifier cette section pour ajouter vos propres enregistrements
if ADD_SAMPLE_RECORDS: # ou AJOUTER_EXEMPLES dans la version française
content += f"""www IN A {IP_ADDRESS}
mail IN A {IP_ADDRESS}
webmail IN CNAME mail.{DOMAIN_NAME}.
"""
# Pour ajouter d'autres enregistrements personnalisés, modifiez cette section
# Exemples :
# content += f"""ftp IN A {IP_ADDRESS}
# serveur1 IN A 192.168.183.18
# serveur2 IN A 192.168.183.19
# """
De même, vous pouvez personnaliser les enregistrements PTR dans la fonction qui génère la zone inverse :
# Dans la fonction generate_reverse_zone_content() / generer_contenu_zone_inverse()
# Le script génère automatiquement les enregistrements PTR pour les enregistrements standard
if ADD_SAMPLE_RECORDS: # ou AJOUTER_EXEMPLES dans la version française
content += f"{ptr_name} IN PTR ns.{DOMAIN_NAME}.\n"
content += f"{ptr_name} IN PTR www.{DOMAIN_NAME}.\n"
content += f"{ptr_name} IN PTR mail.{DOMAIN_NAME}.\n"
# Pour ajouter des enregistrements PTR personnalisés pour d'autres serveurs
# Exemple pour serveur1 avec IP 192.168.183.18:
# content += f"18.183.168.192.in-addr.arpa. IN PTR serveur1.{DOMAIN_NAME}.\n"
Les scripts génèrent automatiquement la structure correcte pour les enregistrements PTR, ce qui évite les erreurs courantes de syntaxe.
Les scripts améliorés vérifient automatiquement s'ils sont exécutés avec les privilèges administrateur nécessaires, et affichent un message d'erreur approprié le cas échéant.
- Rendez le script exécutable:
chmod +x English_version.py
# ou
chmod +x French_version.py
- Exécutez le script avec privilèges administrateur:
sudo python3 English_version.py
# ou
sudo python3 French_version.py
- Suivez les instructions à l'écran:
Le script vous guidera à travers les étapes suivantes:
- Vérification des paramètres
- Création des sauvegardes (si activé)
- Création des fichiers de zone
- Vérification de la configuration
- Redémarrage du service Bind9 (si activé)
- Affichage des instructions de test détaillées
Pour que votre système utilise ce serveur DNS, vous devez mettre à jour le fichier /etc/resolv.conf
:
sudo nano /etc/resolv.conf
Ajoutez les lignes suivantes (à adapter à votre configuration):
nameserver 192.168.183.17
search integris.ptt
Pour rendre cette configuration permanente (elle peut être écrasée par le système), vous pouvez utiliser resolvconf
:
sudo apt install resolvconf
sudo nano /etc/resolvconf/resolv.conf.d/base
Ajoutez les mêmes lignes que précédemment et mettez à jour:
sudo resolvconf -u
Après l'exécution du script, des instructions de test détaillées sont automatiquement affichées. Le script effectue également des vérifications de base avec les commandes named-checkzone
et named-checkconf
pour s'assurer que la configuration est syntaxiquement correcte.
Pour vérifier manuellement que votre serveur DNS fonctionne correctement, suivez les tests ci-dessous:
dig @192.168.183.17 integris.ptt
# Remplacez par votre IP et votre domaine
Résultat attendu: L'adresse IP associée au domaine est correctement renvoyée dans la section "ANSWER SECTION".
dig @192.168.183.17 -x 192.168.183.17
# Remplacez par votre IP
Résultat attendu: Le nom de domaine associé à l'adresse IP est correctement renvoyé dans un enregistrement PTR.
ping integris.ptt
# Remplacez par votre domaine
Resultat du test que nous avons efectués dans notre labo
root@Ubuntu:/etc/bind# ping integris.ptt
PING integris.ptt (192.168.183.17) 56(84) bytes of data.
64 bytes from www.integris.ptt (192.168.183.17): icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from www.integris.ptt (192.168.183.17): icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from www.integris.ptt (192.168.183.17): icmp_seq=3 ttl=64 time=0.168 ms
64 bytes from www.integris.ptt (192.168.183.17): icmp_seq=4 ttl=64 time=0.177 ms
64 bytes from www.integris.ptt (192.168.183.17): icmp_seq=5 ttl=64 time=0.084 ms
^C
--- integris.ptt ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4056ms
rtt min/avg/max/mdev = 0.034/0.109/0.177/0.054 ms
root@Ubuntu:/etc/bind#
Résultat attendu: Le ping fonctionne et l'hôte répond, avec le nom de domaine correctement résolu dans la réponse.
sudo systemctl status bind9
Les scripts incluent désormais des vérifications automatiques de la configuration pour détecter les problèmes courants. Voici comment résoudre les problèmes les plus fréquents :
Symptôme: Le message d'erreur "Failed to restart Bind9 service" s'affiche.
Solution:
-
Vérifiez l'état du service:
sudo systemctl status bind9
-
Consultez les journaux pour identifier l'erreur:
sudo journalctl -xe | grep named
-
Problèmes courants:
- Syntaxe incorrecte dans les fichiers de configuration
- Permissions de fichier incorrectes
- Nom de domaine ou IP déjà utilisés par un autre service
Symptôme: Les vérifications automatiques avec named-checkzone
échouent.
Solution:
-
Vérifiez manuellement les fichiers de zone:
sudo named-checkzone integris.ptt /etc/bind/db.integris.ptt sudo named-checkzone 183.168.192.in-addr.arpa /etc/bind/db.192.168.183
-
Erreurs courantes:
- Oubli du point final après les noms de domaine
- Format incorrect des enregistrements PTR
- Numéro de série non incrémenté après modifications
Symptôme: Les commandes dig
ou ping
ne fonctionnent pas comme prévu.
Solution:
-
Vérifiez que Bind9 écoute sur la bonne interface:
sudo netstat -tulpn | grep named
-
Vérifiez les paramètres du pare-feu:
sudo ufw status
-
Si nécessaire, autorisez le trafic DNS:
sudo ufw allow 53/tcp sudo ufw allow 53/udp
-
Vérifiez le fichier
/etc/resolv.conf
:cat /etc/resolv.conf
Assurez-vous qu'il contient:
nameserver 192.168.183.17 search integris.ptt
Les contributions à ce projet sont les bienvenues. Pour contribuer:
- Forkez ce dépôt
- Créez une branche pour votre fonctionnalité
- Soumettez une pull request
Ce projet est sous licence MIT.
MIT License
Copyright (c) 2025 AutoDNS Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Cette licence permet :
- L'utilisation commerciale
- La modification
- La distribution
- L'utilisation privée
Les utilisateurs doivent simplement inclure la notice de copyright et la permission ci-dessus dans toutes les copies ou parties substantielles du logiciel.
Les scripts incluent plusieurs fonctionnalités avancées que vous pouvez explorer :
Les scripts vérifient automatiquement la validité de l'adresse IP et du nom de domaine avant de procéder à la configuration.
Les chemins de fichiers et leur contenu sont générés dynamiquement en fonction de l'adresse IP et du nom de domaine fournis.
Les fichiers existants sont automatiquement sauvegardés avant d'être modifiés, ce qui permet de revenir facilement à une configuration antérieure.
Les scripts utilisent les outils named-checkzone
et named-checkconf
pour vérifier la validité de la configuration avant de redémarrer le service.
- [Tidiane SAVADOGO] - Développeur principal
- Merci à tous les contributeurs et testeurs
- Équipe de documentation pour la création du README.md détaillé
- Communauté Bind9 pour les excellentes ressources de documentation