Compléments sur le routage IP
08/02/2005
 Christian CALECA 
Liste des cours

Une manip. très simple

Accueil ] [ Routage simple ] [ Routage NAT ] [ jouons... ]


manip Dans cet exemple, nous avons un cas extrêmement simple :
  • Un réseau bleu, dont l'adresse IP est 192.168.0.0, avec le classique masque 255.255.255.0,
  • un réseau rouge, dont l'adresse IP est 192.168.1.0, même masque,
  • entre les deux, un routeur qui dispose donc deux deux adresses IP :
    192.168.0.9 dans le réseau bleu
    192.168.1.1 dans le réseau rouge. Ce routeur s'appelle Helios.

Dans le réseau bleu, Saturne, d'adresse IP 192.168.0.2, envoie un ping sur Neptune, qui se trouve dans le réseau rouge avec l'IP 192.168.1.3

Saturne

Machine sous Debian Woody.

Configuration réseau :

saturne:~# ifconfig
eth0      Link encap:Ethernet HWaddr 00:00:E8:78:9A:1F
          inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:2674831 errors:7 dropped:559 overruns:7 frame:0
          TX packets:1880271 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:2193374824 (2.0 GiB) TX bytes:932807313 (889.5 MiB)
          Interrupt:10 Base address:0xa000

lo        Link encap:Local Loopback...

Observez bien les deux adresses qui vont nous être utiles par la suite :

HW addr  :00:00:E8:78:9A:1F
inet addr:192.168.0.2

Configuration de routage :

saturne:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.9 0.0.0.0 UG 0 0 0 eth0

Notez la route par défaut :
Il faut passer par eth0 et joindre le noeud 192.1686.0.9.

Neptune

Egalement sous Debian Woody.

Configuration réseau :

neptune:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:A0:C9:E0:2B:7B
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:527923 errors:0 dropped:0 overruns:0 frame:0
          TX packets:422325 errors:0 dropped:0 overruns:0 carrier:0
          collisions:21182 txqueuelen:100
          RX bytes:269846768 (257.3 MiB)  TX bytes:240923195 (229.7 MiB)
          Interrupt:11 Base address:0x5000

lo        Link encap:Local Loopback...

Observez bien ici aussi les deux adresses qui vont nous être utiles par la suite :

HW addr  : 00:A0:C9:E0:2B:7B
inet addr:192.168.1.3

Configuration de routage :

neptune:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

Notez là encore  la route par défaut :
Il faut passer par eth0 et joindre le noeud 192.168.1.1.

Helios

Sous Mandrake 9.0.

Là, ça va être un peu plus compliqué, il y a deux interfaces réseau :

[root@helios root]# ifconfig
eth0      Lien encap:Ethernet  HWaddr 00:20:18:B9:49:37
          inet adr:192.168.0.9  Bcast:192.168.0.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4338949 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4968746 errors:0 dropped:0 overruns:0 carrier:0
          collisions:11750 lg file transmission:100
          RX bytes:503746782 (480.4 Mb)  TX bytes:547552476 (522.1 Mb)
          Interruption:9 Adresse de base:0x5000

eth1      Lien encap:Ethernet  HWaddr 00:20:AF:4A:66:00
          inet adr:192.168.1.1  Bcast:192.168.1.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4403671 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3762159 errors:0 dropped:0 overruns:0 carrier:0
          collisions:34316 lg file transmission:100
          RX bytes:2763013200 (2635.0 Mb)  TX bytes:2646670391 (2524.0 Mb)
          Interruption:5 Adresse de base:0x210

lo        Lien encap:Boucle locale...

Notons les adresses utiles pour chaque réseau :

HW addr :00:20:18:B9:49:37
inet adr:192.168.0.9

Pour le réseau 192.168.0.0

HWaddr 00:20:AF:4A:66:00
inet adr:192.168.1.1

Pour le réseau 192.168.1.0

Configuration de routage :

[root@helios root]# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Notez que cette machine n'est qu'un routeur, son unique rôle, simplifié à l'extrême, est d'interconnecter les deux réseaux 192.168.0.0 et 192.168.1.0

Aucune route par défaut n'est indiquée ici.

Tout ce que nous observons, c'est que Helios sait que :

C'est bien, mais ça ne suffit pas pour que Helios fonctionne comme un routeur. Nous avons un peu besoin d'IPtables :

iptables -A FORWARD -j ACCEPT  # c'est pas bien compliqué...

Il faut aussi s'assurer que l'on a autorisé le noyau à faire le routage :

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

Et ça va router...

saturne:~# ping -c 1 neptune
PING neptune.eme.org (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=254 time=1.2 ms

--- neptune.eme.org ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.2/1.2/1.2 ms

Si le ping passe, c'est que ça route.

Juste pour le fun :

neptune:~# ping -c 1 saturne
PING saturne.eme.org (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=254 time=1.1 ms

--- saturne.eme.org ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.1/1.1/1.1 ms

Ca marche aussi dans l'autre sens.

Snif.

On regarde tout ça avec des sniffers, l'un sur le réseau bleu et l'autre sur le réseau rouge.

saturne:~# ping -c 1 neptune

Les traces qui suivent ont été expurgées de ce qui nous est inutile ici.

Tout ce qu'il est important d'observer est surligné

Frame 1 ...
Ethernet II
    Destination: 00:20:18:b9:49:37
    Source: 00:00:e8:78:9a:1f
    Type: IP (0x0800)

Internet Protocol, Src Addr: saturne.eme.org 
                             (192.168.0.2), 
                   Dst Addr: neptune.eme.org 
                             (192.168.1.3)
    ...
    Time to live: 64
    Protocol: ICMP (0x01)
    ...
Internet Control Message Protocol
    Type: 8 (Echo (ping) request)
... 

Frame 2 ...
Ethernet II
    Destination: 00:00:e8:78:9a:1f
    Source: 00:20:18:b9:49:37
    Type: IP (0x0800)
Internet Protocol, Src Addr: neptune.eme.org 
                             (192.168.1.3), 
                   Dst Addr: saturne.eme.org 
                             (192.168.0.2)
    ...
    Time to live: 254
    Protocol: ICMP (0x01)
    ...
Internet Control Message Protocol
    Type: 0 (Echo (ping) reply)
Frame 1 ...
Ethernet II
    Destination: 00:a0:c9:e0:2b:7b
    Source: 00:20:af:4a:66:00
    Type: IP (0x0800)

Internet Protocol, Src Addr: saturne.eme.org
                             (192.168.0.2),
                   Dst Addr: neptune.eme.org
                             (192.168.1.3)
    ...
    Time to live: 63
    Protocol: ICMP (0x01)
    ...
Internet Control Message Protocol
    Type: 8 (Echo (ping) request)
...

Frame 2...
Ethernet II
    Destination: 00:20:af:4a:66:00
    Source: 00:a0:c9:e0:2b:7b
    Type: IP (0x0800)
Internet Protocol, Src Addr: neptune.eme.org
                             (192.168.1.3),
                   Dst Addr: saturne.eme.org
                             (192.168.0.2)
    ...
    Time to live: 255
    Protocol: ICMP (0x01)
    ... 
Internet Control Message Protocol
    Type: 0 (Echo (ping) reply)

Vous avez noté les points fondamentaux :

Autrement dit :

Et voilà le travail.

Un peu de philosophie

Jouons avec traceroute :

saturne:~# traceroute -I -n neptune
traceroute to neptune.eme.org (192.168.1.3), 30 hops max, 38 byte packets
1 192.168.0.9 0.824 ms 0.741 ms 0.740 ms
2 192.168.1.3 1.246 ms 0.922 ms 0.968 ms
neptune:~# traceroute -I -n saturne
traceroute to saturne.eme.org (192.168.0.2), 30 hops max, 38 byte packets
1 192.168.1.1 0.902 ms 0.705 ms 0.675 ms
2 192.168.0.2 1.108 ms 1.033 ms 1.008 ms

Bien entendu, nous passons toujours par Helios au "hop" 1, quelque soit le sens du traceroute, mais nous le voyons du côté bleu avec l'IP 192.168.0.9 et du côté rouge avec l'IP 192.168.1.1

Ca vous étonne ?


Accueil ] [ Suivante ]