en pratique
Sommaire
Bon, on ne va pas encore repeter qu' Internet est tres populaire et patati et patata mais quand meme, Internet est tres populaire et vous avez du deja entendre dire que Linux etait tres a l'aise dans le domaine des reseaux et donc du tres populaire Internet. Si Linux est extremement puissant pour creer des serveurs Ftp, web ou ce que vous voulez, c'est aussi un tres bon client avec tous les outils necessaires. En general, les particuliers se connectent a Internet a l'aide d'un modem (il faut quand meme l'ordinateur autour ou a cote !). Il existe deux protocoles qui permettent de connecter un machine sur Internet en utilisant un modem. Le premier, le plus ancien et de moins en moins utilise est le SLIP mais la plupart des fournisseurs utilisent le plus recent et plus puissant PPP : le Point to Point Protocol. Nous allons voir comment configurer le systeme pour acceder a un serveur via PPP puis comment lancer le daemon PPP, pppd.
Nous ne voulons pas creer un serveur PPP mais sachez que les outils que l'on utilise sont a peu pres les memes que pour etablir une connection en tant que client. La plupart des fournisseurs Internet proposent une liaison directe par PPP. Les plus importants imposent parfois une passerelle (logiciel qui va etablir la connection par un autre protocole) et d'autres utilisent le SLIP ou le CSLIP, les informations qui suivent ne s'appliquent pas a ces fournisseurs bien entendu. Pour donner un exemple, Club Internet est un fournisseur assez important et propose une liaison PPP. Voici les informations que vous devrez posseder sur le serveur :
Il n'y a pas de probleme pour le numero de telephone a priori !
Le Domain Name Server (DNS) est une suite de quatre numero separes par des points du genre :
123.43.173.32
Chaque serveur present sur Internet comporte un numero DNS unique, il doit
vous etre donne par le fournisseur (en general, c'est dans la documentation).
Le serveur de mail porte souvent le nom "mail " mais certains fournisseurs peuvent en utiliser plusieurs. C'est un peu la meme chose pour les news, avec le nom "news". Ces deux donnees ne sont pas primordiales pour configurer le PPP mais vous devrez les utiliser pour configurer les clients genre Mosaic, mail ou Netscape.
Pour l'adresse IP du serveur, deux cas se presentent :
1) Le serveur a un numero d'IP fixe, genre 121.34.123.12
2) Le serveur attribue un numero d'IP different a chaque connection, on
parle d'attribution dynamique.
En general, si le serveur attribue un numero d'IP different a chaque fois, la documentation indique 0.0.0.0 comme numero d'IP, souvenez-vous en. La plupart des fournisseurs utilisent la deuxieme solution.
Le domain name suffix correspond a la partie qui suit le @ dans les adresses personnelles Internet. Par exemple, mon adressse email est peschans@ie2.u-psud.fr, le domain name suffix est alors ie2.u-psud.fr. Ne confondez pas DNS et le suffix, ce sont des choses differentes avec les memes initiales !
En guise d'exemple, supposons que nous voulions nous connecter a deux serveurs, leurs donnees sont :
Premier Serveur : Robi
Deuxieme Serveur : Piano
La premiere chose que nous allons faire est de configurer le systeme pour pouvoir acceder a nos serveur robi et piano via PPP.
Pour utiliser le PPP, vous devez tout d'abord activer la partie du noyau qui permet de gerer ce protocol. Pour se faire, vous devez recompiler le noyau repondre par y a la question concernant l'utilisation du PPP.
Le daemon pppd et le programme chat sont necessaires pour etablir une connection PPP. Ils sont soit fournis sous forme d'un package (slackware par exemple), soit integres en standard mais vous pouvez aussi les trouver un peu partout. La version couramment utilisee est la version 1.0.1 pour Linux basee sur la version ppp-2.1.2 des outils standards. Les programmes pppd et chat doivent se trouver dans /usr/bin, s'ils sont ailleurs, copiez-les ou faites des liens.
La loopback interface doit etre configuree pour tout ce qui touche au reseau sur Linux, c'est en fait une fausse interface en local qui est indispensable pour echanger des donnees. Elle porte le numero d'IP unique de 127.0.0.1 (qui est un numero forcement reserve).
Sa configuration se trouve dans le fichier /etc/rc.d/rc.inet1 pour la plupart des systemes Linux mais vous pouvez aussi la trouver dans /etc/rc.net ou /etc/rc.d/rc.net ou encore /etc/rc.d/rc.net1 ou 2 (ouf !). Si vous avez une installation Slackware, c'est la premiere solution mais je ne sais pas si c'est l'endroit preconise par le Linux File Systeme Standard (qui donne la place de tous les fichiers des distributions Linux pour une distribution standard, ce qui n'est pas le cas de la Slackware 3.0). Dans ce fichier, vous devez trouver les lignes suivantes :
ou
$CONFIG lo 127.0.0.1 $ROUTE add -net 127.0.0.1Si vous ne trouvez pas ces lignes ou si elles sont commentees, tapez-les ou decommentez-les. Il est preferable d'utiliser les deux premieres lignes qui ne reposent pas sur des variable du script. Vous avez desormais un loopback interface bien configuree, facile non ?
Le fichier /etc/hosts permet d'associer des numeros d'IP avec des noms de machine. Pour la loopback interface, vous devez trouver dans ce fichier la ligne suivante :
127.0.0.1 loopback localhostVous trouverez aussi peut-etre une ligne correspondant a votre propre machine, ne la modifiez pas mais si le serveur PPP sur lequel vous devez vous connecter fournit une adresse IP fixe a chaque connection, il faut rajouter la ligne correspondante. Par exemple, notre serveur Piano attribue tout le temps l'adresse IP 113.23.95.15 a la connection, on rajoutera la ligne suivante dans /etc/hosts :
113.23.95.15 piano.orgOn ne rajoute pas de ligne pour robi, cela ne sert a rien. Sur les petits systemes, l'utilisation de ce fichier permet d'eviter de charger le daemon named qui est indispensable pour les gros reseaux avec de nombreuses adresses IP differentes, la qualite du reseau en depend.
Le resolver permet d'associer des numeros de DNS avec des noms de domaine. Le fichier /etc/resolv.conf permet de le configurer, il faudra placer les lignes suivantes :
domain robi.net nameserver 123.43.173.32 domain piano.org nameserver 123.41.171.14Comme vous pouvez le constater, on y place les noms de domain et les numero de DNS, le resolver fera l'association lors de la connection.
Ca y est, on en a termine avec la configuration du systeme pour les reseaux, faites un petit reboot pour que la configuration soit etablie et tentons une connection.
Le daemon pppd va permettre la liaison bas-niveau entre le serveur PPP et le noyau de Linux avec le module PPP que vous devez avoir active. chat permet de communiquer avec le modem et s'utilise comme argument dans pppd.
Nous allons tout d'abord essayer de nous connecter au serveur robi, qui rappelons-le, utilise une attribution dynamique des adresses IP, voici un exemple d'utilisation de pppd pour la connection a robi :
Ouf ! C'est un peu long mais voici l'explication de cette commande. Le premier parametre, connect permet d'indiquer la commande qui va etre utilisee pour etablir la connection. Ici, nous utilisons le programme chat avec plusieurs arguments. La commande qui suit le parametre connect doit etre entre apostrophes. l'option -v de chat active le mode de debugage (on l'utilise meme si on ne veut pas debugger, cela permet de recuperer des informations sur la connection avec le daemon syslogd). Nous envoyons ensuite une chaine vide "" au modem puis ATDT (composer un numero) suivi du numero, l'attente de CONNECT (mot envoye par le serveur) puis une autre chaine vide et enfin les informations ogin: pesch word: bill. Vous avez reconnu les noms de login et le password, chat va chercher les mots ogin: et word: et place les bonnes valeurs. Le reste de la commande pppd se compose de l'adresse du port modem (/dev/cua1 pour com2 par exemple), la vitesse de transmission, l'option -detach qui empeche de faire passer pppd en tache de fond (ce qui permet de le killer avec control-C), le mot-cle debug souvent utilise, crtscts qui est un parametre du modem, le mot-cle modem obligatoire, defaultroute aussi pour connecter la loopback interface et noipdefault pour indiquer que le serveur va attribuer un numero d'IP dynamique. la ligne 0.0.0.0: indique que le serveur local (client du PPP) a pour adresse IP 0.0.0.0, ce qui est faux mais les clients TCP/IP (netscape, mail, etc...) doivent disposer d'un numero d'IP local, on peut le prendre au hasard. le : n'est suivi par aucun numero d'IP parce que l'attribution de l'IP serveur est dynamique.
Si vous avez bien tout compris, vous comprendrez la syntaxe de la connection pour le serveur piano :
pppd connect 'chat -v "" ATDT 76543210 CONNECT "" ogin: pesch word: gates' /dev/cua1 19200 -detach debug crtscts modem defaultroute 0.0.0.0:113.23.95.15On a rajoute l'adresse IP du serveur et enleve le parametre noipdefault, ainsi que les login password et numero de telephone forcement.
Pour savoir si l'on est connecte, il faut d'abord voir le voyant du modem allume (sans blague) mais on peut tout de suite faire un test avec un client toujours installe par defaut (outil UNIX standard) : ftp qui ne necessite pas de configuration. Tapez ftp et tentez une connection ftp avec par exemple open ftp.ibp.fr pour aller sur le meilleur site ftp francais !
Il n'existe pas de moyen tres propre pour se deconnecter, soit vous eteignez le modem, soit vous killez le processus de pppd actif mais on peut ruser en envoyant par exemple la commande suivante :
pppd connect 'chat "" ATZ ATH0 ""' /dev/cua1 19200Ce qui devrait killer proprement pppd car un seul daemon pppd ne peut etre present pour une interface donnee (ici /dev/cua1), et pppd se kill automatiquement lorsque le modem est "au repos" mais le kill -9 xxxx ou xxxx est le Process ID de pppd marche tres bien.
Nous savons maintenant nous connecter, nous deconnecter mais il existe un probleme : la securite. La securite est un probleme present a la fois sur le serveur et sur le client du noeud PPP. La securite du serveur concerne l'authentification qui peut etre piegee, on utilise alors des mecanismes d'attribution de password assez sophistiques avec des serveurs PAP ou CHAP, peu de fournisseurs y font appel donc pas de probleme a priori, mais demandez a pouvoir changer de password de temps en temps. Pour le client, le seul gros probleme est que lorsque vous lancez le processus pppd, les parametres de la commande sont visibles par tous les utilisateurs donc votre password en particulier (votre password PPP, pas Linux !). Il est tres facile de resoudre ce probleme en utilisant l'option -f de chat qui permet de lire les parametres de la commande dans un fichier. Ainsi vous tapez les parametres habituels pour pppd mais pour chat, vous precisez juste chat -v -f nom_du_fichier. Et vous placez dans le fichier nom_du_fichier les parametres de la commande chat, le tour est joue. Si vous etes seuls a utiliser votre PC, faites comme bon vous semble !
C'est bien de se connecter sur Internet via PPP mais avouez que les commandes sont un peu lourdes et que, de plus, il n'est pas tres marrant de devoir regarder le temps d'execution de pppd pour savoir depuis combien de temps on est connecte, c'est pour cela et aussi parce que je voulais m'initier au Tcl/Tk que j'ai cree le programme tkppp qui permet une liaison facile a un ou plusieurs serveurs PPP.
Dans une session root, copiez le fichier tkppp.tgz ou tkppp-x.xx.tar.gz (avec x.xx numero de version) dans votre repertoire root. Le programme va creer le sous-repertoire tkppp/ et y placer les fichiers composant le package tkppp, a savoir :
Pour utiliser tkppp, vous devez disposer d'un systeme Linux avec le Tcl/Tk correctement installe, etc...
Vous devez aussi avoir installe le package PPP avec pppd et chat presents dans le repertoire /usr/bin
L'utilisation de tkppp est vraiment simple, le programme lui-meme etant tres basique, un simple front end au daemon pppd. Pour lancer tkppp, il faut que vous soyez dans une session root et que votre serveur X soit lance. Il est vivement deconseille de lancer le serveur X avec votre compte root, voici mon conseil :
demarrer une session utilisateur normale puis lancez le serveur X (avec startx ou ne faites rien si vous etes sous Xdm) et ouvrez un xterm. Tapez la commande suivante dans le xterm :
Entrez ensuite votre password de root et vous voila pret !
Pour lancez tkppp, il faut ensuite taper tkppp, tout simplement. Le programme se place tout seul en tache de fond, vous allez tout de suite recuperer la main et vous verrez apparaitre une fenetre avec trois boutons : connect, configure et quit.
Pour l'instant, tkppp ne connait rien sur les serveurs auxquels vous voulez vous connectez. Il faut creer des scripts tkppp, lancez le programme et selectionnez le bouton configure. Une nouvelle fenetre apparait avec une liste de noms de scripts (extension .pppscript) a gauche et quatre boutons a droite : Create Script, Configure Script, Delete Script et Close. Selectionnez le bouton Create Script, vous verrez alors une nouvelle fenetre apparaitre, l'affichage ressemblera alors a peu pres a cela :

La fenetre qui nous interesse est situee en bas a droite. En fait, vous verrez d'autres parametres dans les zones de saisie de la boite de dialogue. Le premier parametre est name et correspond au nom du serveur (choisissez le nom que vous voulez), ce sera aussi le prefixe du nom du fichier correspondant. Par exemple, nous allons entrer robi dans la zone de saisie correspondant. Vient ensuite le numero de telephone, phone sans commentaire et les numeros d'IP destination et source, il y a d'ailleurs une inversion dans les noms des champs sur la reproduction precedente mais c'est maintenant corrige. A droite nous trouvons le nom de login et le password, puis le nom de l'interface du modem, la vitesse desiree et trois parametres selectionnables par boutons : debug, noipdefault et crtscts. Selectionnez tous les champs comme vous le desirez et selectionnez le bouton OK, CANCEL si vous changez d'avis, DEFAULT remet les parametres par defaut.
Une fois que vous etes avez clicke sur OK, le nom robi.pppscript apparait dans la liste des scripts, vous pouvez effacer exemple.pppscript avec le bouton Delete Script. Pour selectionner un script courant, il faut double-clicker sur le nom correspondant. Revenez ensuite dans la fenetre principale de tkppp (selectionnez CLOSE), vous etes pres a etablir une connection.
Pour selectionner un script, comme nous l'avons vu ci-dessus, utilisez le bouton CONFIGURE et double-clickez sur le nom du script desire. Selectionnez ensuite CLOSE et le nom du script (prefixe) doit maintenant etre present en dessous de l'horloge. Si vous voyez "No Script", c'est qu'aucun script n'est selectionne, vous ne pourrez pas vous connecter. Pour demarrer une connection, selectionnez le bouton Connect, il sera change en Deconnect et l'horloge va demarrer. A ce propos, l'horloge n'indique pas le temps de connection mais le temps d'execution de pppd, ce qui est pratiquement la meme chose. Pour vous deconnecter, selectionnez deconnect, le bouton reprendra alors sa forme initiale :"connect". Le bouton Quit vous permet de quitter, l'auriez-vous devine ?
Par defaut, tkppp charge le fichier pppscript.default s'il est present. Pour specifier un script par defaut, faites juste une copie de votre script en lui donnant le nom de pppscript.default. Attention, gardez le script original, vous pourriez en avoir besoin pour changer la configuration.
Pour etablir une connection, tkppp lance le daemon pppd avec toutes les options donnees dans le script tkppp et lance chat avec l'option -f, tkppp est donc assez sur au niveau local, les infos de login ou de password n'apparaissent pas dans les statuts de process.
Pour la deconnexion, on relance pppd mais avec une sequence de fin pour le modem, cela va interrompre la transmission et pppd va se killer automatiquement puisque le modem est inactif (pppd ne marche que si l'interface fonctionne).
Voila, vous savez a peu pres tout ce qu'il faut savoir pour etablir une liaison PPP simple. Mais ce n'est qu'un debut car certaines liaisons necessites des systemes d'authentification sophistiques, la creation d'un serveur est aussi un petit peu plus complique mais dans l'ensemble, nous avons un bon apercu de la question.