Mise en place d'un serveur DHCP

De Marijan Stajic | Wiki
Aller à la navigation Aller à la recherche

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.

  1. 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).
  2. 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).
  3. 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é).
  4. 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 :
    Dhcp schema simple (1).png


  • Schéma DHCP détaillé :
    Dhcp schema détailé.png

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

  1. Pour crée votre machine virtuelle, cliquez sur Crée/Enregistrer une machine virtuelle dans l'onglet Machine virtuelle.
    Installation SRV - 01.png
  2. Ensuite, faites Crée une machine virtuelle.
    Installation SRV - 02.png
  3. Rentrer un Nom pour votre machine et sélectionner la Compatibilité, Famille de systèmes d'exploitation invités et Version du SE invité.
    Installation SRV - 03.png
  4. Configurer ensuite votre machine avec les paramètres suivants :
    Installation SRV - 04.png
    • 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.
      Installation SRV - 04 1.png
  5. Une fois que c'est, faites Terminer.
    Installation SRV - 05.png

Configuration

  • Une fois l'enregistrement de votre VM terminé, exécuté-la.
  1. Dans un premier temps, faites une installation sans l'interface graphique. Cliquez donc sur Install.
    CONFIGURATION SRV - 01.png
  2. Sélectionner votre langue.
    CONFIGURATION SRV - 02.png
  3. Ensuite, sélectionner votre localisation.
    CONFIGURATION SRV - 03.png
    • Europe\Switzerland
  4. Configurer ensuite le langage de votre clavier.
    CONFIGURATION SRV - 06.png
  5. Rentrer un mot de passe pour l'utilisateur root (admin).
    CONFIGURATION SRV - 08.png
  6. Choisissiez un nom d'utilisateur pour l'utilisateur simple.
    CONFIGURATION SRV - 09.png
    • Rentrer également un mot de passe pour cette utilisateur.
  7. Sélectionner la méthode de partition.
    CONFIGURATION SRV - 11.png
    • Sélectionner ensuite le disque pour la partition.
  8. Mettez tout les fichiers dans la même partition.
    CONFIGURATION SRV - 13.png
  9. Appliquer ensuite le partitionnement sur les disques.
    CONFIGURATION SRV - 14.png
  10. Sélectionner l'archive miroir.
    CONFIGURATION SRV - 16.png
  11. Choisissiez ensuite les logiciels de base.
    CONFIGURATION SRV - 18.png
    • Désélectionner ensuite tout sauf la dernière option.
  12. Installer le GRUB boot loader.
    CONFIGURATION SRV - 19.png
  13. Une fois installer, vous allez pouvoir vous s'authentifier sur votre machine virtuelle.
    CONFIGURATION SRV - 22.png
  • 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.
  1. Faites un clic droit sur la VM concerné puis sous Snapshots, faites Prendre un snapshot.
    SNAPSHOT SRV - 01.png
  2. Ensuite, pour restaurer le snapshot, faites clic droit sur la VM puis Restaurer.
    SNAPSHOT SRV - 03.png

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.

  1. Dans un premier temps installez le package SSH sur la VM.
    Installation SSH - install01.png

    apt-get install openssh-server
  2. 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.
    Installation SSH - sshd config.png

    nano /etc/ssh/sshd_config
  3. 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.
    Installation SSH - sshd config file.png
  4. Pour appliquer les modifications, il faudra simplement redémarrer le service.
    Installation SSH - reload.png

    /etc/init.d/ssh reload
  5. Vous pouvez vérifier si le port à bien été modifié.
    Installation SSH - check.png

    systemctl status ssh
  6. Maintenant que tout est prêt, vous pouvez lancer votre logiciel d'émulateur de terminal. Dans mon cas, j'utilise PuTTY.
    Installation SSH - putty.png
    • 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.

  1. Dans un premier temps, nous allons installer le package tcpdump.
    Installation TCPDUMP - installation.png

    apt-get install tcpdump
  2. 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.
    Installation TCPDUMP - capture.png

    tcpdump -w capture-wiki.pcap
  3. 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.
    Installation TCPDUMP - capturels.png

    ls
  4. 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.
    Installation TCPDUMP - winscp.png

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.

Schema dhcp2.png

*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.

  1. 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.
    ESXi - vSwitch create.png
  2. 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.
    ESXi - Groupes de port.png
    • 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.
      ESXi - VM Network.png

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.

  1. En premier lieu, nous allons simplement installer le package DHCP.
    DHCP - install.png

    apt-get install isc-dhcp-server
  2. Ensuite, nous allons ajouter dans notre fichier network la nouvelle interface.
    DHCP - interfaces ens192.png

    vim /etc/network/interfaces
    • Il est important de savoir le nom de l'interface à ajouter.
      DHCP - Iip a.png

      ip a
  3. Une fois l'interface ajouté, il faudra mettre dans la configuration quel interface le serveur DHCP doit utiliser.
    DHCP - isc default.png

    vim /etc/default/isc-dhcp-server
  4. Maintenant, nous allons faire la configuration du serveur DHCP.
    DHCP - dhcp config.png

    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.

  5. Il faut désormais activer la carte réseau que nous avons configuré pour le serveur DHCP.
    DHCP - ifconfig up (1).png

    ifconfig ens192 up
    • Si la commande ne marche pas, il faut installer le package net-tools.
      apt-get install net-tools
  6. Ensuite, pour le bon fonctionnement du serveur DHCP, nous allons désactiver l'IPv6.
    DHCP - ipv61.png

    vim /etc/sysctl.conf

    DHCP - ipv62.png

    nano /proc/sys/net/ipv6/conf/all/disable_ipv6
  7. Pour terminer, il vous restes plus qu'à redémarrer le service et voir le statut.
    DHCP - systemctl status isc-dhcp.png

    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.
      DHCP - rm DHCPDpid.png
    • 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.
      DHCP - UBU 01.png

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.

  1. Dans un premier temps, il faudra installer IP Tables Persistent.
    DHCP - apt install iptable.png

    apt-get install iptables-persistent
  2. 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.
    DHCP - Iptables forward.png

    vim /etc/iptables/rules.v4
  3. 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.
      no response found!

      1. Si c'est le cas, vous pouvez autoriser les pings avec IP Tables.
        DHCP - ipables icmp.png

        iptables -A INPUT -p icmp -j ACCEPT
      2. Ensuite, vous pouvez refaire le test de ping sur par exemple l'IP de l'interface principal.
        DHCP - Ping ubutnu.png

        ping 172.16.0.11

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.

DHCP - syslog.png


tail -f /var/logs/syslog