Configuration DHCP sur un routeur Cisco

Le protocole DHCP (Dynamic Host Configuration Protocol) a pour fonctionnalité de fournir aux machines qui le demandent une configuration IP complète, adresse IPv4, masque de sous-réseau, passerelle par défaut, serveur dns… Cet article a pour sujet la configuration d’un routeur Cisco en serveur DHCP.

Topologie de la configuration

dhcp

Nous allons ici réaliser la configuration de R1, routeur d’accès à internet du réseau et DHCP, routeur faisant office de serveur DHCP. Bien entendu les services DHCP auraient pu être configurés sur R1, mais pour des raisons didactiques j’ai choisi de séparer cette fonctionnalité. vous comprendre pourquoi plus tard dans l’article.

La configuration ne reprendra que ce qui est relatif au DHCP, R1 est donc censé être configuré selon les besoins standards (adresses IPv4 sur les interfaces, route par défaut pointant vers ISP, et bien sûr un peu de NAT pour permettre l’accès au réseau publique).

Configuration initiale

Afin d’éviter de finir avec un article de plusieurs pages de long, je ne mettrai ici que la configuration nécessaire. Les paramètres par défaut ne sont pas inclus.

Sur ISP

hostname ISP
!
interface Loopback0
 ip address 8.8.8.8 255.255.255.255
!
interface Serial0/0
 ip address 80.100.200.1 255.255.255.252
 clock rate 2000000

Sur R1

interface FastEthernet0/0
 ip address 192.168.0.1 255.255.255.0
 ip nat inside
 ip virtual-reassembly
 duplex auto
 speed auto
!
interface Serial0/0
 ip address 80.100.200.2 255.255.255.252
 ip nat outside
 ip virtual-reassembly
 clock rate 2000000
!
interface FastEthernet0/1
 ip address 192.168.1.1 255.255.255.0
 ip nat inside
 ip virtual-reassembly
 duplex auto
 speed auto
!
ip route 0.0.0.0 0.0.0.0 Serial0/0
!
ip nat inside source list 1 interface Serial0/0 overload
!
access-list 1 permit any

Sur DHCP

hostname DHCP
!
interface FastEthernet0/0
 ip address 192.168.1.5 255.255.255.0
 duplex auto
 speed auto
!
ip route 0.0.0.0 0.0.0.0 192.168.1.1

Attention, la route par défaut sur DHCP est nécessaire pour la suite de la configuration, j’en toucherai un mot plus loin.

Piqûre de rappel

Le protocol DHCP est véhiculé directement dans une trame. De plus la machine qui émet une requête DHCP, n’ayant encore aucune identité (adresse IPv4 etc) n’a d’autre possibilité que de communiquer par broadcast. Cela signifie donc que la requête DHCP émise par cette machine est une trame broadcast.

Cela peut paraître sans importance, mais il ne faut pas oublier qu’un broadcast est confiné dans son domaine de diffusion, autrement dit, il ne dépasse pas un routeur. Hors, ici, entre le serveur DHCP et le LAN1 il y a R1… un routeur!

Nous devrons donc par la suite s’assurer que R1 soit configuré pour relayer la requête DHCP à destination du serveur DHCP.

Méthode de configuration

Afin que DHCP puisse distribuer des adresses à la fois dans le LAN1 et dans le LAN2 nous allons devoir configurer les points suivants:

  • Exclure les adresses qu’on souhait ne pas distribuer (celle de la passerelle, ou de machines ayant des adresses fixes)
  • Pour chaque LAN configurer un pool DHCP dans lequel on spécifiera les options (passerelle, serveur dns, adresse réseau, …)
  • Configurer le relai DHCP pour le LAN1, sur R1.

La configuration

La bonne pratique veut que l’on configure le serveur DHCP dans un ordre qui peut paraître illogique au premier abord. Ce qu’il faut savoir, c’est qu’une fois le pool DHCP configuré, le routeur va commencer à attribuer des adresses. Il est donc conseillé de configurer en premiers les options (adresses à exclure  paramètres du pool… le tout avant de définir la plage d’adresse à prendre en charge), sans quoi il se pourrait que les premières configurations reçues par les machines soient incomplètes.

Commençons par le routeur DHCP…

Exclusion des adresses nécessaires (adresse des passerelles, du serveur DHCP, …) ici nous allons exclure les dix premières de chaque LAN (choix arbitraire).

DHCP(config)#ip dhcp excluded-address 192.168.0.1 192.168.0.10
DHCP(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.10

Attention dans la définition des adresses à exclure, la première adresse donne le début de la plage et la deuxième la fin de la plage à exclure. Si vous ne souhaitez qu’exclure une adresse, il suffit de ne pas donner d’adresse de fin.

Configurons maintenant le pool DHCP pour la LAN1…

DHCP(config)#ip dhcp pool LAN1
DHCP(dhcp-config)#default-router 192.168.0.1
DHCP(dhcp-config)#dns-server 8.8.8.8
DHCP(dhcp-config)#network 192.168.0.0 255.255.255.0
DHCP(dhcp-config)#exit

On a donc créé ici un pool DHCP nommé LAN1, dans lequelles les machines recevront comme passerelle par défaut 192.168.0.1 (l’adresse de R1 dans le LAN1), un serveur DNS 8.8.8.8 (totalement fictif ici, mais il me semblait indispensable de montrer comment le configurer)… et cette configuration sera valable pour le réseau 192.168.0.0/24 (plage d’adresse à distribuer de laquelle il faut soustraire les adresses précédemment exclues).

Faison de même pour le LAN2…

DHCP(config)#ip dhcp pool LAN2
DHCP(dhcp-config)#default-router 192.168.1.1
DHCP(dhcp-config)#dns-server 8.8.8.8
DHCP(dhcp-config)#network 192.168.1.0 255.255.255.0
DHCP(dhcp-config)#exit

A présent les machnes du  LAN2 doivent recevoir leur configuration correctement étant donné que le serveur DHCP est dans le même domaine de diffusion qu’elles.

Vérifions sur C2…

VPCS[2]> ip dhcp
DDORA IP 192.168.1.11/24 GW 192.168.1.1

Le serveur DHCP devrait également avoir gardé ce bail DHCP en mémoire…

DHCP#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
 Hardware address/
 User name
192.168.1.11 0100.5079.6668.01 Mar 02 2002 12:34 AM Automatic
DHCP#

Par contre … impossible pour C1 de recevoir sa configuration …

VPCS[1]> ip dhcp
DDD
Can't find dhcp server

En effet, lorsque R1 reçoit la tramme de broadcast contenant la requête DHCP de C1, vu qu’il ne sait rien en faire, il la « jette » purement et simplement.

Il nous faut configurer le relai des trames DHCP vers le serveur DHCP. Pour cela nous devons dire explicitement à R1 de relayer ces trames à 192.168.1.5 (le serveur DHCP) lorsqu’elles entrent sur son interface Fa0/0. Voici la manipulation:

R1(config)#interface fastEthernet 0/0
R1(config-if)#ip helper-address 192.168.1.5

Notez que la commande « ip helper-address » a plus d’utilité que le simple relai des requêtes DHCP. Elle sert à relayer les broadcasts UDP de plusieurs protocoles (DHCP, NTP, Netbios…).

A présent C1 peut aussi obtenir sa configuration par DHCP

VPCS[1]> ip dhcp
DDORA IP 192.168.0.11/24 GW 192.168.0.1

DHCP doit également avoir retenu les informations concernant ce bail DHCP…

DHCP#show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
 Hardware address/
 User name
192.168.0.11 0100.5079.6668.00 Mar 02 2002 01:27 AM Automatic
192.168.1.11 0100.5079.6668.01 Mar 02 2002 12:34 AM Automatic
DHCP#

Quelques explications complémentaires…

Comment fait DHCP pour savoir dans quel pool d’adresse il doit piocher en réponse à une requête venant du LAN1 ou du LAN2 ?

Dans le cas du LAN2, la requête arrive sous forme de broadcast, sur l’interface ethernet de DHCP, il lui suffit alors de fournir une configuration pour une machine dansle même domaine de diffusion que lui, donc le pool LAN2.

Par contre dans le cas du LAN1, la requête arrive à DHCP sous forme d’unicast, car elle est relayée par R1. R1 a en réalité, construit un paquet unicast, avec comme adresse source celle de son interface dans le LAN1 et comme destination celle du serveur DHCP.

Dés lors quand DHCP reçoit la requête unicast, il propose une adresse provenant du pool dont la plage d’adresse correspond à celle configurée sur l’interface Fa0/0 de R1.

Quelques paramètres en plus…

Bien entendu la configuration du DHCP ne se limite pas à une adresse, un masque, une passerelle et un serveur DNS. Voici quelques autres paramètres configurables…

Définir le nom de domaine qui sera associé à l’interface recevant la configuration…

DHCP(config)#ip dhcp pool LAN1
DHCP(dhcp-config)#domain-name test.lab

Configurer la durée du bail DHCP…

DHCP(dhcp-config)#lease 5 10 30

Le format est « lease <jours> <heures> <minutes> ». On peut également défini un bail illimité en utilisant « lease infinite ».

Il est également possible de configurer des options « brutes ». Ce sont des paramètres n’ayant pas de nom spécifiques. Mais la syntaxe varie en fonction des données à fournir.

Par exemple, si on doit renseigner une adresse de serveur TFTP pour qu’une machine puisse y récupérer une image de démarrage (c’est le cas dans avec les systèmes de déploiement réseau), il faut indiquer l’option 150, avec comme paramètre l’adresse ip du serveur TFTP.

DHCP(dhcp-config)#option 150 ip 192.168.1.50

Encore une vérification…

Nous avons vu précédemment la commande « show ip dhcp binding » qui affiche la liste des baux en cours. Il est aussi possible d’afficher les pools DHCP et leurs statistiques…

DHCP#sh ip dhcp pool LAN1
 Pool LAN1 :
 Utilization mark (high/low) : 100 / 0
 Subnet size (first/next) : 0 / 0
 Total addresses : 254
 Leased addresses : 1
 Pending event : none
 1 subnet is currently in the pool :
 Current index IP address range Leased addresses
 192.168.0.12 192.168.0.1 - 192.168.0.254 1
DHCP#

Voilà de quoi configurer un serveur DHCP fonctionnel.

23 Comments on “Configuration DHCP sur un routeur Cisco

  1. Bonjour STEVE,

    Pourrais tu stp me montrer comment configurer c1 et c2 sous GNS3 pour qu’ils se comportent comme des PC clients et aussi pour qu’ils reçoivent les adresses ip du serveur de façon dynamique!

    • Si tu utilises la dernière version de GNS3, il s’agit de simple VPCS à intégrer et raccorder dans la topologie. Une fois ne console sur ces pseudos PCs, il suffit de faire « ip dhcp » (de mémoire).

  2. Merci a vous infinement grace a vous et a vos connaissances tout le monde est à jour merci encore

    • Pour que le serveur DHCP puisse envoyer les réponses DHCP vers les différents réseau il doit disposer d’une passerelle par défaut. Or sur un routeur sur lequel le routage n’est pas désactivé, la commande « ip default-gateway » n’est pas prise en compte. Dés lors la solution de rechange est de lui configurer une route statique.

  3. Encore une fois merci , votre site est accessible, bien construit ,complet et d’une grande maitrise technique c’est un plaisir de vous lire et de réaliser vos labs

    serge