| L | M | M | J | V | S | D |
| 28 | 29 | 30 | 31 | 1 | 2 | 3 |
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| Pas d'événements |
| Un réseau TCP/IP sur une liaison série. |
|
|
|
| Écrit par Patrick Percot | ||||||||
| 20-04-2003 | ||||||||
|
Cette utilisation d’une liaison série est particulièrement intéressante pour un système embarqué léger qui ne dispose pas de carte réseau. On peut grâce à cette configuration bénéficier d’un réseau TCP/IP entre deux machines simplement connectées par un câble série de type null modem.
La même chose est possible avec l’utilisation d’un modem. Je n’ai pas encore réalisé cet essai, mais dès que cela sera fait, les fichiers qui permettent la connexion par modem seront mis à disposition. On peut même configurer la machine qui se connecte au système embarqué pour qu’elle joue le rôle d’une passerelle, offrant ainsi à l’ensemble du réseau auquel elle est connectée la possibilité d’accéder au système embarqué. Avantages et inconvénients Avantages de la méthode :
Inconvénients de la méthode :
Pour une utilisation privée, cette technique permet aussi de mettre en réseau une machine que l’on ne souhaite pas équiper d’une carte réseau. Description de la situation : Considérons un réseau 192.168.0.0, dans lequel la machine "client" d’adresse IP 192.168.0.73 joue le rôle de poste "client", la machine "gateway" d’adresse IP 192.168.0.72 joue le rôle de passerelle vers la machine "embedded" d’adresse IP 192.168.10.71. La passerelle "gateway" aura donc une seconde adresse IP correspondant au réseau sur la liaison série, cette adresse sera 192.168.10.72.
La connexion TCP/IP par la liaison série est réalisée par le démon pppd. Pour ceux qui connaissent déjà GNU/Linux, c’est le démon qui est utilisé pour initier une connexion vers le fournisseur d’accès Internet. Ici, au lieu d’utiliser pppd en tmps que client uniquement, nous allons également paramétrer un démon serveur. Le démon pppd aura les tâches suivantes à réaliser :
Description des paramétrages à effectuer pour mettre en oeuvre la connexion.
Cette machine a la configuration la plus simple. Il s’agit en fait uniquement d’indiquer la route vers le réseau constitué par les machines "embedded" et "gateway". Ajouter (sur une distribution Debian GNU/Linux) un fichier nommé /etc/network/if-up/99route :
#!/bin/sh /sbin/route add -net 192.168.10.0 gw 192.168.0.72 netmask 255.255.255.0 exit 0
Recharger la configuration réseau en exécutant : # /etc/init.d/networking restart
Cette machine devra indiquer deux routes vers les deux sous-réseaux 192.168.0.0 et 192.168.10.0. L’ajout de la route vers le réseau principal se fait automatiquement lors de la configuration du réseau. Par contre, lors de l’établissement du réseau PPP, seule l’adresse de la machine connectée à la liaison série est ajoutée dans la tables de routage. Il faut donc créer une route vers ce sous-réseau. Ce qui sera fait en créant un fichier /etc/ppp/ip-up.d/99route qui contiendra les lignes suivantes :
#!/bin/sh IPNET=$(echo $PPP_IPPARAM | cut -d / -f 1) IPMASK=$(echo $PPP_IPPARAM | cut -d / -f 2) logger "Adding route add -net $IPNET netmask $IPMASK $PPP_IFACE" /sbin/route add -net $IPNET netmask $IPMASK $PPP_IFACE exit 0
À noter que sur une distribution Mandrake, il faudra mettre dans le fichier /etc/ppp/ip-up.local les lignes suivantes :
#!/bin/sh IPNET=$(echo $6 | cut -d / -f 1) IPMASK=$(echo $6 | cut -d / -f 2) logger route add -net $IPNET netmask $IPMASK gw $5 route add -net $IPNET netmask $IPMASK gw $5
Ce fichier doit être rendu exécutable :
# chmod a+x 99route # chmod a+x ip-up.local
Il faudra aussi lancer un démon pppd qui aura pour charge d’établir un lien avec la machine "embedded". Sur cette machine, nous allons créer un démon pppd actif, c’est-à-dire qu’il va initier la connexion avec la machine connectée par la liaison série. Le fichier de configuration de pppd est /etc/ppp/peers/seriallink :
# The three following options are for debugging #debug #dump #record pppfile asyncmap 0 nodetach local lock crtscts lcp-max-configure 30 ipcp-max-configure 30 hide-password noauth /dev/ttyS0 115200 ipparam 192.168.0.0/255.255.255.0 user useroflink
La dernière ligne "user useroflink" indique que l’authentification doit être faite en utilisant le mot de passe de l’utilisateur useroflink. Le mot de passe est stocké dans le fichier /etc/ppp/chap-secrets :
# Secrets for authentication using CHAP # client server secret IP addresses useroflink seriallink secret-for-useroflink
Le démon peut être lancé, soit :
$ pppd call seriallink
Contenu du fichier run-serial-connect :
#!/bin/sh /etc/init.d/serial-connect &
Contenu du fichier serial-connect :
#!/bin/sh # Run forever, init will send SIGTERM when changing runlevel for (( ; ; )) ; do pon seriallink > /dev/null sleep 1 done
Ne pas oublier de rendre ce fichier exécutable :
# chmod a+x /etc/init.d/run-serial-connect /etc/init.d/serial-connect
Ne pas oublier également de créer des liens vers ce fichier dans chacun des répertoires "/etc/rcX.d", avec X variant de 2 à 5.
# for i in 2 3 4 5 ; do > ln -sf /etc/init.d/run-serial-connect etc/rc${i}.d/S15run-serial-connect > done
Enfin, il faut autoriser la passerelle à forwarder les trames IP, dans le fichier /etc/network/options (pour une Debian GNU/Linux) :
ip_forward=yes spoofprotect=yes syncookies=no
Si le noyau n’a pas été compilé pour permettre l’IP Masquerading, vous pourrez être obligé de le recompiler.
Le démon pppd aura pour principales tâches de se mettre en attente d’une tentative de connexion, de valider l’authentification de la machine qui se connecte, et d’attribuer une adresse IP à la machine qui initie la connexion. Lors de l’établissement du réseau PPP, seule l’adresse de la machine connectée à la liaison série est ajoutée dans la tables de routage. Il faut donc créer une route vers ce sous-réseau. Ce qui sera fait en créant un fichier /etc/ppp/ip-up.d/99route qui contiendra les lignes suivantes :
#!/bin/sh IPNET=$(echo $PPP_IPPARAM | cut -d / -f 1) IPMASK=$(echo $PPP_IPPARAM | cut -d / -f 2) logger "Adding route add -net $IPNET netmask $IPMASK $PPP_IFACE" /sbin/route add -net $IPNET netmask $IPMASK $PPP_IFACE exit 0
À noter que sur une distribution Mandrake, il faudra mettre dans le fichier /etc/ppp/ip-up.local les lignes suivantes :
#!/bin/sh IPNET=$(echo $6 | cut -d / -f 1) IPMASK=$(echo $6 | cut -d / -f 2) logger route add -net $IPNET netmask $IPMASK gw $5 route add -net $IPNET netmask $IPMASK gw $5
Ce fichier doit être rendu exécutable :
# chmod a+x 99route
Ou :
# chmod a+x ip-up.local
Contenu du fichier /etc/ppp/peers/seriallink :
# These options are for debugging #debug #dump #record pppfile asyncmap 0 silent passive nodetach local lock crtscts lcp-max-configure 30 ipcp-max-configure 30 hide-password auth /dev/ttyS0 115200 noipdefault ipparam 192.168.10.0/255.255.255.0 192.168.10.72:192.168.10.71
Le fichier /etc/ppp/chap-secrets devra contenir les noms et mots de passe des utilisateurs autorisés à se connecter :
# Secrets for authentication using CHAP # client server secret IP addresses useroflink * secret-for-useroflink 192.168.10.71
Lancement et réactivation du démon pppd : Certaines méthodes de connexion peuvent mettre fin au démon pppd, aussi, il faut s’assurer que ce démon est réactivé dès qu’il s’arrête. On écrira donc deux petits scripts (run-serial-connect et serial-connect) que l’on copiera dans "/etc/init.d", Contenu du fichier run-serial-connect :
#!/bin/sh /etc/init.d/serial-connect &
Contenu du fichier serial-connect :
#!/bin/sh # Run forever, init will send SIGTERM when changing runlevel for (( ; ; )) ; do pon seriallink > /dev/null sleep 1 done
Ne pas oublier de rendre ce fichier exécutable :
# chmod a+x /etc/init.d/run-serial-connect /etc/init.d/serial-connect
Ne pas oublier de rendre ce fichier exécutable :
# chmod a+x /etc/init.d/run-serial-connect
On créera également un lien vers ce script sera créé dans chacun des répertoires "/etc/rcX.d", avec X variant de 2 à 5. # for i in 2 3 4 5 ; do > ln -sf /etc/init.d/run-serial-connect etc/rc${i}.d/S15run-serial-connect > done
Powered by !JoomlaComment 3.21
3.21 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved." |
||||||||
| < Précédent | Suivant > |
|---|