Fonctionnement
Nous allons aujourd’hui apprendre à configurer un serveur DHCP sous Debian 9.
DHCP : Dynamic Host Configuration Protocol
C’est le protocole utilisé pour l’assignation automatique des paramètres IP à des équipements informatiques. Il permet de faciliter l’administration surtout sur les grands réseaux où l’attribution statique d’adresse à chaque poste serait très fastidieuse, cela permet aussi de limiter les risques de conflits d’adresse. Le protocole DHCP permet de transporter les informations comme : l’adresse IP de la machine, l’adresse du serveur DNS, l’adresse de la Passerelle, l’adresse de Broadcast …
Le processus fonctionne de la manière suivante :
- DHCP DISCOVER: Lorsqu’un client arrive sur un réseau il envoie des paquets DHCP DISCOVER en réseau en broadcast. En gros il demande s’il existe un serveur DCHP sur le réseau et si ce dernier peut lui fournir une adresse IP.
- DHCP OFFER: Le serveur ayant reçu la demande répond au client en broadcast avec un paquet DHCP OFFER avec l’adresse IP qu’il lui propose, le masque de sous réseau et son adresse IP (l’IP du serveur DHCP).
- DHCP REQUEST : Le Client ayant reçu l’IP proposé l’accepte et répond au serveur en broadcast avec un paquet DHCP REQUEST dans lequel il spécifie l’adresse demandée (l’adresse qu’il a acceptée) et l’adresse du serveur DHCP.
- DCHP ACK : Le Serveur ayant reçu le message de confirmation répond avec l’adresse IP assignée au client et les options de configuration supplémentaire (Gateway, DNS …)
Pour notre TP nous aurons besoin de :
– 2 machines sous Debian 9 fraîchement installé l’une servira de client et l’autre de serveur.
– 2 Cartes réseau par machines ; Une en NAT pour avoir accès a internet et l’autre sur un vSwitch local avec l’option DHCP désactivé (le même pour les 2 Vms)
Nous allons commencer par nous connecter à la machine qui va jouer le rôle de serveur DHCP.
Configuration du Serveur DHCP
On commence par changer le nom de la machine
[pastacode lang= »bash » manual= »sudo%20hostname%20%20dhcp-server%0Asudo%20sh%20-c%20%22echo%20dhcp-server%20%3E%20%2Fetc%2Fhostname%22%0Asudo%20sh%20-c%20%22echo%20127.0.0.1%20%09dhcp-server%20%3E%3E%20%2Fetc%2Fhosts%22%0A » message= » » highlight= » » provider= »manual »/]
Lister l’ensemble des interfaces réseau disponible avec la commande: ip a
[pastacode lang= »bash » manual= »joel%40dhcp-server%3A~%24%20ip%20a%20%0A1%3A%20lo%3A%20%3CLOOPBACK%2CUP%2CLOWER_UP%3E%20mtu%2065536%20qdisc%20noqueue%20state%20UNKNOWN%20group%20d%C3%A9faut%20qlen%201%0A%20%20%20%20link%2Floopback%2000%3A00%3A00%3A00%3A00%3A00%20brd%2000%3A00%3A00%3A00%3A00%3A00%0A%20%20%20%20inet%20127.0.0.1%2F8%20scope%20host%20lo%0A2%3A%20enp0s3%3A%20%3CBROADCAST%2CMULTICAST%2CUP%2CLOWER_UP%3E%20mtu%201500%20qdisc%20pfifo_fast%20state%20UP%20group%20default%20qlen%201000%0A%20%20%20%20link%2Fether%2008%3A00%3A27%3Adc%3A0e%3A40%20brd%20ff%3Aff%3Aff%3Aff%3Aff%3Aff%0A%20%20%20%20inet%2010.0.2.15%2F24%20brd%2010.0.2.255%20scope%20global%20enp0s3%0A%20%20%20%20%20%20%20valid_lft%20forever%20preferred_lft%20forever%0A3%3A%20enp0s8%3A%20%3CBROADCAST%2CMULTICAST%2CUP%2CLOWER_UP%3E%20mtu%201500%20qdisc%20pfifo_fast%20state%20UP%20group%20default%20qlen%201000%0A%20%20%20%20link%2Fether%2008%3A00%3A27%3Afe%3Aae%3A60%20brd%20ff%3Aff%3Aff%3Aff%3Aff%3Aff%0A » message= » » highlight= » » provider= »manual »/]
On repère la carte réseau qui est branchée sur le réseau local. Celle qui n’a normalement pas reçu une IP. Comme vous pouvez le constater, l’interface 3 n’a pas d’adresse IP alors que la 2 en a une. Le nom de l’interface 3 est enp0s8.
Nous allons ajouter dans le fichier de configuration si ce n’est pas déjà le cas une directive qui permet d’activer la carte au démarrage.
[pastacode lang= »bash » manual= »sudo%20sh%20-c%20%22echo%20allow-hotplug%20enp0s8%20%3E%3E%20%2Fetc%2Fnetwork%2Finterfaces%22″ message= » » highlight= » » provider= »manual »/]
Nous allons ensuite créer un fichier de configuration qui contiendra les configurations de notre interface et qui porte le nom de cette dernière.
[pastacode lang= »bash » manual= »sudo%20nano%20%20%2Fetc%2Fnetwork%2Finterfaces.d%2Fenp0s8.conf » message= » » highlight= » » provider= »manual »/]
éditer le fichier et mettre le contenu suivant
[pastacode lang= »bash » manual= »%23Interface%20enp0s8%0A%09iface%20enp0s8%20inet%20static%20%0A%09address%20192.168.57.2%0A%09netmask%20255.255.255.0%0A » message= » » highlight= » » provider= »manual »/]
Rebooter le serveur pour prendre en compte les modifications.
[pastacode lang= »bash » manual= »sudo%20reboot%20″ message= » » highlight= » » provider= »manual »/]
Une fois l’interface réseau configurer nous pouvons passer à l’installation du serveur DHCP (paquet isc-dhcp-server).
[pastacode lang= »bash » manual= »sudo%20sh%20-c%20%22apt%20update%20%26%26%20apt%20install%20isc-dhcp-server%22″ message= » » highlight= » » provider= »manual »/]
Il faut ensuite éditer le fichier de configuration suivant pour configurer le serveur.
[pastacode lang= »bash » manual= »sudo%20nano%20%20%2Fetc%2Fdhcp%2Fdhcpd.conf » message= » » highlight= » » provider= »manual »/]
À moins de savoir ce que vous faites ne modifier que les lignes suivantes.
[pastacode lang= »bash » manual= »%23Nom%20de%20domaine%20(facultatif)%20et%20liste%20des%20serveurs%20DNS%20envoyer%20au%20client%0Aoption%20domain-name%20%22atomit.local%22%3B%20%0Aoption%20domain-name-servers%20%20ns.atomit.local%3B%0A%0A%23Dur%C3%A9e%20de%20vie%20en%20seconde%20par%20d%C3%A9faut%20et%20maximale%20du%20bail%0Ad%C3%A9faut-lease-time%2086400%3B%0Amax-lease-time%20604800%3B%0A%0A%23%20sp%C3%A9cifie%20que%20notre%20serveur%20DHCP%20fait%20autorit%C3%A9%0Aauthoritative%3B%0A%0A%23Ensemble%20des%20configurations%20du%20pool%20DHCP.%20Ajouter%20des%20lignes%20avec%20les%20options%20souhaitez.%0A%23%20This%20is%20a%20very%20basic%20subnet%20declaration.%0Asubnet%20192.168.57.0%20netmask%20255.255.255.0%20%7B%0Arange%20192.168.57.100%20%20192.168.57.150%3B%0A%7D%0A » message= » » highlight= » » provider= »manual »/]
Ne pas oublier le point-virgule à la fin de chaque ligne sinon cela ne fonctionnera pas. Une fois les configurations réalisées vous pouvez vérifier si le fichier de configuration est correct avec la commande :
[pastacode lang= »bash » manual= »joel%40dhcp-server%3A~%24%20sudo%20dhcpd%20-t%20%2Fetc%2Fdhcp%2Fdhcpd.conf%0A%2Fetc%2Fdhcp%2Fdhcpd.conf%3A%20interface%20name%20too%20long%20(is%2020)%0A%0AIf%20you%20think%20you%20have%20received%20this%20message%20due%20to%20a%20bug%20rather%0Athan%20a%20configuration%20issue%20please%20read%20the%20section%20on%20submitting%0Abugs%20on%20either%20our%20web%20page%20at%20www.isc.org%20or%20in%20the%20README%20file%0Abefore%20submitting%20a%20bug.%20%20These%20pages%20explain%20the%20proper%0Aprocess%20and%20the%20information%20we%20find%20helpful%20for%20debugging..%0A%0Aexiting.%0Ajoel%40dhcp-server%3A~%24%20%0A » message= » » highlight= » » provider= »manual »/]
Si vous avez un message d’erreur, il faut le résoudre avant de continuer. Dans le résultat de la commande précédente, il vous indique l’interface sur laquelle le serveur DHCP écoute.
Vous pouvez éditer le fichier suivant pour ajouter les interfaces sur lesquelles le serveur DHCP a le droit d’écouter et de distribuer les adresses.
[pastacode lang= »bash » manual= »sudo%20nano%20%2Fetc%2Fdefault%2Fisc-dhcp-server » message= » » highlight= » » provider= »manual »/]
Modifier la ligne suivante à la fin du document et ajouter l’interface dont nous avons fixé l’IP précédemment.
[pastacode lang= »bash » manual= »INTERFACESv4%3D%22enp0s8%22%0A%23INTERFACESv6%3D%22%22″ message= » » highlight= » » provider= »manual »/]
Redémarrez ensuite le service DHCP serveur :
[pastacode lang= »bash » manual= »sudo%20systemctl%20restart%20isc-dhcp-server.service » message= » » highlight= » » provider= »manual »/]
Si vous obtenez une erreur ouvrez le fichier de configuration de l’interface d’écoute et vérifié que :
– Vous avez bien commenté la ligne ipv6 et indiqué un nom correct d’interface pour ipv4.
– Redémarrez le serveur si nécessaire et vérifiez si le service a bien démarré.
Pour vérifier l’état de votre serveur :
[pastacode lang= »bash » manual= »joel%40dhcp-server%3A~%24%20sudo%20systemctl%20status%20isc-dhcp-server.service%20%0A%E2%97%8F%20isc-dhcp-server.service%20-%20LSB%3A%20DHCP%20server%0A%20%20%20Loaded%3A%20loaded%20(%2Fetc%2Finit.d%2Fisc-dhcp-server%3B%20generated%3B%20vendor%20preset%3A%20enabled)%0A%20%20%20Active%3A%20active%20(running)%20since%20Thu%202017-10-26%2010%3A02%3A51%20CEST%3B%203min%2048s%20ago%0A%20%20%20%20%20Docs%3A%20man%3Asystemd-sysv-generator(8)%0A%20%20Process%3A%201405%20ExecStart%3D%2Fetc%2Finit.d%2Fisc-dhcp-server%20start%20(code%3Dexited%2C%20status%3D0%2FSUCCESS)%0A%20%20%20%20Tasks%3A%201%20(limit%3A%204915)%0A%20%20%20CGroup%3A%20%2Fsystem.slice%2Fisc-dhcp-server.service%0A%20%20%20%20%20%20%20%20%20%20%20%E2%94%94%E2%94%801417%20%2Fusr%2Fsbin%2Fdhcpd%20-4%20-q%20-cf%20%2Fetc%2Fdhcp%2Fdhcpd.conf%20enp0s8%0A%0Aoct.%2026%2010%3A02%3A48%20dhcp-server%20systemd%5B1%5D%3A%20Starting%20LSB%3A%20DHCP%20server…%0Aoct.%2026%2010%3A02%3A48%20dhcp-server%20isc-dhcp-server%5B1405%5D%3A%20Launching%20IPv4%20server%20only.%0Aoct.%2026%2010%3A02%3A48%20dhcp-server%20dhcpd%5B1416%5D%3A%20Wrote%200%20leases%20to%20leases%20file.%0Aoct.%2026%2010%3A02%3A49%20dhcp-server%20dhcpd%5B1417%5D%3A%20Server%20starting%20service.%0Aoct.%2026%2010%3A02%3A51%20dhcp-server%20isc-dhcp-server%5B1405%5D%3A%20Starting%20ISC%20DHCPv4%20server%3A%20dhcpd.%0Aoct.%2026%2010%3A02%3A51%20dhcp-server%20systemd%5B1%5D%3A%20Started%20LSB%3A%20DHCP%20server.%0Ajoel%40dhcp-server%3A~%24%20%0A » message= » » highlight= » » provider= »manual »/]
Puisque notre service est lancé et tourne sur la bonne interface, nous pouvons maintenant configurer le client.
Configuration client Linux
Connecter la 2e carte réseau du client Debian dur le même réseau que votre carte d’écoute du serveur DHCP. Nous allons commencer par nous connecter à la machine qui va jouer le rôle de serveur DHCP.
On commence par changer le nom de la machine
[pastacode lang= »bash » manual= »sudo%20hostname%20%20dhcp-server%0Asudo%20sh%20-c%20%22echo%20client1%20%3E%20%2Fetc%2Fhostname%22%0Asudo%20sh%20-c%20%22echo%20127.0.0.1%20%09client1%20%3E%3E%20%2Fetc%2Fhosts%22%20%0A » message= » » highlight= » » provider= »manual »/]
Lister l’ensemble des interfaces réseau disponible avec la commande : ip a
[pastacode lang= »bash » manual= »1%3A%20lo%3A%20%3CLOOPBACK%2CUP%2CLOWER_UP%3E%20mtu%2065536%20qdisc%20noqueue%20state%20UNKNOWN%20group%20d%C3%A9faut%20qlen%201%0A%20%20%20%20link%2Floopback%2000%3A00%3A00%3A00%3A00%3A00%20brd%2000%3A00%3A00%3A00%3A00%3A00%0A%20%20%20%20inet%20127.0.0.1%2F8%20scope%20host%20lo%0A2%3A%20enp0s3%3A%20%3CBROADCAST%2CMULTICAST%2CUP%2CLOWER_UP%3E%20mtu%201500%20qdisc%20pfifo_fast%20state%20UP%20group%20default%20qlen%201000%0A%20%20%20%20link%2Fether%2008%3A00%3A27%3Adc%3A0e%3A40%20brd%20ff%3Aff%3Aff%3Aff%3Aff%3Aff%0A%20%20%20%20inet%2010.0.2.15%2F24%20brd%2010.0.2.255%20scope%20global%20enp0s3%0A%20%20%20%20%20%20%20valid_lft%20forever%20preferred_lft%20forever%0A3%3A%20enp0s8%3A%20%3CBROADCAST%2CMULTICAST%2CUP%2CLOWER_UP%3E%20mtu%201500%20noop%20state%20DOWN%20group%20default%20qlen%201000%0A%20%20%20%20link%2Fether%2008%3A00%3A27%3A29%3Aae%3A60%20brd%20ff%3Aff%3Aff%3Aff%3Aff%3Aff%0A » message= » » highlight= » » provider= »manual »/]
Nous pouvons donc constater que l’interface enp0s8 n’a pas encore d’adresse ip malgré le fait qu’elle soit connectée sur le même switch virtuelle que notre serveur DHCP. Cela est normal, car l’interface est down. Nous allons commencer pas modifier la configurer pour qu’elle soit montée automatiquement au démarrage.
[pastacode lang= »bash » manual= »sudo%20sh%20-c%20%22echo%20allow-hotplug%20enp0s8%20%3E%3E%20%2Fetc%2Fnetwork%2Finterfaces%22″ message= » » highlight= » » provider= »manual »/]
Nous allons ensuite créer un fichier de configuration qui contiendra les configurations de notre interface et qui porte le nom de cette dernière.
[pastacode lang= »bash » manual= »sudo%20nano%20%20%2Fetc%2Fnetwork%2Finterfaces.d%2Fenp0s8.conf » message= » » highlight= » » provider= »manual »/]
Placer y le contenu suivant :
[pastacode lang= »bash » manual= »%23Interface%20enp0s8%0A%09iface%20enp0s8%20inet%20DHCP%20%0A » message= » » highlight= » » provider= »manual »/]
Ensuite nous allons monter l’interface enp0s8
[pastacode lang= »bash » manual= »ip%20link%20set%20dev%20enp0s8%20up » message= » » highlight= » » provider= »manual »/]
Ensuite, lancer la commande dhclient qui appel le service client DHCP et lance le renouvellement de l’IP de la carte réseau en paramètre.
[pastacode lang= »bash » manual= »dhclient%20enp0s8%20″ message= » » highlight= » » provider= »manual »/]
Ensuite vous pouvez afficher l’IP obtenu avec la commande : ip a
[pastacode lang= »bash » manual= »joel%40debian%3A~%24%20ip%20-4%20a%0A1%3A%20lo%3A%20%3CLOOPBACK%2CUP%2CLOWER_UP%3E%20mtu%2065536%20qdisc%20noqueue%20state%20UNKNOWN%20group%20default%20qlen%201%0A%20%20%20%20inet%20127.0.0.1%2F8%20scope%20host%20lo%0A%20%20%20%20%20%20%20valid_lft%20forever%20preferred_lft%20forever%0A2%3A%20enp0s3%3A%20%3CBROADCAST%2CMULTICAST%2CUP%2CLOWER_UP%3E%20mtu%201500%20qdisc%20pfifo_fast%20state%20UP%20group%20default%20qlen%201000%0A%20%20%20%20inet%2010.0.2.15%2F24%20brd%2010.0.2.255%20scope%20global%20enp0s3%0A%20%20%20%20%20%20%20valid_lft%20forever%20preferred_lft%20forever%0A3%3A%20enp0s8%3A%20%3CBROADCAST%2CMULTICAST%2CUP%2CLOWER_UP%3E%20mtu%201500%20qdisc%20pfifo_fast%20state%20UP%20group%20default%20qlen%201000%0A%20%20%20%20inet%20192.168.57.100%2F24%20brd%20192.168.57.255%20scope%20global%20enp0s8%0A%20%20%20%20%20%20%20valid_lft%20forever%20preferred_lft%20forever%0Ajoel%40debian%3A~%24%20%0A » message= » » highlight= » » provider= »manual »/]
2 commentaires