But
Installation d’un serveur DNS(bind9) avec un backend MySQL sous Ubuntu 10.04
Pré-requis
- Préparer l’environement en exécutant :
mkdir -p /usr/local/src/bind9 cd /usr/local/src/bind9
- Installer les pacquets nessécaires :
apt-get update -y apt-get install -y build-essential mysql-server fakeroot bison libmysqlclient15-dev \ libkrb5-dev libkrb5-dev libssl-dev libtool libdb-dev libldap2-dev libldap2-dev libcap2-dev \ hardening-wrapper debhelper libxml2-dev libgeoip-dev apt-get source -y bind9
BIND
Préparation
- Récupurer le nom du répertoire (varie selon la version)
Voici un exemple de résultat, le nom recherché est marqué en gras
ls -1
bind9-9.5.1.dfsg.P2 bind9_9.5.1.dfsg.P2-1.diff.gz bind9_9.5.1.dfsg.P2-1.dsc bind9_9.5.1.dfsg.P2.orig.tar.gz
- Entrer dans le répertoire
cd bind9-9.5.1.dfsg.P2 - Éditer le fichier des règles de compilation
Et changer la ligne –with-dlz-mysql=no par –with-dlz-mysql=yes ou vous pouvez exécuter la commande suivante dans vi :
vi debian/rules
Enregistrer le fichier et quitter:%s/dlz-mysql=no/dlz-mysql=yes/g
:wq
Compilation
Pour compiler l’application exécuter la commande suivante :
dpkg-buildpackage -rfakeroot -b
| Si dpkg-buildpackage vous spécifie qu’il manque des dépendances (unmet dependencies) Installer les dépendances avec la commande apt-get install et réessailler. |
Installation
- Reculer d’un répertoire :
cd .. ls -l
bind9-9.5.1.dfsg.P2 bind9_9.5.1.dfsg.P2-1_amd64.changes bind9_9.5.1.dfsg.P2-1_amd64.deb bind9_9.5.1.dfsg.P2-1.diff.gz bind9_9.5.1.dfsg.P2-1.dsc bind9_9.5.1.dfsg.P2.orig.tar.gz bind9-doc_9.5.1.dfsg.P2-1_all.deb bind9-host_9.5.1.dfsg.P2-1_amd64.deb bind9utils_9.5.1.dfsg.P2-1_amd64.deb dnsutils_9.5.1.dfsg.P2-1_amd64.de libbind9-40_9.5.1.dfsg.P2-1_amd64.deb libbind-dev_9.5.1.dfsg.P2-1_amd64.deb libdns45_9.5.1.dfsg.P2-1_amd64.deb libisc45_9.5.1.dfsg.P2-1_amd64.deb libisccc40_9.5.1.dfsg.P2-1_amd64.deb libisccfg40_9.5.1.dfsg.P2-1_amd64.deb liblwres40_9.5.1.dfsg.P2-1_amd64.deb lwresd_9.5.1.dfsg.P2-1_amd64.deb
- Installer les pacquets sur votre système.
dpkg -i *.deb
Configuration
- Forcer bind a être exécuter en un seul thread. Éditier le fichier /etc/default/bind9/etc/default/bind9
- run resolvconf? RESOLVCONF=yes
- startup options for the server OPTIONS=”-u bind -n 1”
Bind semble avoir un problème lorsque qu’il est exécuter en multithread. L’erreur “mysql driver unable to return result set for findzone query” apparait dans les fichier de log et bind fini par arrêter.
- Voici un exemple pour le fichier /etc/bind/named.conf.localcat /etc/bind/named.conf.local
dlz "Mysql zone" { database "mysql {host=localhost dbname=Nom_de_la_Base_de_Donnee user=Nom_d_utilisateur pass=Mot_de_passe ssl=false} {select zone from dns_records where zone = '$zone$'} {select ttl, type, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"') when lower(type) = 'soa' then concat_ws(' ', data, resp_person, serial, refresh, retry, expire, minimum) else data end from dns_records where zone = '$zone$' and host = '$record$'}"; };