IP sur ligne serie | SLIP
7.3 Le probleme des reseaux IP prives
Vous vous souvenez que nous avons dit dans le chapitre 5 que((La biere virtuelle ))
utilise une adresse reseau qui est reservee uniquement aux usages internes: aucun pa- quet de ce reseau ne sera route sur l'Internet. Cela signie que les h^otes de l'entreprise ne peuvent pas parler a des machines connectees sur l'Internet, car les trames seraient discretement eliminees par le premier routeur venu.
Pour contourner ce probleme, nous allons congurer
kro
comme une sorte de rampe de lancement permettant d'acceder aux services Internet. Pour le monde exterieur, elle se presentera comme un h^ote tout a fait normal, avec une adresse IP d^ument enregistree (probablement assignee par le fournisseur de services). Pour avoir acces a l'Internet, par exemple a un serveur FTP, les utilisateurs doivent se connecter surkro
et invoquer le client FTP sur cette machine, de sorte que la connexion paraisse venir d'un h^ote valide. Pour les autres applications, il peut y avoir des solutions evitant cette connexion intermediaire. Les utilisateurs de WWW par exemple, peuvent employer ce que l'on appelle un serveur proxy surkro
, qui fera le relais des requ^etes vers les serveurs demandes.C'est une solution assez lourde, bien entendu. Mais, en plus d'avoir elimine la paperas- serie necessaire a l'enregistrement d'un reseau IP, elle apporte le benece de realiser une conguration rewall tres ecace. Les rewalls sont des h^otes dedies destines a orir des acces limites a l'Internet aux utilisateurs d'un reseau local, sans exposer ce reseau aux attaques exterieures.
Considerons que nos brasseurs se sont vu attribuer pour la session SLIP, l'adresse IP
192.168.5.74
. Tout ce que vous aurez a faire pour realiser la conguration decrite ci- dessus sera d'indiquer cette adresse dans le chier /etc/hosts, en l'appelantkro-slip
. La procedure d'etablissement du lien SLIP reste inchangee.7.4 Utilisation de
dip
Jusqu'ici, tout etait plut^ot simple. Neanmoins, vous souhaiterez sans doute automa- tiser toutes les etapes de maniere a n'avoir qu'une seule commande a taper pour que
tout se fasse tout seul. C'est le r^ole du programme dip. . La version actuelle, a l'heure ou nous ecrivons ces lignes, est 3.3.7. Il a eteenormement modie par un grand nombre de personnes, aussi il n'est plus possible de parler d'un unique programme dip. Ces dierentes variantes de developpement aboutiront heureusement un jour a une seule version denitive.
Le programme dip ore un petit langage script permettant de dialoguer avec le modem et le serveur, passer en mode SLIP et congurer les interfaces. Il est tres primitif et limite, mais susant dans la plupart des cas. Ce langage changera peut-^etre dans une future version, plus elaboree.
Pour pouvoir congurer l'interface SLIP, dip a besoin des privileges root. Il serait tentant de l'installer setuid a
root
, pour que tout utilisateur ordinaire puisse appeler un service SLIP sans qu'il soit necessaire de lui donner l'acces superutilisateur. C'est pourtant une methode extr^emement dangereuse, car congurer de mauvaises inter- faces ou routes par defaut avec dip peut paralyser completement votre reseau. Pis, cela autoriserait n'importe quel utilisateur a telephoner n'importe ou, entre autres choses. Aussi, si vous avez vraiment besoin d'autoriser un utilisateur a initialiser lui-m^eme des liaisons SLIP, la meilleure solution est d'ecrire un petit programme frontal pour chaque serveur a connecter, qui lui seul realisera l'appel a dip en tant queroot
avec les scripts adaptes a chaque cas, en toute securite.47.4.1 Exemple de script
Supposons que l'h^ote avec lequel nous voulons realiser notre connexion SLIP soit
gogoslip
, et que nous ayons deja ecrit un script appele gogoslip.dip. Nous appellerons dipde cette facon:# dip gogo.dip
DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93) Written by Fred N. van Kempen, MicroWalt Corporation. connected to gogoslip.mou.com with addr 192.168.5.74 #
Le script correspondant est presente dans la gure 7.1.
Apres s'^etre connecte a
gogoslip
et avoir mis SLIP en service, dip va se detacher du terminal et se mettre en arriere-plan. Vous pouvez alors commencer a utiliser les services reseaux habituels par la liaison SLIP. Pour terminer la session, invoquez simplementdip
avec l'option-k. Cela enverra simplement un signal HUP au processusindique dans /etc/dip.pid, que dip a cree au demarrage.
# dip -k
3:dipsignieDialup IP, son auteur est Fred van Kempen.
# Exemple de script dip pour appeler gogoslip # Set local and remote name and address # Initialise les adresses locale et distante get $local kro-slip
get $remote gogoslip
port cua3 # choix du port serie speed 38400 # choix de la vitesse modem HAYES # type de modem
reset # remise a zero du modem et du tty flush # nettoie le tampon de reception modem # Preparation de l'appel
send ATQ0V1E1X1\r wait OK 2
if $errlvl != 0 goto error dial 41988
if $errlvl != 0 goto error wait CONNECT 60
if $errlvl != 0 goto error # Voila, nous sommes connectes sleep 3
send \r\n\r\n wait ogin: 10
if $errlvl != 0 goto error send Skro\n
wait ssword: 5
if $errlvl != 0 goto error send salut\n
wait running 30
if $errlvl != 0 goto error
# Nous sommes sur le systeme distant, qui lance SLIP. print Connecte a $remote avec l'adresse $rmtip
default # Positionne ce lien comme route par defaut mode SLIP # Et nous passons aussi en mode SLIP. # Les erreurs arrivent ici:
error:
print La connexion SLIP avec $remote a echoue.
Dans le langage de script de dip, les mots cles prexes par le symbole dollar ($) denotent les noms de variables. Le programme conna^t un certain nombre de va- riables predenies, que nous allons detailler plus loin; $remote et $local, par exemple, contiennent les noms des deux machines, respectivement distante et locale, de la liai- son point-a-point.
Les deux premieres instructions du script sont des commandes get, qui est la methode par laquelle dip initialise une variable. Ici, la machine locale est
kro-slip
et la machine distantegogoslip
.Les cinq instructions suivantes initialisent le terminal et le modem: reset envoie une commande de remise a zero du modem; pour les modems compatibles Hayes, il s'agit de ATZ. La ligne suivante elimine le cas echeant tous les caracteres deja recus par le modem an que le dialogue avec le serveur puisse s'etablir proprement. Cette sequence de dialogue est tres simple: elle appelle le numero 41988, le numero de telephone de
gogoslip
, et se connecte sous le compte utilisateur Skro avec le mot de passe salut. La commande wait indique a dip d'attendre la cha^ne de caracteres donnee comme premier argument pendant le nombre de secondes indique dans le second. La condition if imbriquee dans la procedure teste qu'aucune erreur ne s'est produite pendant l'execution de la commande.Les dernieres commandes executees sont default, qui assigne la route par defaut a la liaison SLIP, et mode, qui valide le mode SLIP sur la ligne serie et congure l'interface et la table de routage pour vous.
7.4.2 Manuel de reference de dip
Bien que tres utilise, dip n'est pas encore tres bien documente. Nous allons malgre tout vous donner un resume des principales commandes. Vous pourrez avoir un apercu de la fonction de chacune d'elles en appelant dip en mode test et en tapant la commande help. Pour trouver la syntaxe d'une commande, vous pouvez l'entrer sans arguments; bien s^ur, cela ne marche pas pour celles qui ne prennent pas d'argument.
$ dip -t
DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93) Written by Fred N. van Kempen, MicroWalt Corporation. DIP> help
DIP knows about the following commands: databits default dial echo flush
get goto help if init
mode modem parity print port reset send sleep speed stopbits term wait
DIP> echo
Usage: echo on|off DIP> _
Tout au long de la section suivante, les exemples qui achent l'invite DIP> mon-
trent comment entrer une commande en mode test et ce qu'elle ache a l'ecran. Les exemples depourvus de cette invite doivent ^etre consideres comme des extraits de scripts.