Configurer un DNS interne et un serveur DHCP

Configurer un DNS interne et un serveur DHCP

13/03/2014

Dans​‌‍​‌​‌‍​‍ le tutoriel précédent nous avons vue comment configurer un routeur et un par feu sur une machine Ubuntu 13.10. Nous allons maintenant voir comment en faire un serveur DNS pour le domaine local ainsi qu’un relais pour les noms de domaine externes. Nous allons aussi voir comment configurer un serveur DHCP pour le réseau interne et comment affecter une adresse IP a une machine en se basant sur son adresse MAC.

Pour ce tutoriel je vais utiliser la même machine que pour le routeur mais sachez qu’il est possible de faire fonctionner ses services sur des machines indépendantes.

Le serveur DNS

Un serveur de DNS (Domain Name Service) a pour rôle de retourner l’adresse IP associée au nom d’une machine. Le DNS permet aussi de retrouver le ou les noms de domaines associés à une adresse IP, cela s’appelle du reverse DNS. Pour faire tourner tout ça nous allons utiliser Bind9, un serveur de DNS libre fonctionnant sous Linux. Pour l’installer tapez la commande suivante, je vous conseille aussi d’installer le package dnsutils qui comprend de nombreux utilitaires très pratiques pour tester votre configuration.

1
2
sudo apt-get install bind9
sudo apt-get install dnsutils

Le domaine que j’ai choisis pour ce tutoriel est my.home, nous allons donc créer deux zones, une zone de DNS et une zone de reverse. Commencez par ouvrir le fichier /etc/bind/named.conf.local et placez-y le contenu suivant :

1
2
3
4
5
6
7
8
9
10
11
zone "my.home"
{
type master;
file "/etc/bind/zones/my.home.db";
};

zone "20.172.in-addr.arpa"
{
type master;
file "/etc/bind/zones/rev.20.172.in-addr.arpa";
};

Créez un répertoire zones dans /etc/bind qui contiendra les fichiers de configuration des zones :

1
sudo mkdir /etc/bind/zones

Créez puis ouvrez le fichier /etc/bind/zones/my.home.db et placez y le contenu suivant :

1
2
sudo touch /etc/bind/zones/my.home.db
sudo vim /etc/bind/zones/my.home.db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$TTL 3D
@ IN SOA gateway.my.home. me.my.home. (
20140306143054;
28800;
3600;
604800;
38400
);

my.home. IN NS gateway.my.home.
@ IN MX 10 mail.my.home.
gateway IN A 172.20.255.254
mail IN A 172.20.210.1
smtp IN CNAME mail
imap IN CNAME mail
pop IN CNAME mail

Une explication s’impose, la première ligne permet de définir le TTL (Time To Live) qui est le temps de vie dans un cache DNS, ici 3 jours. La seconde définis la zone avec le serveur maître dans notre cas gateway et l’adresse courriel du gestionnaire du domaine avec un point à la place du arobase. On retrouve ensuite une série de paramètres, le premier est le numéro de série, il est nécessaire de le modifier à chaque modification de ce fichier, je prends généralement la date et l’heure de manière à avoir un numéro de série unique, le second correspond au temps de rafraîchissement, le troisième au temps avants de réessayer une résolution, le suivant le temps d’expiration des valeurs, et la dernière le temps de validité dans le cache.

Les lignes suivantes permettent de définir le serveur de nom (NS), le serveur de mail associé au nom de domaine (MX), les sous domaines (A) et les alias de sous domaine (CNAME).

Nous venons donc de configurer le nom de domaine my.home avec les sous domaines gateway.my.home et mail.my.home. Trois alias de mail.my.home sont disponibles smtp.my.home, imap.my.home et pop.my.home. Si un mail est envoyé à me.my.home, il sera redirigé vers mail.my.home avec une priorité de 10.

Il est maintenant important de configurer le reverse DNS, sont rôle est de trouver le ou les noms de domaine correspondant à une adresse IP. Il n’est pas nécessaire pour l’instant mais sera très utile par la suite pour assurer le bon fonctionnement de votre boite mail. Nous allons donc créer et modifier le fichier /etc/bind/zones/rev.20.172.in-addr.arpa et y ajouter le contenue suivant :

1
2
sudo touch /etc/bind/zones/rev.20.172.in-addr.arpa
sudo vim /etc/bind/zones/rev.20.172.in-addr.arpa
1
2
3
4
5
6
7
8
9
10
11
12
$TTL 3D
@ IN SOA gateway.my.home. me.my.home (
20140306143545;
28800;
604800;
604800;
86400
);

IN NS gateway.my.home.
254.255 IN PTR gateway.my.home.
1.210 IN PTR mail.my.home.

La première partie du fichier est exactement la même que pour la zone précédente, c’est ensuite que ça change. On retrouve l’adresse IP recherchée écrite de la fin vers le début et un pointeur vers le nom de la machine concernée. Vous pouvez enregistrer les modifications et redémarrer votre serveur DNS.

1
sudo service bind9 restart

Pour tester votre configuration vous pouvez entrer les commandes suivantes et vérifier quelles pointent bien sur la bonne machine, il est nécessaire que la machine effectuant les tests pointe vers le bon serveur DNS :

1
2
nslookup gateway.my.home
host 172.20.210.1

Si vous avez des problèmes avec votre configuration vous pouvez utiliser la commande suivante pour obtenir plus d’informations ou aller faire un tour dans le syslog :

1
named-checkzone gateway.my.home /etc/bind/zones/my.home.db

Nous allons maintenant mettre en place un système de forward sur notre serveur DNS de manière à pouvoir résoudre les noms inconnus, et nous allons aussi définir les interface d’écoute pour que seul le réseau interne puisse utiliser le serveur DNS. Ouvrez le fichier /etc/bind/named.conf.options et ajoutez-y les paramètres suivants :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
options {
directory "/var/cache/bind";
forwarders {
#Serveurs DNS de niveau N + 1
89.233.43.71;
213.186.33.99;
89.104.194.142;
};
allow-recursion { any; };
dnssec-validation auto;
auth-nxdomain no;
listen-on {
172.20.255.254;
127.0.0.1;
};
};

Redémarrez votre serveur et voilà vous êtes prêt.

Le serveur DHCP

Pour le DHCP rien de plus simple. Je vais utiliser pour cela ISC mais sachez qu’il existe d’autres solutions. Un serveur DHCP c’est une machine qui est chargée d’attribuer une configuration IP automatique aux machines connectés à votre réseau.

Pour commencer nous allons installer le package isc-dhcp-server en tapant la commande suivante :

1
sudo apt-get install isc-dhcp-server

Ouvrez ensuite le fichier de configuration du serveur et placez-y les lignes suivantes :

1
sudo vim  /etc/dhcp/dhcpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
default-lease-time 21600; #durée de validitée de l’adresse attribuée
max-lease-time 21600;

#configuration ip
option subnet-mask 255.255.0.0;
option broadcast-address 172.20.255.255;<
option routers 172.20.255.254;
#configuration DNS
option domain-name-servers 172.20.255.254;
option domain-search "my.home";

#definition de la plage d’adresse
subnet 172.20.0.0 netmask 255.255.0.0 {
range 172.20.1.10 172.20.1.20;
}

Maintenant ouvrez le fichier de configuration et modifies la ligne INTERFACES de manière à ne pas attribuer d’adresse aux poste hors de notre réseau :

1
sudo vim /etc/default/isc-dhcp-server
1
INTERFACES="eth1"

Redémarrez ensuite votre serveur DHCP avec la commande suivante et appréciez votre nouveau serveur DHCP :

1
sudo service isc-dhcp-server restart