Proxy ARP sous Linux
networking linux
par julien, sept. 2007
Dans le cas ou l'on a des machines d'un meme reseau de part et d'autre d'une box (voir le schema ci-dessous), le proxy ARP doit etre utilise pour faire communiquer l'ensemble.
Ici, on veut que les trois machines 192.168.1.{21;22;23} puissent communiquer avec le reste du monde. Sur ces machines, on va donc specifier comme passerelle par defaut le ProxyARP : 192.168.1.20 (carte eth1).
Sur le ProxyARP, il faut donc activer le routage :
echo 'Activate routing mode' echo 1 > /proc/sys/net/ipv4/ip_forward
et on va egalement activer le mode proxy arp
echo 'Activate ARP Proxy mode' echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
D'un point de vue reseau, le probleme est que les requete ARP ne sont pas routables. Donc quand les machines du reseau principal font chercher les adresses MAC de 192.168.1.{21;22;23}, elle ne font recevoir aucune reponse. La solution, c'est de demander au ProxyARP de repondre a leurs place avec sa propre adresse MAC. Il va donc recevoir les paquets pour les autres machines et les faire suivre grace a sa fonction de routage.
Donc :
- Le ProxyARP doit publier une reponse ARP pour chaque machine derriere lui et …
- il doit savoir vers ou router les paquets recus pour ces machines
Ce qui se traduit par :
echo "add host 192.168.1.21" route add -host 192.168.1.21 eth1 arp -i eth0 -Ds 192.168.1.21 eth0 pub
La regle route permet de faire suivre les paquets sur l'interface eth1 (192.168.1.20) et la regle ARP permet de dire que pour l'interface eth0, on publie (pub) a tout le monde que 192.168.1.21 est relie a l'adresse MAC de la carte eth0 du ProxyARP.
Et Hop, ca marche :)
~~DISCUSSION~~