Annexe P. Monter un proxy-ARP

Table des matières
1. L'idée
2. Le principe de fonctionnement
2.1. La théorie
2.2. En pratique
3. Montage
3.1. Préliminaires
3.2. Configuration du réseau du proxy-ARP
3.3. Configuration du réseau des clients
3.4. Astuce

Note

Annexe écrite à partir d'une première version de Robert Cheramy.

Important

Cette partie requiert des connaissances de base en réseau Ethernet et IP. Lien vers une formation VIA à ce sujet.

1. L'idée

Le proxy-ARP rejoint le principe du bridge (expliqué dans l'annexe précédente Monter un bridge (firewallant)) dans le sens où il permet de connecter plusieurs machines au réseau avec une machine centrale sous Linux. Par contre, contrairement au bridge qui agit au niveau Ethernet (i.e. layer 2), le proxy-ARP agit au niveau IP (i.e. layer 3). Cette annexe va donc vous apprendre à faire des tables de routage sous Linux !

2. Le principe de fonctionnement

3. Montage

3.2. Configuration du réseau du proxy-ARP

Pour plus de précisions concernant ce qui suit, je vous invite à consulter man interfaces et man route.

Nous allons maintenant modifier le fichier de configuration des interfaces réseau /etc/network/interfaces en utilisant mon fichier de configuration d'exemple et en le personnalisant :


# mv /etc/network/interfaces /etc/network/interfaces.old
# cp ~/config/interfaces-proxy-arp /etc/network/interfaces

ou :


% wget http://people.via.ecp.fr/~alexis/formation-linux/config/interfaces-proxy-arp
# mv /etc/network/interfaces /etc/network/interfaces.old
# mv interfaces-proxy-arp /etc/network/interfaces

Personnalisez le nouveau fichier /etc/network/interfaces ; les lignes de commentaire doivent vous permettre de comprendre chaque paramètre :


# /etc/network/interfaces
# Fichier de configuration d'exemple des interfaces réseau
# pour faire un Proxy-ARP
# Formation Debian GNU/Linux par Alexis de Lattre
# http://www.via.ecp.fr/~alexis/formation-linux/

# Plus d'informations dans "man interfaces" et "man route"


# L'interface de loopback
auto lo
iface lo inet loopback
    # Activation du "forwarding IP" et du "proxy-arp" au niveau du noyau :
    up echo "1" > /proc/sys/net/ipv4/ip_forward
    up echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp

# Configuration de l'interface eth0, connectée au réseau extérieur
auto eth0
iface eth0 inet static
    # Adresse IP du proxy-arp :
    address 138.195.152.12
    # Masque de sous-réseau du réseau extérieur :
    netmask 255.255.255.128
    # Adresse de broadcast du réseau extérieur :
    broadcast 138.195.152.127
    # Adresse de la passerelle du réseau extérieur :
    gateway 138.195.152.1

# Configuration de l'interface eth1, connectée à client1
auto eth1
iface eth1 inet static
    # Adresse IP du proxy-arp :
    address 138.195.152.12
    # Masque du sous-réseau du réseau extérieur :
    netmask 255.255.255.128
    # Adresse de broadcast du réseau extérieur :
    broadcast 138.195.152.127
    # Route qui dit que client1 est derrière eth1 :
    up route add 138.195.152.42 dev eth1
    # Suppression d'une route ajoutée à tort par la ligne précédente
    # 138.195.144.0 = adresse du réseau extérieur
    # 255.255.240.0 = masque de sous-réseau du réseau extérieur
    up route del -net 138.195.152.0 netmask 255.255.255.128 dev eth1

# Configuration de l'interface eth2, connectée à client2
auto eth2
iface eth2 inet static
    # Adresse IP du proxy-arp :
    address 138.195.152.12
    # Masque du sous-réseau du réseau extérieur :
    netmask 255.255.255.128
    # Adresse de broadcast du réseau extérieur :
    broadcast 138.195.152.127
    # Route qui dit que client2 est derrière eth2 :
    up route add 138.195.152.43 dev eth2
    # Suppression d'une route ajoutée à tort par la ligne précédente
    # 138.195.144.0 = adresse du réseau extérieur
    # 255.255.240.0 = masque de sous-réseau du réseau extérieur
    up route del -net 138.195.152.0 netmask 255.255.255.128 dev eth2

Relancez la configuration des interfaces réseau :


# /etc/init.d/networking restart

Vérifiez que les changements ont bien été pris en compte :


% ifconfig

Vérifiez que la table de routage est bonne :


% route -n

Dans l'exemple de ce chapitre, la table de routage est la suivante :


Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
138.195.152.42  0.0.0.0         255.255.255.255 UH    0      0        0 eth1
138.195.152.43  0.0.0.0         255.255.255.255 UH    0      0        0 eth2
138.195.152.0   0.0.0.0         255.255.255.128 U     0      0        0 eth0
0.0.0.0         138.195.152.1   0.0.0.0         UG    0      0        0 eth0

3.3. Configuration du réseau des clients

3.3.1. Configurer un client Linux

La configuration des clients est strictement identique à la configuration qu'ils auraient s'ils n'étaient pas derrière le proxy-ARP. Par contre, il faut définir leur IP en dur, pas par DHCP, car le broadcast est bloqué par le proxy-ARP.

Si le client est aussi une Debian, éditez le fichier /etc/network/interfaces :


# /etc/network/interfaces de client1

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    # Adresse IP de client1 :
    address 138.195.152.42
    # Masque de sous-réseau du réseau extérieur :
    netmask 255.255.255.128
    # Adresse de broadcast du réseau extérieur :
    broadcast 138.195.152.127
    # Adresse de la passerelle du réseau extérieur :
    gateway 138.195.152.1

Pour que le système tienne compte des modifications :


# /etc/init.d/networking restart
Reconfiguring network interfaces: done.