Agent de relais DHCP

Le but de ce billet est d'installer un agent de relais DHCP sur un routeur Linux/Ubuntu

Vous avez configuré votre serveur DHCP, pour qu'il fournisse des adresses IP à tous votre réseau, et vous avez même été plus loin , puisque votre DHCP gère même plusieurs sous réseaux...

Par exemple 192.168.1.0/24 et 192.168.2.0/24

votre DHCP est situé sur le sous réseau 192.168.1.0/24 et attribue très bien les adresses à tous les postes de son sous réseau.

Mais le problême, c'est que le sous réseau 192.168.2.0/24 est situé derrière un routeur. (un routeur Linux ... Ouf on a de la chance ;-) )

On remarque alors que ce sous réseau ne se fait pas attribuer d'addresse IP par notre serveur.

Que se passe t'il ??

c'est pourtant Simple ;-)

la base d'une requete DHCP est le suivant:

1/ Lorsque le client DHCP démarre, il n'a aucune connaissance du réseau, du moins, en principe. Il envoie donc une trame "DHCPDISCOVER", destinée à trouver un serveur DHCP. Cette trame est un "broadcast", donc envoyé à l'adresse 255.255.255.255. N'ayant pas encore d'adresse IP, il adopte provisoirement l'adresse 0.0.0.0. Comme ce n'est pas avec cette adresse que le DHCP va l'identifier, il fournit aussi sa "MAC Address".

 

2/ Le, ou les serveurs DHCP du réseau qui vont recevoir cette trame vont se sentir concernés et répondre par un "DHCPOFFER". Cette trame contient une proposition de bail et la "MAC Address" du client, avec également l'adresse IP du serveur. Tous les DHCP répondent et le client normalement accepte la première réponse venue.

 

3/ Le client répond alors par un DHCPREQUEST à tous les serveurs (donc toujours en "Broadcast") pour indiquer quelle offre il accepte.

4/ Le serveur DHCP Concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

(cf : Le site de Caleca )

Une requete DHCP est donc un broadcast : et comme vous le savez tous, les routeurs bloquent les broadcast, afin d'isoler les sous réseau en domaine de broadcast.

Donc forcement notre requete DHCP est bloquée et éliminée par notre routeur.

Heureusement il existe une solution :

Installer un service relai DHCP.

Sous Linux c'est dhcp-relay

sudo apt-get install dhcp3-relay

Le script d'installation vous demande alors quel serveur dhcp vous voulez écouter... Mettez ici l'IP de votre serveur.

Le script vous demande sur quelles interfaces ecouter, Ne mettez rien, et il écoutera sur toutes les interfaces.

Vous pouvez de toute facon modifer ces options en éditant le fichier /etc/default/dhcp3-relay

 # Defaults for dhcp3-relay initscript # sourced by /etc/init.d/dhcp3-relay # installed at /etc/default/dhcp3-relay by the maintainer scripts # # This is a POSIX shell fragment # # What servers should the DHCP relay forward requests to? SERVERS="192.168.1.101" # On what interfaces should the DHCP relay (dhrelay) serve DHCP requests? INTERFACES="eth0 eth1" # Additional options that are passed to the DHCP relay daemon? OPTIONS=""

Voila à présent votre routeur va écouter les requetes dhcp et les rediriger vers les bonnes interfaces... autrement dit toutes puisque c'est un broadcast ;-)

Activer le routage sur Linux

Le problême est le suivant, vous avez un poste sous linux, avec deux interfaces eth0 et eth1 par exemple..

vous souhaitez que le poste se comporte comme un routeur afin de rediriger les paquets vers les interfaces appropriées.

Vous aurez beau mettre les ip que vous voulez et les routes statiques que vous voulez, cela ne marchera pas tant que vous n'aurez pas déverouillé le forwarding

La commande est simple :

echo 1 > /proc/sys/net/ipv4/ip_forward

après cela votre poste est capable de router ;-)

«précédente page 31 sur 33 suivante »