Serveur DNS · 9 min read · Jan 10, 2026

Exécution d'un serveur DNS basé sur MySQL : MyDNS - Page 2

2 Installer une interface Web pour MyDNS

Dans les étapes suivantes, je suppose que vous utilisez Debian Sarge ; le répertoire racine par défaut d’Apache sur Debian est /var/www, donc je vais installer les interfaces Web ici. De plus, je suppose que le nom d’hôte est ns1.example.com.

2.1 phpMyAdmin

phpMyAdmin a été installé au début de ce tutoriel ( apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin), donc vous devriez pouvoir y accéder sous http://ns1.example.com/phpmyadmin. Ensuite, sélectionnez la base de données mydns, et vous devriez voir les tables rr et soa. Consultez cette page pour une explication de la structure/champs de la base de données, etc. : http://mydns.bboy.net/doc/html/mydns_8.html#SEC8

2.2 L’interface Web MyDNS originale

Pour installer l’interface Web MyDNS originale (qui vient avec les sources de MyDNS qui devraient encore être dans le répertoire /tmp), faites ceci :

cp /tmp/mydns-1.0.0/contrib/admin.php /var/www

Ensuite, éditez /var/www/admin.php et configurez les variables dans la première partie de ce script, par exemple comme ceci :

| /*************************************************************************** OPTIONS CONFIGURABLES ***************************************************************************/ /* Définissez les quatre variables suivantes sur le nom d'hôte de votre serveur SQL, le nom d'utilisateur et le mot de passe utilisés pour accéder à ce serveur, et le nom de la ** base de données où se trouvent vos données MyDNS. */ $dbhost = "localhost"; $dbuser = "mydns"; $dbpass = "mydns_password"; $dbname = "mydns"; /* Ce script utilise MySQL par défaut. Pour utiliser PostgreSQL à la place, définissez '$use_pgsql' sur '1'. */ $use_pgsql = 0; /* Les deux variables suivantes indiquent à ce script le nom de votre SOA table et le nom de votre table RR. */ $soa_table_name = "soa"; $rr_table_name = "rr"; /* Les deux valeurs suivantes configurent le nombre d'enregistrements affichés par page dans le navigateur de zone et l'éditeur d'enregistrements de ressources, respectivement. */ $zone_group_size = 25; $rr_group_size = 20; /* Ce script peut automatiquement mettre à jour le numéro de série pour une zone chaque fois qu'un client modifie un enregistrement dans cette zone. ** Définir '$auto_update_serial' sur '1' activera cette option. */ $auto_update_serial = 1; /* Ce script peut automatiquement mettre à jour les enregistrements PTR lorsque vous modifiez, ajoutez ou supprimez des enregistrements A. Pour activer cette fonctionnalité, définissez '$auto_update_ptr' sur '1'. Si vous activez cela, assurez-vous de remplir les valeurs pour '$default_ns' et '$default_mbox', ci-dessous, afin que ** les nouveaux enregistrements SOA aient les bonnes informations. */ $auto_update_ptr = 1; /* Si cette option est non nulle, ce script ne se plaindra pas si le TTL pour un enregistrement est défini en dessous du minimum de zone. Notez que si $ttl_min ci-dessous est non nul, cette valeur sera toujours ** vérifiée. */ $ignore_minimum_ttl = 1; /* Les valeurs suivantes sont utilisées par ce script pour imposer des valeurs minimales pour les enregistrements SOA et RR. Le script empêchera les clients d'entrer ** des valeurs inférieures à ces nombres. */ $ttl_min = 300; $refresh_min = 300; $retry_min = 300; $expire_min = 86400; /* Les deux variables suivantes spécifient le serveur de noms par défaut pour les nouveaux enregistrements SOA, et la boîte aux lettres administrateur par défaut pour les nouveaux enregistrements SOA. ** Celles-ci seront remplies automatiquement chaque fois qu'une nouvelle zone est créée. */ $default_ns = "ns1.example.com."; $default_mbox = "admin.example.com."; /* Le tableau suivant spécifie les enregistrements par défaut pour les nouveaux enregistrements SOA. Ceux-ci sont insérés automatiquement chaque fois qu'un SOA est inséré. ** Le format de chaque enregistrement est (nom, type, aux, données). */ $default_records = array( array("", "NS", 0, "ns1.example.com."), /* array("", "MX", 10, "mail.example.com.") */ ); /* Les cinq valeurs suivantes seront utilisées comme valeurs par défaut chaque fois que de nouvelles zones sont créées. */ $default_ttl = 86400; $default_refresh = 28800; $default_retry = 7200; $default_expire = 604800; $default_minimum_ttl = 86400; /* ** Le reste de ces variables permet des changements cosmétiques. */ $fontsize = 12; /* Taille de police par défaut (pixels) */ $font_color = "#663300"; /* Couleur de police */ $page_bgcolor = "white"; /* Couleur de fond de la page */ $help_bgcolor = "#FFFFCC"; /* Couleur de fond de la boîte d'aide principale */ $soa_bgcolor = "#FFFF99"; /* Couleur de fond de l'éditeur SOA */ $list_bgcolor_1 = "#FFFFCC"; /* Couleur de fond des éléments de liste #1 */ $list_bgcolor_2 = "#FFFFAA"; /* Couleur de fond des éléments de liste #2 */ $query_bgcolor = "#FFFFCC"; /* Couleur de fond de l'entrée de requête de recherche */ $query_fgcolor = "black"; /* Couleur de police de l'entrée de requête de recherche */ $input_bgcolor = "white"; /* Couleur de fond de la boîte de saisie de texte */ $input_fgcolor = "black"; /* Couleur de police de la boîte de saisie de texte */ /** Fin des options configurables *****************************************/ |

Prenez soin de remplir les bonnes informations de base de données. En plus de cela, j’ai défini $auto_update_serial et $auto_update_ptr sur 1 et spécifié des valeurs dans $default_ns et $default_mbox afin que les numéros de série soient incrémentés automatiquement en cas de modifications et que les enregistrements PTR soient également créés automatiquement. Mais bien sûr, cela dépend de vous si vous souhaitez ce comportement.

Vous pouvez maintenant accéder à l’interface Web sous http://ns1.example.com/admin.php.

2.3 Installer MyDNSConfig

MyDNSConfig est une interface écrite par moi en utilisant PHP. J’ai constaté que l’interface Web MyDNS originale est difficile à gérer pour les débutants car elle n’a pas de descriptions de champs (elle est facile à gérer si vous venez du monde de Bind en raison de la conception de l’interface qui ressemble aux fichiers de zone de Bind).

Vous pouvez télécharger MyDNSConfig depuis http://www.mydnsconfig.org.

Maintenant, supposons que vous avez téléchargé mydnsconfig-.tar.gz dans /tmp. Ensuite, vous l’installez comme ceci :

cd /tmp
tar xvfz mydnsconfig-.tar.gz
cd mydnsconfig
cp -fr
/var/www*

Ensuite, vous devez ajuster /var/www/lib/config.inc.php. Le mien ressemble à ceci :

| |

Assurez-vous de remplir les bonnes informations de base de données ! Si vous souhaitez que MyDNSConfig crée automatiquement des enregistrements DNS inverses ( enregistrements PTR) lorsque vous créez de nouveaux enregistrements DNS, définissez $conf[‘auto_create_ptr’] sur 1 et spécifiez un serveur de noms par défaut dans $conf[‘default_ns’] (n’oubliez pas le point à la fin !) et une adresse e-mail administrateur dans $conf[‘default_mbox’] (également avec un point à la fin, et le signe @ doit être remplacé par un point !).

Ensuite, nous devons modifier la table rr et soa dans la base de données mydns et créer une nouvelle table nécessaire à MyDNSConfig :

mysql -u root -p
Entrez le mot de passe :

Utiliser mydns ;

ALTER TABLE rr ADD sys_userid INT NOT NULL,
ADD sys_groupid INT NOT NULL AFTER sys_userid,
ADD sys_perm_user VARCHAR( 5 ) NOT NULL AFTER sys_groupid,
ADD sys_perm_group VARCHAR( 5 ) NOT NULL AFTER sys_perm_user,
ADD sys_perm_other VARCHAR( 5 ) NOT NULL AFTER sys_perm_group;

ALTER TABLE soa ADD sys_userid INT NOT NULL,
ADD sys_groupid INT NOT NULL AFTER sys_userid,
ADD sys_perm_user VARCHAR( 5 ) NOT NULL AFTER sys_groupid,
ADD sys_perm_group VARCHAR( 5 ) NOT NULL AFTER sys_perm_user,
ADD sys_perm_other VARCHAR( 5 ) NOT NULL AFTER sys_perm_group;

CREATE TABLE sys_user (
userid int(11) NOT NULL auto_increment,
sys_userid int(11) NOT NULL default ‘0’,
sys_groupid int(11) NOT NULL default ‘0’,
sys_perm_user varchar(5) NOT NULL default ‘’,
sys_perm_group varchar(5) NOT NULL default ‘’,
sys_perm_other varchar(5) NOT NULL default ‘’,
username varchar(100) NOT NULL default ‘’,
passwort varchar(100) NOT NULL default ‘’,
modules varchar(255) NOT NULL default ‘’,
startmodule varchar(255) NOT NULL default ‘’,
app_theme varchar(100) NOT NULL default ‘default’,
typ varchar(20) NOT NULL default ‘user’,
active tinyint(4) NOT NULL default ‘1’,
name varchar(100) NOT NULL default ‘’,
vorname varchar(100) NOT NULL default ‘’,
unternehmen varchar(100) NOT NULL default ‘’,
strasse varchar(100) NOT NULL default ‘’,
ort varchar(100) NOT NULL default ‘’,
plz varchar(10) NOT NULL default ‘’,
land varchar(50) NOT NULL default ‘’,
email varchar(100) NOT NULL default ‘’,
url varchar(255) NOT NULL default ‘’,
telefon varchar(100) NOT NULL default ‘’,
fax varchar(100) NOT NULL default ‘’,
language varchar(10) NOT NULL default ‘de’,
groups varchar(255) NOT NULL default ‘’,
default_group int(11) NOT NULL default ‘0’,
PRIMARY KEY (userid)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

INSERT INTO sys_user (userid, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, username, passwort, modules, startmodule, app_theme, typ, active, name, vorname, unternehmen, strasse, ort, plz, land, email, url, telefon, fax, language, groups, default_group) VALUES (1, 1, 0, ‘riud’, ‘riud’, ‘’, ‘admin’, ‘21232f297a57a5a743894a0e4a801fc3’, ‘admin,designer,resellers,sites,dns’, ‘dns’, ‘default’, ‘admin’, 1, ‘’, ‘Administrateur’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘fr’, ‘1,2’, 1);

quit;

Maintenant, vous pouvez accéder à MyDNSConfig sous http://ns1.example.com. Le nom d’utilisateur par défaut est admin, le mot de passe est également admin. Veuillez changer le mot de passe après votre première connexion sous Système -> Modifier l’utilisateur.

2.4 Utiliser dig pour tester vos enregistrements

Après avoir créé des enregistrements DNS en utilisant l’une des trois interfaces Web que j’ai décrites ici, vous pouvez tester vos enregistrements en utilisant dig. Supposons que vous ayez créé la zone test.com. (avec un point à la fin !) avec l’enregistrement A www. Lorsque vous exécutez

dig @localhost www.test.com

la sortie devrait ressembler à ceci :

| :~# dig @localhost www.test.com ; <> DiG 9.2.4 <> @localhost www.test.com ;; options globales : printcmd ;; Réponse reçue : ;; ->>HEADER<<- opcode : QUERY, status : NOERROR, id : 12658 ;; flags : qr aa rd; QUERY : 1, RÉPONSE : 1, AUTORITÉ : 0, ADDITIONNEL : 0 ;; SECTION QUESTION : ;www.test.com. IN A ;; SECTION RÉPONSE : www.test.com. 86400 IN A 1.2.3.4 ;; Temps de requête : 20 msec ;; SERVEUR : 1.2.3.4#53(localhost) ;; QUAND : Ven Déc 16 14:14:19 2005 ;; TAILLE MSG reçue : 45 |

Si vous avez activé la création automatique des enregistrements PTR dans l’interface Web MyDNS originale ou dans MyDNSConfig, vous pouvez également vérifier l’enregistrement DNS inverse. Si www.test.com pointe vers 1.2.3.4, alors

dig @localhost -x 1.2.3.4

devrait montrer quelque chose comme ceci :

| ~# dig @localhost -x 1.2.3.4 ; <> DiG 9.2.4 <> @localhost -x 1.2.3.4 ;; options globales : printcmd ;; Réponse reçue : ;; ->>HEADER<<- opcode : QUERY, status : NOERROR, id : 46572 ;; flags : qr aa rd; QUERY : 1, RÉPONSE : 1, AUTORITÉ : 0, ADDITIONNEL : 0 ;; SECTION QUESTION : ;4.3.2.1.in-addr.arpa. IN PTR ;; SECTION RÉPONSE : 4.3.2.1.in-addr.arpa. 86400 IN PTR www.test.com. ;; Temps de requête : 15 msec ;; SERVEUR : 1.2.3.4#53(localhost) ;; QUAND : Ven Déc 16 14:21:05 2005 ;; TAILLE MSG reçue : 69 |

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.