original in en Guido Socher
en to fr Jean Peyratout
Guido est un adepte de Linux de longue date. Il apprécie Linux non seulement à cause de ses qualités techniques mais aussi du fait des individus et de toute la communauté qui se trouve derrière Linux.
L'accès Internet est devenu très facile depuis peu. La plupart des fournisseurs d'accès à l'Internet (FAI) ne demandent plus de redevance mensuelle ou d'abonnement de longue durée. Si un FAI a des problèmes techniques ou offre un service de mauvaise qualité, alors simplement, vous en changez. En Allemagne nous appelons cela "Internet sur simple appel" et cela va toujours plus loin. Vous ne vous enregistrez plus, vous n'avez aucxun papier à signer. Vous payez de façon simple, sur votre note de téléphone habituelle. C'est différent de l'Internet gratuit. L'Internet gratuit est souvent le fait de FAIs proches du dépôt de bilan et souvent synonyme d'une mauvaise transmission des données. Dans le cas de "Internet sur simple appel" vous devez payer, parfois assez cher, mais vous avez une bonne bande passante. Peu importent les détails dans tel ou tel pays, cet article va expliquer comment changer rapidement de FAI et utiliser différentes connexions à l'Internet à différents moments.
Le type d'accès Internet que nous couvrons dans cet article est une connexion téléphonique "point à point" (PPP) de votre PC à votre FAI. Sous Linux un programme appelé pppd est utilisé pour configurer cette connexion. pppd est un très bon logiciel, très souple, mais malheureusement la documentation jointe à pppd ne propose que des exemples assez anciens et des cas très particuliers pour l'authentification et la connexion à votre FAI. Utiliser ces exemples pour paramétrer une connexion à la plupart des FAIs modernes conduira généralement à un échec. La plupart des FAIs utilisent aujourd'hui
Avec Linux et l'IP
masquerading il est très facile de connecter non seulement un ordinateur
mais tout un réseau, via une liaison PPP vers votre FAI.
Pour faire ceci il vous faut au moins un ordinateur Linux et un nombre
quelconque d'autres machines. Cela ressemble à ce qui suit :
Si vous utilisez une passerelle Linux de ce type avec l'IP masquerading et que vous voulez utiliser plusieurs FAIs, deux problèmes se posent en général :
Tous les fichiers de configuration de pppd sont normalement placés dans /etc/ppp et en principe vous devez lancer pppd en tant que root. Durant l'installation et les premiers tests vous devrez vous logger comme utilisateur root. Je montrerai plus loin comment n'importe qui peut lancer et arrêter pppd. Il ne faut pas vous logger en tant que root. Un utilisateur root n'a que très peu de restrictions et peut facilement détruire votre configuration par erreur.
Les fichiers importants pour pppd sont :
cd /etc mv ppp ppp_old tar zxvf ppp.tar.gzAprès avoir décompressé vous verrez qu'il y a d'autres fichiers inclus dans ppp.tar.gz. Ce sont des scripts d'interface pour rendre les réglages et la configuration plus faciles. Leur fonction est expliquée plus bas. (Note: il y a des prix mentionnés dans les fichiers de configuration pour les fournisseurs utilisés comme exmples. Il y a des chances qu'ils soient erronés. Allez voir la page web du FAI pour obtenir une information actualisée précise.)
Regardons le fichier de configuration pour le FAI appelé arcor:
# This is /etc/ppp/peers/arcor
# Home page of the ISP arcor: http://www.arcor-online.de/ #---------- # serial device and modem speed (normally 38400 or 57600): /dev/modem 57600 # modem dial-out script with phone number: connect '/etc/ppp/scripts/ppp-on-dialer-pap 0192070' # specific options, common options are # read from /etc/ppp/options noipdefault # tell pppd to use this users name for PAP authentication: user arcor # try dynamic dns: usepeerdns # |
cd /dev ln -s ttyS0 modem57600 est la vitesse du modem et dépend de celui-ci. La ligne qui commence par "connect" spécifie quel script (/etc/ppp/scripts/ppp-on-dialer-pap) doit être utilisé pour conduire la communication avec votre modem via des commandes AT. Ces commandes AT font partie d'un langage de commande pour les modems basé sur du code ASCII. Le paramètre donné au script (0192070) est le numéro de téléphone à composer.
Nous avons maintenant défini le numéro de téléphone (0192070, dans cet
exemple), la vitesse du modem, le port série à utiliser et quelques options de
configuration de pppd. Je ne détaillerai pas ici les options de configuration
communes de /etc/ppp/options. Vous pouvez regarder le fichier d'exemple et
chercher les options dans les pages de man de pppd.
Nous allons plutôt composer le numéro et connecter notre FAI (arcor). Pour cela,
il nous faut encore deux choses de plus (voilà un exemple qui fonctionne pour les
lecteurs d'Allemagne) :
login name: arcor
password: internet
Cette information doit être entrée dans le fichier /etc/ppp/pap-secrets et le
nom de login va dans le fichier /etc/ppp/peers/arcor (voir plus haut).
Ajoutez une ligne ressemblant à ce qui suit dans le fichier /etc/ppp/pap-secrets:
# This is /etc/ppp/pap-secrets
# client server secret IP-addr arcor * internet 0.0.0.0 |
Et voilà. Maintenant nous pouvons tester. Pour vous connecter, tapez :
pppd call arcorarcor est, dans ce cas, le nom du fichier de configuration dans /etc/ppp/peers/
killall pppdJ'espère que cet exemple a marché pour vous. Ça doit fonctionner pour les lecteurs d'Allemagne. Dans les autres pays, il faudra bien sûr adapter le numéro de téléphone, le login et le mot de passe pour votre FAI. Si ça n'a pas marché, regardez la section en cas de problèmes à la fin de cet article.
Maintenant vous avez un FAI qui fonctionne. Pour en ajouter d'autres il vous faut faire ce qui suit :
Arrivé à ce point, vous savez vraiment comment fonctionnent les mécanismes cachés. Nous utiliserons plus tard quelques scripts pour rendre tout ça plus aisé à utiliser. Nous introduirons en particulier deux scripts Set-UID en Perl qui permettront de lancer et couper votre connexion Internet quand vous êtes loggé comme utilisateur nomal (pas utilisateur root).
Set-UID est un mécanisme qui permet à un utilisateur normal d'exécuter une commande
spécifique et cette commande agira comme si son propriétaire était celui qui l'a
exécutée. Évidemment ceci doit être fait avec discernement de façon à ne pas créer de
failles de sécurité. Les scripts Perl Set-UID sont déjà inclus dans le fichier
ppp.tar.gz que vous avez décompressé tout à l'heure. Ils doivent avoir "s" dans les
permissions de fichier et appartenir à root:
> cd /etc/ppp/scripts
> ls -al ppp-on ppp-off
-rwsr-sr-x 1 root root 1258 Jan 7 13:24 ppp-off
-rwsr-sr-x 1 root root 2619 Jan 9 20:30 ppp-on
Si ce n'est pas le cas, vous pouvez changer les permissions avec la commande
chmod 6755 ppp-off ppp-on.
Les scripts ppp-off et ppp-on ne sont que des scripts "d'emballage" (wrapper scripts).
Tout ce qu'ils font est de lancer soit pppd call fichier-de-conf soit
killall pppd.
L'avantage est que tout utilisateur peut s'en servir. Le script pp-on a aussi quelques
façons spéciales de traiter les FAIs qui n'utilisent
pas la configuration automatique du DNS. S'il vous arrive d'avoir affaire avec un FAI
de ce type, alors éditez le fichier et cherchez "static".
Voici des exemples dans lesquels vous pouvez effectuer des modifications. Vous utiliserez
ces scripts ppp-on/ppp-off comme ceci :
Pour prendre la ligne : /etc/ppp/scripts/ppp-on arcor Pour terminer la connexion Internet : /etc/ppp/scripts/ppp-offCela devrait marcher maintenant pour n'importe quel utilisateur de votre ordinateur. Ici, arcor est encore le nom d'un fichier dans /etc/ppp/peers/. Vous pouvez lui avoir donné un nom différent.
Finalement nous allons utiliser une interface graphique pour lancer et arrêter
notre connexion Internet. Un programme cgi est un programme qui génére des pages
web interactives. Un programme cgi bien conçu fonctionne avec n'importe quel
navigateur sur n'importe quel système d'exploitation. C'est pour cela que
l'on utilise un programme cgi. Il ressemblera à ceci :
$url="http://127.0.0.1/cgi-bin/pppcontrol";
Le script cgi pppcontrol lit un fichier de configuration appelé /etc/ppp/gpppwrap.conf qui suit la syntaxe suivante :
ppponarg: <agument_à_passer_à_ppp_on> - chaîne de commentaire additionnel |
# This is /etc/ppp/gpppwrap.conf ppponarg: arcor -- arcor.net 3pf/min ppponarg: talknet -- internet by call 3.5pf/minNote: les prix 3pf/min et 3.5pf/min auront sans douté évolué et seront faux lorsque vous lirez ces lignes.
C'est peut-être beaucoup d'information nouvelle à la fois pour vous mais une fois
que vous l'avez saisie et que tout fonctionne vous n'aurez besoin que d'ajouter ou
supprimer un FAI de temps à autre et ceci est vraiment facile comme vous venez de
voir ci-dessus.
Vous pouvez maintenant commodément sélectionner un FAI dans la liste sur la page
web et vous y connecter en cliquant simplement sur un bouton de cette page.
Pour installer dnrd depuis les sources vous devez :
le décompresser : tar zxvf dnrd-2.10.tar.gz cd dnrd-2.10/src/ le compiler : make l'installer : cp dnrd /usr/local/sbin/ créer le répertoire vide /etc/dnrd/ : mkdir /etc/dnrd/Le proxy DNS dnrd est utilisé comme suit (195.50.149.33 et 195.50.140.6 sont par exemple les serveurs DNS de votre FAI) :
quand le lien ppp est activé : dnrd -s 195.50.149.33 -s 195.50.140.6 quand vous terminez la connexion vous lancez : dnrddnrd est lancé dans notre exemple par les scripts /etc/ppp/ip-up et /etc/ppp/ip-down, et tout est automatique. Les scripts que vous avez téléchargés tout à l'heure sont déjà prêts pour cela et s'attendent à trouver dnrd dans le répertoire /usr/local/sbin/.
dnrd peut faire encore bien plus que ça. Il peut même faire office par lui-même
de petit serveur DNS. Sous Unix vous pouvez toujours écrire dans le fichier
/etc/host.conf la ligne
order hosts, bind
puis donner à toutes les machines de votre réseau local des noms symboliques
dans le fichier /etc/hosts . Malheureusement les stupides machines Windows de
votre réseau n'ont pas cette possibilité.
Si dnrd trouve un fichier /etc/hosts sur votre PC Linux alors il se comportera
automatiquement comme un serveur DNS pour les entrées mentionnés dans ce fichier.
Cela résoud le problème !
La syntaxe du fichier /etc/hosts est montrée ci-dessous :
# syntax:
# ip-addr hostname alias1 alias2 ... # example: 192.168.0.1 linuxpc.mynet linuxpc 192.168.0.2 peppermint.mynet peppermint |
Pour utiliser dnrd non seulement comme proxy DNS mais aussi comme serveur DNS pour les entrées du fichier /etc/hosts vous devez le lancer dès le démarrage. Pour cela il vous faut ajouter la ligne
daemon /usr/local/sbin/dnrdà la fin de la section de démarrage du script /etc/rc.d/init.d/network boot (cette syntaxe est celle de RedHat, Mandrake etc., cela peut être différent pour votre distribution).
Dans cette section j'expliquerai comment lancer le débogage pour pppd. Cela vous aidera à diagnostiquer ce qui ne va pas si ça ne fonctionne pas. Malheureusement je me suis rendu compte que ce n'était pas toujours une erreur de configuration de ma part qui était en cause quand ça ne marchait pas.
La première chose que fait pppd dans notre cas est d'ouvrir le port série (/dev/modem, un lien vers par exemple /dev/ttyS0) de façon à lancer le script /etc/ppp/scripts/ppp-on-dialer-pap. Ce script va envoyer des commandes AT au modem. Ces commandes font composer le modem pour se connecter à votre FAI. Si quelque chose tourne mal à ce niveau vous pouvez trouver les erreurs dans le fichier /etc/ppp/connect-errors. La plupart du temps les fichiers connect-errors vous donneront assez de pistes pour diagnostiquer ce qui cloche. Si ce n'était pas le cas alors vous pouvez taper les commandes AT à la main. Pour faire cela vous avez besoin d'un logiciel de communication sur la ligne série comme minicom (qui fait partie de la plupart des distributions Linux), ou de cu (qui fait en général partie d'un paquetage appelé uucp) ou encore kermit (téléchargez-le sur http://www.columbia.edu/kermit/ck70.html). Utilisez ce programme de communication sur le port série pour "parler" à votre modem. Quand vous tapez AT, le modem doit répondre "OK". Sinon, vérifiez les réglages de vitesse, le câble d'alimentation électrique, etc. Au cas où il répond OK, alors essayez la commande ATDT1234. Le modem devrait composer 1234. Sinon, vérifiez le manuel de votre modem. La commande peut aussi être ATD1234 (sans le T final) ou un autre réglage peut poser problème.
Après que le modem ait composé le numéro de votre FAI, l'étape suivante est la phase de négociation ppp (ppp-negotiation). Pour voir ce qui se passe à ce moment-là vous devez activer la fonction syslog daemon.debug dans /etc/syslog.conf. Éditez le fichier /etc/syslog.conf et ajoutez ";daemon.debug" à la ligne se terminant par /var/log/messages . Par exemple comme ceci :
*.info;mail.none;authpriv.none;daemon.debug /var/log/messagesRedémarrez ensuite syslog avec la commande
tail -f /var/log/messageset regardez ce que donne la sortie de débogage de pppd lorque vous vous connectez à votre FAI.
Une conexion ppp réussie doit donner quelque chose comme ça :
Jan 14 17:18:11 bearix pppd[721]: pppd 2.3.10 started by root, uid 0
Jan 14 17:18:34 bearix pppd[721]: Serial connection established. Jan 14 17:18:34 bearix pppd[721]: Using interface ppp0 Jan 14 17:18:34 bearix pppd[721]: Connect: ppp0 <--> /dev/modem Jan 14 17:18:35 bearix pppd[721]: sent [LCP ConfReq id=0x1 Jan 14 17:18:37 bearix pppd[721]: rcvd [LCP ConfReq id=0x46 Jan 14 17:18:37 bearix pppd[721]: sent [LCP ConfNak id=0x46 Jan 14 17:18:38 bearix pppd[721]: rcvd [LCP ConfReq id=0x47 Jan 14 17:18:38 bearix pppd[721]: sent [LCP ConfAck id=0x47 Jan 14 17:18:38 bearix pppd[721]: sent [LCP ConfReq id=0x1 Jan 14 17:18:38 bearix pppd[721]: rcvd [LCP ConfAck id=0x1 Jan 14 17:18:38 bearix pppd[721]: sent [PAP AuthReq id=0x1 user="arcor" password="internet"] Jan 14 17:18:40 bearix pppd[721]: rcvd [LCP ConfReq id=0x49 Jan 14 17:18:40 bearix pppd[721]: sent [LCP ConfReq id=0x2 Jan 14 17:18:40 bearix pppd[721]: sent [LCP ConfAck id=0x49 Jan 14 17:18:41 bearix pppd[721]: rcvd [LCP ConfAck id=0x2 Jan 14 17:18:41 bearix pppd[721]: rcvd [CHAP Challenge id=0x5 <0c7672840494152025f937ac4f5e135e>, name = "klndiinternet"] Jan 14 17:18:41 bearix pppd[721]: sent [CHAP Response id=0x5 Jan 14 17:18:41 bearix pppd[721]: rcvd [CHAP Success id=0x5 ""] Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x1 Jan 14 17:18:41 bearix pppd[721]: sent [CCP ConfReq id=0x1 Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfReq id=0x8e Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfAck id=0x8e Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfRej id=0x1 Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x2 Jan 14 17:18:41 bearix pppd[721]: rcvd [LCP ProtRej id=0xfb 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f] Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfNak id=0x2 Jan 14 17:18:41 bearix pppd[721]: sent [IPCP ConfReq id=0x3 Jan 14 17:18:41 bearix pppd[721]: rcvd [IPCP ConfAck id=0x3 Jan 14 17:18:41 bearix pppd[721]: local IP address 145.253.88.6 Jan 14 17:18:41 bearix pppd[721]: remote IP address 145.253.1.150 Jan 14 17:18:41 bearix pppd[721]: primary DNS address 145.253.2.11 Jan 14 17:18:41 bearix pppd[721]: secondary DNS address 145.253.2.75 Jan 14 17:18:41 bearix pppd[721]: Script /etc/ppp/ip-up started (pid 723) Jan 14 17:18:42 bearix pppd[721]: Script /etc/ppp/ip-up finished (pid 723), status = 0x0 |
Il est impossible de décrire tous les cas d'erreurs ici, d'abord parce que j'ignore quelle est votre configuratuion et ensuite parce qu'il y a tout simplement de trop nombreuses choses qui peuvent tourner mal. Avec un peu d'imagination et en gardant à l'esprit ce que vous avez appris dans cet article vous devriez être capable de trouver la plupart des erreurs. Si vraiment vous n'arrivez pas à un fonctionnement correct et qu'il semble qu'il n'y ait pas d'erreur de votre côté, essayez un autre FAI. Cela peut très bien être un problème chez le fournisseur d'accès.