Nous allons configurer notre routeur en serveur DHCP pour le LAN.

Un serveur DHCP distribue des adresses IP aux machines qui en font la demande sur le LAN. Le serveur distribue les adresses à partir d’un pool d’adresses; à 2 demandes consécutives à partir d’une même machine, on n’obtient pas obligatoirement la même adresse. Et si on souhaite avoir des machines de notre LAN avec des adresses fixes, par exemple parce qu’il s’agit d’un serveur accessible grace à une redirection de port sur le routeur? 2 solutions:

  1. Exclure l’adresse du pool dhcp, et configurer l’adresse choisie sur la machine elle même… bof…
  2. Configurer un pool statique pour chaque machine ayant une adresse fixe. Yes ! sur un IOS… bof…. Nous allons voir ça…

Voyons comment configurer un pool dynamique, et 2 pools statiques pour notre réseau…

La documentation est sur le site de Cisco à cette adresse: http://www.cisco.com/en/US/docs/ios/ipaddr/configuration/guide/iad_dhcp_svr_cfg_ps6350_TSD_Products_Configuration_Guide_Chapter.html

Passage en mode configuration

router#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
router(config)#

Configuration d’un pool dynamique

router(dhcp-config)#ip dhcp pool int_philbnet_dyn
router(dhcp-config)#network 192.168.100.48 255.255.255.240
router(dhcp-config)#default-router 192.168.100.62
router(dhcp-config)#dns-server 192.168.100.62
router(dhcp-config)#domain-name philb.local
router(dhcp-config)#netbios-name-server 192.168.100.49
router(dhcp-config)#lease infinite
router(dhcp-config)#class dyn_range
router(config-dhcp-pool-class)#address range 192.168.100.57 192.168.100.61
router(config-dhcp-pool-class)#exit
router(dhcp-config)#bootfile /archlinux/pxelinux.0
router(dhcp-config)#next-server 192.168.100.49

Remarque: les 2 dernieres lignes permettent de configurer un boot reseau…
Sortons du mode dhcp-config

router(dhcp-config)#exit

Fin de la configuration

router(config)#^Z
router#

Voila, nous avons un serveur DHCP fonctionnel…
Pour configurer les pools manuels, avec des adresses IP stratique, il est imperatif de savoir quels sont les Client-ID / Hardward address des machines clientes. Même si la doc de Cisco n’est pas très claire, les 2 options, hardware-address et client-identifier sont exclusives!!! Il faut donc savoir a l’avance si un client-id (cas d’un client Windows Vista par exemple) sera presenté au serveur DHCP, ou non (cas de la configuration par défaut du client dhcp de Slackware Linux par exemple)…

La commande show ip dhcp binding nous permet de voir quels sont les Client-ID / Hardware address:

router#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.100.57      001a.4d58.4474          Infinite                Automatic
192.168.100.60      0100.1d09.5944.7c       Infinite                Automatic
192.168.100.58      0008.02f2.e695          Infinite                Automatic
192.168.100.61      0800.2775.51b6          Infinite                Automatic
router#

Configuration d’une premiere adresse statique, avec hardware-address

router(config)#ip dhcp pool int_philbnet_core2
router(dhcp-config)#host 192.168.100.49 255.255.255.240
router(dhcp-config)#hardware-address 001a.4d58.4474
router(dhcp-config)#default-router 192.168.100.62
router(dhcp-config)#dns-server 192.168.100.62
router(dhcp-config)#domain-name philb.local
router(dhcp-config)#netbios-name-server 192.168.100.49
router(dhcp-config)#client-name core2
router(dhcp-config)#lease infinite

Configuration d’une deuxième adresse statique, avec client-identifier

router(dhcp-config)#ip dhcp pool int_philbnet_yao
router(dhcp-config)#host 192.168.100.55 255.255.255.240
router(dhcp-config)#client-identifier 0100.1d09.5944.7c
router(dhcp-config)#default-router 192.168.100.62
router(dhcp-config)#dns-server 192.168.100.62
router(dhcp-config)#domain-name philb.local
router(dhcp-config)#netbios-name-server 192.168.100.49
router(dhcp-config)#client-name yao
router(dhcp-config)#lease infinite

Et voila !
Testons un coup à partir de d’une carte réseau du pool statique int_philbnet_core2:

root@core2:~# /etc/rc.d/rc.inet1 restart
Polling for DHCP server on interface eth0:
dhcpcd: version 5.1.4 starting
dhcpcd: eth0: broadcasting for a lease
dhcpcd: eth0: offered 192.168.100.49 from 192.168.100.62
dhcpcd: eth0: acknowledged 192.168.100.49 from 192.168.100.62
dhcpcd: eth0: checking for 192.168.100.49
dhcpcd: eth0: leased 192.168.100.49 for infinity
dhcpcd: forking to background
root@core2:~#

Tout est OK !

Vérification des bindings:

router#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.100.49      001a.4d58.4474          Infinite                Manual
192.168.100.55      0100.1d09.5944.7c       Infinite                Manual
192.168.100.58      0008.02f2.e695          Infinite                Automatic
192.168.100.61      0800.2775.51b6          Infinite                Automatic
router#

Remarque: Pour exclure une adresse d’être distribuee, il est possible d’utiliser la directive de configuation suivante:

router(config)#ip dhcp excluded-address 192.168.100.62