Considérons deux réseaux LAN qui doivent communiquer entre eux. Deux machines (une dans chaque LAN) jouent le rôle de relai. En l'occurence, elles sont connectées par une ligne série permanente (voir la figure 9).
La machine X a pour adresse IP (dans LAN 1): 192.168.1.1. Cette machine est une passerelle vers l'internet. Le port Ethernet de la machine B est simplement configuré avec une adresse IP 192.168.1.2 et la passerelle par défaut (pour pouvoir sortir vers l'internet via X) est 192.168.1.1. Observez que l'adresse de broadcast est 192.168.1.63 (les 6 derniers bits valent 1).
Le port Ethernet de la machine C (LAN 2) est configuré avec une adresse IP égale à 192.168.1.129. Aucune passerelle par défaut ne devrait être déclarée avant que la connexion série ne soit configurée.
Nous devons établir le réseau entre B et le sous-réseau 192.168.1.128/26
via la machine C. Il s'agit d'un sous-réseau en soi, même
s'il n'y a que deux machines interconnectées. Nous allons attribuer
les adresses 192.168.1.252 à la machine
B et 192.168.1.253 à la machine
C pour ce qui concerne les ports se faisant face. Ceci constitue
un exemple réel avec un lien série non fiable. Sont requis, pppd
[NdT: le démon pppd est associé au Point-to-Point
Protocol qui fournit une méthode de transmission des datagrammes
via des liens séries en mode point-à-point. Voir pppd(8).] pour conserver le lien actif et, un script shell pour redémarrer
le lien s'il disparaissait. Le script sur la machine B sera:
#/!bin/sh
while true;do pppd lock local mru 296 mtu 296 nodetach nocrtscts nocdtrcts \ 192.168.1.252:192.168.1.253 /dev/ttyS0 115200 noauth \ lcp-echo-interval 1 lcp-echo-failure 2 lcp-max-terminate 1 lcp-restart 1 done |
/sbin/ifconfig eth1 192.168.1.252 broadcast 192.168.1.255 netmask 255.255.255.192
|
Le routage sur la machine B est réalisé avec le script suivant,
pourvu que le lien soit activé. Le script doit être exécuté chaque
fois que pppd vient de négocier la connexion
et il peut donc être placé dans le fichier /etc/pppd/ip-up.
Ce script sera exécuté par pppd automatiquement
dès que l'interface ppp0 est disponible:
/sbin/route del default
/sbin/route add -net 192.168.1.192 netmask 255.255.255.192 dev ppp0 /sbin/route add -net 192.168.1.128 netmask 255.255.255.192 gw 192.168.1.253 /sbin/route add default gw 192.168.1.1 echo 1 > /proc/sys/ipv4/ip_forward |
Kernel IP routing table | |||||||
Destination
192.168.1.2 192.168.1.253 192.168.1.0 192.168.1.192 192.168.1.128 127.0.0.0 0.0.0.0 |
Gateway
0.0.0.0 Gateway 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 192.168.1.253 0.0.0.0 192.168.1.1 |
Genmask
255.255.255.255 Genmask 255.255.255.255 255.255.255.255 255.255.255.192 255.255.255.192 255.255.255.192 255.0.0.0 0.0.0.0 |
Flags
UH Flags UH UH U U UG U UG |
Metric
0 Metric 0 0 0 0 0 0 0 |
Ref
0 Ref 0 0 0 0 0 0 0 |
Use
0 Use 0 0 0 0 0 0 0 |
Iface
eth0 Iface eth0 ppp0 eth0 ppp0 ppp0 lo eth0 |
eth0 Link encap:Ethernet HWaddr 00:A0:24:75:3B:69 inet addr:192.168.1.2 Bcast:192.168.1.63 Mask:255.255.255.192 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.1.252 P-t-P:192.168.1.253 Mask:255.255.255.255 |
#/!bin/sh
while true; do pppd lock local mru 296 mtu 296 nodetach nocrtscts nocdtrcts \ 192.168.1.253:192.168.1.252 /dev/ttyS0 115200 noauth \ lcp-echo-interval 1 lcp-echo-failure 2 lcp-max-terminate 1 lcp-restart 1 done |
/sbin/route del default
/sbin/route add -net 192.168.1.192 netmask 255.255.255.192 dev ppp0 /sbin/route add default gw 192.168.1.252 echo 1 > /proc/sys/net/ipv4/ip_forward |
Kernel IP routing table | |||||||
Destination
192.168.1.129 192.168.1.252 192.168.1.192 192.168.1.128 127.0.0.0 0.0.0.0 |
Gateway
0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 192.168.1.252 |
Genmask
255.255.255.255 255.255.255.255 255.255.255.192 255.255.255.192 255.255.255.0 0.0.0.0 |
Flags
UH UH U U U UG |
Metric
0 0 0 0 0 0 |
Ref
0 0 0 0 0 0 |
Use
0 0 0 0 0 0 |
Iface
eth0 ppp0 ppp0 eth0 lo ppp0 |
eth0 Link encap:Ethernet HWaddr 00:A0:CC:D5:D8:A7 inet addr:192.168.1.129 Bcast:192.168.1.191 Mask:255.255.255.192 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.1.253 P-t-P:192.168.1.252 Mask:255.255.255.255 |
Kernel IP routing table | |||||||
Destination
192.168.1.0 192.168.1.128 127.0.0 0.0.0.0 |
Gateway
0.0.0.0 102.168.1.2 0.0.0.0 192.168.1.1 |
Genmask
255.255.255.192 255.255.255.192 255.255.0.0 0.0.0.0 |
Flags
U UG U UG |
Metric
0 0 0 0 |
Ref
0 0 0 0 |
Use
0 0 0 0 |
Iface
eth0 eth0 lo eth0 |
La configuration qui précède permet aux machines d'envoyer correctement les paquets entre les machines A et D mais également sur l'internet. Un avertissement toutefois: parfois la commande ping (voir la sous-section 26.10.1) ne fonctionne pas alors que telnet est opérationnel. Ceci peut être une particularité de certaines versions du noyau que nous utilisons, **shrug** [sic].