NamedManager : une interface web agréable pour administrer Bind
Software version | 1.5.1 |
---|---|
Operating System | Debian 7 |
Website | Namedmanager Website |
Last Update | 14/04/2013 |
Others |
1 Introduction
Namedmanager[1] est une interface graphique pour gérer vos enregistrements DNS. Elle a été correctement pensée pour faciliter l'administration, comme par exemple l'ajout automatique d'un enregistrement PTR au renseignement d'un enregistrement A, par simple checkbox.
L'interface est également capable de gérer plusieurs serveurs DNS et centraliser les logs de ceux ci.
2 Prérequis
Nous allons avoir besoin de plusieurs éléments. J'ai donc choisis :
- Serveur web : Nginx avec SSL + PHP-FPM
- Base de données : MariaDB
2.1 Nginx
Pour l'installation, on est sur Debian donc c'est toujours aussi simple :
aptitude |
aptitude install nginx |
Puis on va le démarrer :
aptitude |
/etc/init.d/nginx start |
2.1.1 SSL
Dans un premier temps, on va générer des clefs SSL :
mkdir -p /etc/nginx/ssl cd /etc/nginx/ssl openssl req -new -x509 -nodes -out server.crt -keyout server.key |
Puis nous allons modifier notre configuration Nginx (a vous d'adapter selon vos besoins) :
2.2 PHP-FPM
aptitude install php5-fpm |
2.3 MariaDB
To install MariaDB, it's unfortunately not embedded in Debian, so we'll add a repository. First of all, install a python tool to get aptkey :
aptitude |
aptitude install python-software-properties |
Then let's add this repository (https://downloads.mariadb.org/mariadb/repositories/) :
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db add-apt-repository 'deb http://mirrors.linsrv.net/mariadb/repo/10.0/debian wheezy main' |
We're now going to change apt pinning to prioritize MariaDB's repository :
/etc/apt/preferences.d/mariadb |
Package: * Pin: release o=MariaDB Pin-Priority: 1000 |
Et on installe MariaDB :
aptitude |
aptitude update aptitude install mariadb-server |
Puis nous allons ajouter les derniers packages nécessaire :
aptitude |
aptitude install php5-cli php5-mysql |
3 Installation
Notes | ||
Si votre serveur DNS se trouve sur la même machine que l'interface graphique, alors il faudra l'installer :
|
Nous allons avoir besoin de ces utilitaires pour faire fonctionner l'interface web :
aptitude |
aptitude install bind9utils php-soap |
Nous allons récupérer la dernière version , puis la décompresser :
cd /tmp wget https://projects.jethrocarr.com/p/oss-namedmanager/downloads/get/namedmanager-1.5.1.tar.bz2 tar -xjf namedmanager-1.5.1.tar.bz2 cd namedmanager-1.5.1 |
Nous allons mettre en place les outils permettant l'intégration avec bind :
Puis la crontab :
cp |
cp resources/namedmanager-bind.cron /etc/cron.d/namedmanager-bind |
Nous allons également mettre en place un service de logpush qui nous permettra de centraliser les logs :
cp resources/namedmanager_logpush.rcsysinit /etc/init.d/namedmanager_logpush update-rc.d -f namedmanager_logpush defaults |
Pour finir, nous créons les fichiers nécessaire au bon fonctionnement de l'interface web en assignant les bons droits :
touch /etc/bind/named.namedmanager.conf mkdir /etc/bind/zones chown www-data:bind /etc/bind/named.namedmanager.conf /etc/bind/zones chmod 775 /etc/bind/named.namedmanager.conf /etc/bind/zones |
4 Configuration
4.1 Base de données
Maintenant, nous allons initialiser la base de données :
mysql |
mysql -uroot -p < sql/version_20121208_install.sql |
WARNING |
Contrairement à des imports classiques, celui ci créer en même temps la base de données appelée 'namedmanager' |
et mettre les bons droits (ajustez selon vos besoins) :
4.2 Serveur web
Nous allons nous occuper de la partie web. Personnellement, j'ai une machine dédiée à gérer mes DNS sur laquelle je ne veux pas de virtualhosts. Donc je met tout à la racine de mon serveur, mais vous n'êtes pas obligé de faire comme moi non plus. Puis nous allons créer le fichier de configuration et le mettre dans /etc :
Editez votre configuration pour qu'elle ai les bonnes informations sur la base de données :
Avant de passer à la suite, il est temps de redémarrer tous les services qui ont été modifiés :
service php5-fpm restart service nginx restart service cron restart |
4.3 Bind et clé API
Nous allons intégrer la configuration de NamedManager à Bind :
Redémarrez ensuite Bind.
Générerons une clé API (vous pouvez utiliser la méthode que vous souhaitez ou faire comme moi) :
date |
> date +%s | sha256sum | base64 | head -c 32 ; echo YmI3ZGRlYWY3NTk4ZDAzMGJmYWE1NDdh |
Éditons ensuite le fichier de configuration suivant et adaptez le selon vos besoins :
4.4 Interface web
Maintenant, vous pouvez accéder en https sur votre serveur (moi c'est : https://dns.deimos.fr) avec les identifiants suivants :
- Login : setup
- Password : setup123
4.4.1 Création d'un utilisateur
Allez dans la partie "User Managment", créez vous un nouveau compte en lui donnant les privilèges admin, testez le et supprimez le compte setup ou changez lui le mot de passe. Vous devriez ensuite voir apparaitre uniquement votre utilisateur :
4.4.2 Clé API
Allez dans "Configuration" de l'interface pour mettre cette clé :
- Mettez l'adresse email de contact
- Entrez la clé précédemment générée
- Sauvegardez les changements
4.4.3 Finalisation et synchronisation
Il est maintenant temps d'ajouter un serveur DNS depuis l'interface graphique ! Faites le une fois en ajoutant la clef API etc...
Maintenant ajoutez un domaine :
et synchronisez le tout :
php |
php -q /usr/share/namedmanager/bind/namedmanager_bind_configwriter.php |
Notes |
Lancez la commande 5 fois de suite, j'ai rencontré quelques soucis la première fois |
Tout est normalement fonctionnel maintenant :-), vous pouvez ajouter des enregistrements :
5 FAQ
5.1 Pourquoi mes changements ne fonctionnent pas même après un reboot de bind ?
Regardez vos logs ! Si vous avez des messages du type :
Vérifiez votre fichier de configuration généré par NamedManager. A l'heure ou j'écris ces lignes j'ai soumis le patch et suis en attente d'intégration, je me suis trouvé avec cette erreur :
Il manque le path complet du fichier de zones pour que cela fonctionne correctement. Pour remédier à ce problème, modifiez la ligne 246 de ce fichier par ceci :
Puis sauvegardez via l'interface de nouveau vos domaines (même sans faire de modifications) et relancez la commande exécutée au cron :
php |
php -q /usr/share/namedmanager/bind/namedmanager_bind_configwriter.php |
Maintenant le fichier /etc/bind/named.namedmanager.conf contient le full path et vous pouvez redémarrer bind avec vos zones correctement chargées.