Ceci est une ancienne révision du document !


IP routage NAT

Routage avec MASQUERADE

Plus fort. Nous reprenons ici le principe du routage entre un réseau local utilisant des adresses IP privées et une connexion Internet, avec une « vraie » IP, une qui peut se promener de réseau en réseau en dehors de notre microcosme.

Pour réaliser la manipulation, nous réalisons quelque chose de très similaire à ce que nous avons vu en page précédente, seules les adresses MAC et IP changent, de même que le nom de la passerelle. Notre routeur cyclope, qui connecte nos réseaux 192.168.1.0 et 192.168.0.0 va, ici, réaliser un masquage d'adresse pour 192.168.1.0.

Autrement dit :

  • 192.168.1.0 joue le rôle du réseau local,
  • 192.168.0.0 joue le rôle de l'Internet

Ici, cyclope ne va pas se comporter en routeur « normal », il fera du masquage d'adresse de tout ce qui vient du réseau 192.168.1.0 et sort par eth0.

Avec IPtables, nous utilisons la commande suivante :

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

192.168.1.2 envoie un ping sur 192.168.0.15 :

Côté réseau 192.168.1.0 (LAN) Côté réseau 192.168.0.0 (Pseudo Internet)
# Le ping...
Frame 1 ... Ethernet II, Src: 00:80:c8:8e:89:b0, Dst: 00:20:18:2c:0e:21 Destination: 00:20:18:2c:0e:21 (192.168.1.1) Source: 00:80:c8:8e:89:b0 (192.168.1.2) # Au niveau Ethernet (niveau 2) # - La source est la vraie source # - la destination devient le routeur # Jusque là, tout est normal. Type: IP (0x0800) Internet Protocol, Src Addr: 192.168.1.2 Dst Addr: 192.168.0.15 # Au niveau IP (niveau 3) # - La source est la vraie source # - la destination est la vraie destination # Assez banal, finalement... Version: 4 ... Protocol: ICMP (0x01) Header checksum: 0xb847 (correct) Source: 192.168.1.2 Destination: 192.168.0.15 Internet Control Message Protocol Type: 8 (Echo (ping) request)
# Le ping...

Frame 1 ...
Ethernet II, Src: 00:20:af:4a:66:b7, 
             Dst: 00:05:5d:48:2b:84
    Destination: 00:05:5d:48:2b:84 (192.168.0.15)
    Source: 00:20:af:4a:66:b7 (192.168.0.16)
# Au niveau Ethernet (niveau 2)
#   - La source devient le routeur
#   - la destination est la vraie destination
# Jusque là, tout est normal.

    Type: IP (0x0800)
Internet Protocol, Src Addr: 192.168.0.16
                   Dst Addr: 192.168.0.15
# Au niveau IP (niveau 3)
#   - La source devient le routeur (192.168.0.16)
#   - la destination reste la vraie destination
# Il y a donc eu remplacement de l'adresse
# de la source par celle du routeur (MASQUERADE)...

    Version: 4
    ...
    Protocol: ICMP (0x01)
    Header checksum: 0xba39 (correct)
    Source: 192.168.0.16
    Destination: 192.168.0.15
Internet Control Message Protocol
    Type: 8 (Echo (ping) request)
# Et la réponse...

Frame 2 ...
Ethernet II, Src: 00:20:18:2c:0e:21, 
             Dst: 00:80:c8:8e:89:b0
    Destination: 00:80:c8:8e:89:b0 (192.168.1.2)
    Source: 00:20:18:2c:0e:21 (192.168.1.1)

# Au niveau Ethernet, le routeur répond
# au client, c'est encore normal.

    Type: IP (0x0800)
Internet Protocol, Src Addr: 192.168.0.15, 
                   Dst Addr: 192.168.1.2

# Au niveau IP, de ce côté-ci, on a bien
# l'impression que le serveur a répondu directement
# au client, tout semble normal.
# En fait, MASQUERADE a bien fait son travail.

    Version: 4
    ...
    Protocol: ICMP (0x01)
    Header checksum: 0x25b4 (correct)
    Source: 192.168.0.15
    Destination: 192.168.1.2
Internet Control Message Protocol
    Type: 0 (Echo (ping) reply)
# Et la réponse...

Frame 2 ...
Ethernet II, Src: 00:05:5d:48:2b:84, 
             Dst: 00:20:af:4a:66:b7
    Destination: 00:20:af:4a:66:b7 (192.168.0.16)
    Source: 00:05:5d:48:2b:84 (192.168.0.15)

# Au niveau Ethernet, le serveur répond au routeur
# Là encore, c'est normal.

    Type: IP (0x0800)
Internet Protocol, Src Addr: 192.168.0.15,
                   Dst Addr: 192.168.0.16

# Mais au niveau IP, le serveur répond aussi
# au routeur. C'est logique, à cause de MASQUERADE,
# le serveur croit que c'est le routeur qui
# a envoyé le ping.

    Version: 4
    ...
    Protocol: ICMP (0x01)
    Header checksum: 0x25a7 (correct)
    Source: 192.168.0.15
    Destination: 192.168.0.16
Internet Control Message Protocol
    Type: 0 (Echo (ping) reply)

La morale de cette histoire est la suivante :

  • Du côté du LAN, nous avons l'impression d'utiliser un routeur « normal », comme vu en page précédente,
  • du côté Internet, les clients du LAN sont masqués par le routeur. Côté Inet, tout semble provenir du routeur lui-même.

Ce n'est pas pour rien que l'on appelle cette technique :  du masquage d'adresse (MASQUERADE) !

Pour finir de mettre les points sur les i :

Dans un routage par masquage d'adresse :

  • au niveau 2 (Ethernet) :
    • les requêtes sont envoyées du client sur le routeur, puis du routeur sur le serveur, 
    • les réponses sont envoyées du serveur sur le routeur, puis du routeur sur le client.
  • au niveau 3 (IP) :
    • les requêtes semblent aller directement du client sur le serveur,(mais le routeur remplace, au passage, l'adresse IP du client par la sienne)
    • les réponses vont du serveur au routeur, puis du routeur au client, mais le client a l'impression que la réponse lui parvient directement, parce que le routeur change son adresse de destination par celle du client initial.

Le routage avec Masquerade Dans un routage simple, c'est plus simple :

  • au niveau 2 (Ethernet) :
    • les requêtes sont envoyées du client sur le routeur, puis du routeur sur le serveur, 
    • les réponses sont envoyées du serveur sur le routeur, puis du routeur sur le client.
  • au niveau 3 (IP) :
    • les requêtes vont directement du client sur le serveur,
    • les réponses vont directement du serveur au client.

Le routage « simple »