Dans cet exemple, nous avons un cas extrêmement simple :
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.
Machine sous Debian Woody.
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
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 nœud 192.168.0.9.
Egalement sous Debian Woody.
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
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 nœud 192.168.1.1.
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
[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.
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 :
echo request
à Neptune :Et voilà le travail.
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
Ça vous étonne ?