Mise en place d'un serveur DHCP
Qu'est-ce que le DHCP
C'est un protocole réseau qui permet d'attribuer dynamiquement (ou autre manière) une adresse IP aux machines clients qui ce connectent au réseaux. C'est par exemple ce qui est utilisé dans votre modem à la maison.
Méthode d'assignation
Voici les deux méthodes pour assigner une adresse IP à une machine.
- Dynamique : C'est le serveur DHCP qui va assigner une adresse IP à la machine du client pour une période limitée.
- Manuelle : C'est un administrateur réseaux qui va assigner manuellement une adresse IP à la machine du client.
- Manuelle (MAC) : Même principe que pour le deuxième point, c'est un administrateur réseaux qui va assigner manuellement une MAC à une adresse IP.
Que-ce qu'il attribue d'autres
Le serveur DHCP ne fournit pas que l'adresse IP, il fournit également :
- Masque de sous-réseau
- Passerelle par défaut
- Serveurs DNS
- Durée du bail
- Options DHCP
Le bail
Le bail permet d'indiquer combien de temps l'adresse IP sera allouée à la machine du client.
Options
Des options peuvent être ajoutées au DHCP. Voici le minimum recommandé :
- 003 (Routeur) - Obligatoire
- 006 (Serveur DNS) - Obligatoire
- 015 (Nom de domaine DNS) - Fortement recommandé
Type de trames
Il existe différentes types de trames, chacune permettant le bon fonctionnement du DHCP.
- DHCPDISCOVER : Envoie de broadcast pour trouver sur le réseaux le serveur DHCP disponibles.
- DHCPOFFER : Du serveur au client pour répondre au DHCPDISCOVER et lui proposer une adresse IP, une passerelle par défaut, un masque sous réseaux, etc.
- DHCPREQUEST : Message client aux serveurs soit (a) qui demande les paramètres à un serveur et décline implicitement les offres de tous les autres, (b) qui confirme la validité des adresses précédemment allouées, par ex : un redémarrage système, ou (c) qui étend le bail sur une adresse réseau en particulier.
- DHCPACK : Du serveur au client avec les paramètres de configuration qui inclut l'adresse réseau déjà attribuée.
- DHCPNAK : Du serveur au client indiquant que la notion d'un client pour les adresses réseau est incorrecte. (par ex : si un client est déplacé sur un nouveau sous réseau) ou que le bail du client a expiré.
- DHCPDECLINE : Client vers serveur indiquant que l'adresse réseau est déjà utilisée.
- DHCPERELEASE : Client vers serveur libérant l'adresse réseau et annulant le bail.
- DHCPINFORM : Client vers serveur demandant seulement les paramètres de configuration locaux ; le client possède déjà une adresse réseau attribuée de manière externe.
Fonctionnement
Voici le fonctionnement du service DHCP.
- La machine du client va se connecter au réseau, elle va, dans un premier temps, utiliser l'adresse MAC de broadcast avec une trame DHCPDISCOVER qui va permettre de trouver un serveur DHCP sur le réseau (recherche).
- Ensuite, le serveur DHCP va répondre en lui proposant une adresse IP, une passerelle par défaut, un masque sous-réseau, etc.. Pour ça, la trame DHCPOFFER est utilisée (offre).
- Une fois l'offre reçue, la machine du client va envoyer une trame DHCPREQUEST en broadcoast pour dire que l'offre est acceptée (contrat accepté).
- Pour terminer, le serveur DHCP va envoyer une trame DHCPACK qui contient l'adresse IP, la passerelle par défaut, le masque de sous-réseau ainsi que la durée du bail (validation).
Schémas
Le schéma DHCP fait référence au point du Wiki : Fonctionnement. Le deuxième est un schéma du DHCP détaillé.
- Schéma DHCP :
- Schéma DHCP détaillé :
Diverses informations
Quelques informations diverses :
- Adresse APIPA : L'adresse APIPA est une adresse IP que Windows fournit automatiquement lorsqu'il n'arrive pas à trouver de serveur DHCP. Par exemple, vous connectez votre ordinateur à un switch, ce switch se déconnecte du réseau mais tous les autres appareils sont encore connectés au switch, Windows va attribuer automatiquement une adresse APIPA à tout les appareils connecté au switch, ce qui permettra aux ordinateurs de pouvoir communiquer entre eux, sans passer par internet. Cette méthode fonctionne uniquement pour les appareils qui sont sous Windows.
- Protocole utilisé : UDP 67
Informations
Voici le matériel à disposition pour ce projet :
- Un serveur Dell R610 avec un ESXi VMware
Le serveur est à utiliser avec le Sonicwall TZ300, son IP local est réservée par adresse MAC : 172.16.0.6, une règle NAT existe pour se connecter dessus depuis le réseau VTX : https://virt.support-vtx.ch:1338
Machine virtuelle
- Système d'exploitation utilisé : Debian 10.10
Pour ce projet, nous allons utiliser 1 VMs :
- SRV-DEB-005 (DHCP) : eth1 : 172.16.0.10, eth2 : 192.168.1.254;
- SRV-UBU-001 (Client) : eth1 : 192.168.1.105
Enregistrement
- Pour crée votre machine virtuelle, cliquez sur Crée/Enregistrer une machine virtuelle dans l'onglet Machine virtuelle.
- Ensuite, faites Crée une machine virtuelle.
- Rentrer un Nom pour votre machine et sélectionner la Compatibilité, Famille de systèmes d'exploitation invités et Version du SE invité.
- Configurer ensuite votre machine avec les paramètres suivants :
- Pour cette mise en place, il faudra mettre deux cartes réseau. La première, VM Network et la deuxième par rapport au switch que nous avons crée.
- Modifier le Lecteur de CD/DVD en mettant le fichier ISO de votre OS.
- Une fois que c'est, faites Terminer.
Configuration
- Une fois l'enregistrement de votre VM terminé, exécuté-la.
- Dans un premier temps, faites une installation sans l'interface graphique. Cliquez donc sur Install.
- Sélectionner votre langue.
- Ensuite, sélectionner votre localisation.
- Europe\Switzerland
- Configurer ensuite le langage de votre clavier.
- Rentrer un mot de passe pour l'utilisateur root (admin).
- Choisissiez un nom d'utilisateur pour l'utilisateur simple.
- Rentrer également un mot de passe pour cette utilisateur.
- Sélectionner la méthode de partition.
- Sélectionner ensuite le disque pour la partition.
- Mettez tout les fichiers dans la même partition.
- Appliquer ensuite le partitionnement sur les disques.
- Sélectionner l'archive miroir.
- Choisissiez ensuite les logiciels de base.
- Désélectionner ensuite tout sauf la dernière option.
- Installer le GRUB boot loader.
- Une fois installer, vous allez pouvoir vous s'authentifier sur votre machine virtuelle.
- Une adresse IP a été assigner sur mes VMs depuis le Sonicwall.
Snapshot
- Un snapshot est unique par VM. Aussi, l'adresse IP attribué par le Sonicwall va resté car il ce base sur l'adresse MAC.
- Faites un clic droit sur la VM concerné puis sous Snapshots, faites Prendre un snapshot.
- Ensuite, pour restaurer le snapshot, faites clic droit sur la VM puis Restaurer.
Secure Shell
Pour faciliter le travail, nous allons activer le SSH. Sur le firewall, le port 1339 correspond à SRV-DEB-001, 1340 à SRV-DEB-002 et 1341 à SRV-DEB-003. La règle à été mise en place sur le firewall.
- Dans un premier temps installez le package SSH sur la VM.
apt-get install openssh-server
- Une fois installer, il faudra mettre à jour le port sur le fichier de configuration de votre SSH par rapport à ce qui a été appliquer sur le firewall.
nano /etc/ssh/sshd_config
- Ensuite, dès que vous êtes dans le fichier, vous pouvez retirer le commentaire (#) et mettre le port en question. Si vous souhaitez utiliser l'utilisateur root pour le SSH, il faudra faire pareil pour PermitRootLogin.
- Pour appliquer les modifications, il faudra simplement redémarrer le service.
/etc/init.d/ssh reload
- Vous pouvez vérifier si le port à bien été modifié.
systemctl status ssh
- Maintenant que tout est prêt, vous pouvez lancer votre logiciel d'émulateur de terminal. Dans mon cas, j'utilise PuTTY.
- Host Name : Ici, j'ai mis l'adresse du firewall, mais nous aurions très bien pu mettre également virt.support-vtx.ch qui est l'adresse du serveur où sont les VMs ;
- Port : Le port SSH que nous avons mis par rapport à la VM qu'on souhaite accéder ;
- Connexion type : SSH.
Capture de paquet
Pour mieux comprendre ce qui transite sur les VMs, on peut utiliser tcpdump et ensuite récupérer le fichier .pcap et l'ouvrir sur Wireshark pour voir les paquets.
Il est important de faire ces commandes directement sur l'interface de ESXi et non en SSH.
- Dans un premier temps, nous allons installer le package tcpdump.
apt-get install tcpdump
- Ensuite, nous allons lancez une capture de paquet et accéder au site au même temps. Il est important de nommer le fichier .pcap.
tcpdump -w capture-wiki.pcap
- Après avoir fait la capture de paquet, vous pouvez faire CTRL+C pour arrêter. La capture sera stocké à l'endroit ou vous avez lancer le tcpdump.
ls
- Pour récupérer la capture que vous avez fait, il faudra utiliser un client SFTP pour vous connectez sur la VM et accéder aux fichiers. Dans mon cas, j'utilise WinSCP.
Une fois connecté, vous allez pouvoir récupérer le fichier .pcap et l'ouvrir sur Wireshark.
Serveur DHCP
Dans le schéma ci-dessous, nous avons notre firewall ainsi que notre serveur ESXi. Dans le serveur ESXi, nous avons deux vSwitchs ainsi que deux VMs.
*eth : ethernet (carte réseau)
L'objectif, c'est que le vSwitch 1 sur le quel SRV-DEB-004 est connecté puisse avoir une adresse IP donner par le DHCP du Sonicwall afin de pouvoir accéder à internet.
Sur SRV-DEB-004, nous allons avoir deux cartes réseaux. Une sera utilisé pour le vSwitch 1 (accès internet) et l'autre pour le vSwitch 2 ainsi que pour le serveur DHCP.
Ensuite, sur le vSwitch 2, il y aura également le SRV-DEB-005 qui sera le client pour le serveur DHCP afin de voir si tout fonctionne correctement. Le vSwitch 2 ne sera pas toucher par le DHCP du Sonicwall.
Configuration du réseau sur ESXi
Dans un premier temps, avant de configurer le service DHCP sur la VM, nous allons crée le vSwitch sur l'interface ESXi.
- Pour crée le vSwitch, allez sous l'onglet Mise en réseau, Commutateur virtuels puis Ajouter un commutateur virtuel standard. Dedans rentrez le nom et laissez par défaut les paramètres.
- Ensuite, il faudra crée un Groupe de port. Pour le faire, toujours sous l'onglet Mise en réseau, Groupes de port puis Ajouter un groupe de ports. Rentrez le nom du groupe puis sélectionner le vSwitch.
- Lors de la création de la VM sur l'ESXi, dans la configuration, il faudra Ajouter un adaptateur réseau. Le premier sera pour le network de base (firewall), le deuxième est pour le vSwitch par rapport au serveur DHCP.
Configuration du serveur DHCP
Maintenant que la partie réseau sur l'ESXi ainsi que les VMs sont prêtent, nous allons passer à l'installation du serveur DHCP sur la SRV-DEB-004.
- En premier lieu, nous allons simplement installer le package DHCP.
apt-get install isc-dhcp-server
- Ensuite, nous allons ajouter dans notre fichier network la nouvelle interface.
vim /etc/network/interfaces
- Il est important de savoir le nom de l'interface à ajouter.
ip a
- Il est important de savoir le nom de l'interface à ajouter.
- Une fois l'interface ajouté, il faudra mettre dans la configuration quel interface le serveur DHCP doit utiliser.
vim /etc/default/isc-dhcp-server
- Maintenant, nous allons faire la configuration du serveur DHCP.
vim /etc/dhcp/dhcpd.conf
- Serveur DNS : Ce sont les serveurs DNS qui vont être distribuer aux machines clients du serveur DHCP.
- Niveau de log : Afin de faire du débogage, il existe plusieurs niveaux. Ici, le local7 est le niveau Debug.
- Autoritaire : Cette ligne permet de faire passer notre serveur DHCP en priorité. Donc, quand une machine va chercher une serveur DHCP, il va prendre la requête en priorité. Si par exmeple il a pas cette ligne, il va laisser les autres serveurs et si aucun serveur DHCP répond, il prendra la requête.
- Range IP, Passerelle, Masque : ici, nous avons comme le titre l'indique, le range IP utilisable pour le serveur, la gateway ainsi que le masque.
- Il faut désormais activer la carte réseau que nous avons configuré pour le serveur DHCP.
ifconfig ens192 up
- Si la commande ne marche pas, il faut installer le package net-tools.
apt-get install net-tools
- Si la commande ne marche pas, il faut installer le package net-tools.
- Ensuite, pour le bon fonctionnement du serveur DHCP, nous allons désactiver l'IPv6.
vim /etc/sysctl.conf
nano /proc/sys/net/ipv6/conf/all/disable_ipv6
- Pour terminer, il vous restes plus qu'à redémarrer le service et voir le statut.
systemctl restart isc-dhcp-server.service
- Il ce peut que votre serveur DHCP ne démarre pas car il existe déjà un dhcpd.pid, il faudra le supprimer et redémarrer le service.
- On peut donc désormais voir que sur la deuxième VM (SRV-UBU-001) qu'il a bien reçu les paramètres IP.
IP Tables
Afin de pouvoir accéder à l'extérieur avec les machines qui sont derrière notre serveur DHCP, il faut que notre VM qui fait DHCP fasse passer les requêtes vers l'interface du Sonicwall. Pour ce faire, nous allons utiliser le service IP Tables.
- Dans un premier temps, il faudra installer IP Tables Persistent.
apt-get install iptables-persistent
- Ensuite, nous allons ajouter dans le fichier de configuration IPv4 de IP Tables le faites de transféré les requêtes de l'interface du serveur DHCP vers celui du Firewall.
vim /etc/iptables/rules.v4
- Pour terminer, il faudra rajoute sur le Sonicwall un routage statique. La destination sera le réseau DHCP (192.168.1.0), le masque celui du serveur DHCP (255.255.255.0) et la passerelle sera l'IP distribué par pare-feu sur l'interface principal (172.16.0.11).
- Pour faire le test, vous pouvez faire un ping. Si il ne fonctionne pas, c'est possible c'est parce que les paquets ICMP sont drop. Nous pouvons vérifier en faisant un TCPDUMP puis regarder le fichier .pcap.
- Si c'est le cas, vous pouvez autoriser les pings avec IP Tables.
iptables -A INPUT -p icmp -j ACCEPT
- Ensuite, vous pouvez refaire le test de ping sur par exemple l'IP de l'interface principal.
ping 172.16.0.11
- Si c'est le cas, vous pouvez autoriser les pings avec IP Tables.
- Pour faire le test, vous pouvez faire un ping. Si il ne fonctionne pas, c'est possible c'est parce que les paquets ICMP sont drop. Nous pouvons vérifier en faisant un TCPDUMP puis regarder le fichier .pcap.
Logs
Principalement pour faire du débogage je me suis servis des logs qui ce trouve dans syslog. C'est ici ou les requêtes DHCP sont inscrites.
tail -f /var/logs/syslog