Installation DHCP, relais DHCP, DNS, DDNS et NAT.

Dans cet article, je vais mettre en place un réseau composé de quatre Vlans. Je mettrais en place ces Vlans sur un switch et un routeur cisco.

Le routeur fera le routage inter vlan mais aussi du NAT pour pouvoir accéder aux web depuis les Vlans.

Ensuite je mettrais en place un DHCP et un DNS dans le Vlan 10, le DHCP devra donner des adresses à tous les Vlans, et il me faudra un enregistrement DNS pour chaque machine de chaque Vlan.

Voilà un schéma de mon réseau :

Le réseau 192.168.5.0/24 est mon réseau « principal », je n’administre pas son routeur.

Le réseau 192.168.5.0/24 peut atteindre le web grâce à une règle de NAT sur le routeur ISP, mais mes sous-réseaux ne peuvent pas atteindre le web car la règle sur le routeur ISP ne transforme que les adresse du réseau 192.168.5.0/24, il va donc falloir que j’installe un NAT sur mon routeur dans le but de transformer les adresses de mes sous-réseaux en adresse du réseau 192.168.5.0/24.

VLAN Réseau
5 192.168.5.0/24
10 172.17.0.0/24
20 172.18.0.0/24
40 172.19.0.0/26
50 172.19.0.64/26

Configuration de mon switch :

Ports VLAN Trunk ?
Fa 1-5 5 Non
Fa 6-8 10 Non
Fa 9-12 20 Non
Fa 13-16 40 Non
Fa 17-20 50 Non
Fa 24 Oui

Configuration de mon routeur :

Sur chaque interface j’active l’encapsulation 802.1Q et leur attribue une adresse IP.

Interface Adresse IP VLAN NAT interne, externe
FA 0/0.10 172.17.0.1/26 10 Interne
FA 0/0.20 172.18.0.1/26 20 Interne
FA 0/0.30 172.19.0.1/26 40 Interne
FA 0/0.40 172.19.0.65/26 50 Interne
FA 0/1 192.168.5.5 5 externe

NAT

Je définis ma Gateway sur le routeur. (ip route 0.0.0.0 0.0.0.0 NEXT_HOP)

Ensuite je « up » mon interface Fa0/1 et lui donne une adresse IP.

Je définis les interfaces qui seront « interne » et l’interface qui sera « externe ». (Commande : ip nat inside / outside)

Je vais faire une règle de NAT, ce sera du NAT dynamique, d’un pool d’adresse avec surcharge. Il faudra faire des ACL, pour chaque réseau que l’on veut « NATer ».

Chaque acces-list donne l’autorisation à un réseau.

Ensuite je crée mes règles de NAT :

Chaque règle de NAT va permettre de dire de transformer ce qui vient de l’access-list en l’adresse IP de fa0/1, avec l’option overload (PAT) qui autorise plusieurs translations simultanées.

DHCP

Maintenant je vais mettre en place un DHCP, le serveur DHCP aura l’adresse 172.17.0.5/24, il sera donc sur le vlan 10.

J’installe le DHCP, avec la commande apt-get install isc-dhcp-server.

Je modifie mon fichier de configuration (/etc/dhcp/dhcpd.conf) pour y ajouter une plage par vlan. Ce qui me donne la configuration suivante :

Au tout début de mon fichier j’ai déclaré un DNS (l’adresse de mon serveur DHCP, qui fera également DNS) : option domain-name-servers 172.17.0.5;

Je teste mon serveur DHCP en branchant une machine sur le même vlan que mon DHCP, et je vérifie que j’obtiens bien une configuration IP.

Relais DHCP :

Ensuite il faut configurer le routeur pour qu’il transforme les Broadcast DHCP qu’il recevra en unicast vers le serveur DHCP.

Pour ce faire il faut configurer un relais DHCP sur chaque interface qui recevra un Broadcast. Dans notre cas toutes les sous-interfaces de notre routeur recevront un Broadcast, sauf la sous-interface fa0/0.10 (car le DHCP est sur ce réseau)

Donc il faut faire : ip helper-address 172.17.0.5 (l’adresse du DHCP) pour les sous-interfaces Fa0/0.20 Fa0/0.40 et Fa0/0.50.

Une fois terminés je test en branchant des machines sur les Vlan et en vérifiant qu’ils obtiennent bien leurs configurations réseau.

Nota Bene : Le dhcp Snooping !

Le DHCP snooping permet de dire au switch sûr quel port est branché le DHCP, ainsi le switch n’autorisera pas les paquets DHCPOffer seulement sur ce port.

C’est une sécurité supplémentaire empêchant que quelqu’un se connecte sur le switch et y installe son propre DHCP.

Pour l’activer il suffit de faire la commande suivante sur le switch :

Une fois cette commande exécutée, le switch refuse tous les DHCPOffer, alors je vais autoriser un port à faire du DHCP.

DDNS

Maintenant j’installe, sur mon serveur, un serveur DNS (apt-get install Bind9).

Je crée une zone (mazone.loc, pour faire une zone voire ma procédure DNS et APACHE.) ainsi qu’une zone inverse pour chacun de mes Vlan.

Maintenant le but est d’ajouter un enregistrement de type A et du type PTR dans le DNS pour chaque machine qui obtient une adresse du DHCP. C’est du Dynamic DNS (DDNS).

Pour faire communiquer le service DNS et le service DHCP on doit utiliser une clé, qui sera générée sur le serveur DNS. Via la commande :

            dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DDNS_UPDATE

Cette commande me crée deux fichiers :

La clé qui sera utilisée par les services sera la clé privée (.private). On va devoir créer le fichier /etc/bind/ddns.key qui contiendra les lignes suivantes :

La clé écrite dans le fichier ddns.key est la clé contenue dans le fichier « .private » à la ligne key.

DDNS_UPDATE est le nom donné à la clé, il sera utilisé dans les fichiers de configuration des services pour appeler la clé.

Mes fichiers de configuration de zones ressemblent à ça :

Fichier db.mazone.loc, configuration de la zone mazone.loc

Fichier db.172.17.0, zone inverse du réseau 172.17.0.0/24

Fichier db.127.19.0, zone inverse du réseau 172.19.0.0/26

Je modifie mon fichier named.conf.local :

La ligne include permet d’utiliser la clé par son nom et de ne pas recopier la clé à chaque fois.

Je change l’emplacement du fichier de configuration car l’utilisateur bind n’a pas le droit d’écriture de /etc/bind mais il peut écrire dans /var/cache/bind.

La ligne allow-query permet de dire qu’elle adresse IP est autorisée à écrire sur le serveur, par défaut, si on ne la précise pas, toutes les IP sont autorisées, c’est pourquoi je l’ai ajouté dans la première zone mais pas dans les autres, par défaut les autres ont la même option.

La ligne allow-update autorise les mises à jour de la zone par tous ceux qui ont la clé.

Pour terminer je crée un lien symbolique de mes fichiers de zone (/etc/bind) vers /var/cache/bind.

Modifications du serveur DHCP

Le serveur DHCP a également besoin de la clé, je vais donc copier le fichier /etc/bind/ddns.key dans /etc/dhcp.

Puis je modifie le fichier dhcpd.conf. Qui ressemblera à ça :

A gauche le début de mon fichier dhcpd.conf, les options qui font effet en général, sur toutes les plages. Et à droit mes plages.

authoritative permet de préciser que le serveur DHCP est prioritaire sur le réseau local.

ddns-updates  autorise les mise a jour de DNS.

ddns-update-style précise le type de mises à jour, ici interim signifie en local.

ignore client-updates permet d’empêcher les clients de s’enregistrer eux-mêmes.

update-static-leases précise si le serveur DHCP peut modifier les enregistrements déjà définis.

La ligne log-facility local7 permet d’avoir les logs de debug dans /var/log/syslog

Dans la déclaration des zones, primary indique le serveur DNS primaire de la zone.

ddns-domainname et ddns-rev-domainname permettent de préciser les zones DNS que j’utilise.

Pour terminer je redémarre le service bind9 et isc-dhcp.

Derniers test

Je vais brancher un ordinateur qui obtiendra une adresse IP par DHCP tout en regardant les logs pour vérifier que tout fonctionne bien.

Dans ces logs, on voit que named ajoute un noveau forward de mycomputer, et qu’il ajoute un enregistrement dans mazone.loc.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.