Avant de rentrer dans le vif du sujet
Les informations ci dessous permettent (je suis d'un naturel optimiste) de configurer une connexion adsl (protocole pptp, pour pppoe voir
gegeweb)
sous Linux grâce à un abonnement netissimo de France Telecom.
Vous y trouverez aussi des scripts de lancement, de reconnexion automatique en cas de coupure et d'update automatique
d'un nom de domaine dynamique chez www.dyndns.org grâce au client
ipcheckip.py (voir plus bas)
Ces scripts de connexion-reconnexion ont été adaptés pour pppoa et les modems alcatel usb avec
les drivers de Benoit Papillaut, voir § à la fin de cette page.
Vous avez donc:
-
un ordinateur qui tourne sous Linux, noyau 2.2.* (merci à Raphaël Bouaziz qui m'a informé que le noyau 2.0.* fonctionnait aussi
parfaitement bien) compilé avec ppp activé (dans le noyau ou sous forme de module). Au 9/9/2001, j'ai fait des tests sous 2.4.4, cela
fonctionne aussi, sous réserve de patcher pptp, voir plus loin.
Si vous vous posez déjà des questions, une petite formation Linux est sans doute à envisager! Entrez la commande:
grep CONFIG_PPP /usr/src/linux/.config
|
si la réponse est`y' ou `m', ça devrait aller,
voir le Kernel-HOWTO, ou
la version française du Kernel-HOWTO pour
plus d'informations ou encore kernelconfig.free.fr qui est pratique et en français!
Alternativement, vous pouvez entrer les commmandes suivantes si vous n'avez pas les sources du noyau sur votre machine:
find /lib/modules -name "ppp.o"
dmesg | grep PPP
|
Vous pouvez considérez que si l'une ou l'autre de ces commandes vous renvoie "du texte", c'est que PPP est présent dans le noyau.
-
une carte ethernet disponible et installée dans le dit ordinateur (cela s'achète chez un Taiwanais ou ailleurs,
n'achetez pas du bas de gamme, ça ne coûte pas
très cher et ça évite bien des problèmes. Vous devez disposer d'un noyau qui gère cette carte, pour plus d'info,
voir Ethernet-HOWTO, ou
l'Ethernet-HOWTO en français.
-
pris rendez vous avec France Telecom au 10 14 qui vous a installé un filtre, un modem Alcatel
(si c'est un ECI, vous n'êtes pas sur la bonne page, il faut vous renseigner sur les connexions PPOE,
allez par exemple sur http://perso.club-internet.fr/oje/adslpage
ou encore chez l'excellent gegeweb)
-
une ligne adsl opérationnelle testée par le technicien de France Telecom qui a effectué l'installation
-
pris un abonnement ADSL chez un Fournisseur d'Accès à Internet (liste des fournisseurs disponible
chez insomnews)
qui vous a donné les informations suivantes:
- nom d'utilisateur
- mot de passe utilisateur
- adresse des serveurs de nom (DNS)
- adresse email
- mot de passe email
- nom des serveurs de mail (en général pop et smtp)
Si vous vous abonnez par téléphone et que votre correspondant ne sait pas vous donner les noms de DNS
et/ou mail, vous trouverez tout ça à insomnews
Avec tout ça on passe à l'installation
Installation du client pptp
Vous avez besoin du client pptp que vous pouvez téléchargez ici: pptp.tar.gz
(clique droit, enregistrez sous si vous faites ça depuis
Windows et Internet Explorer, il faut bien survivre!!)
Pour l'installer, vous allez bien être obligés de quitter Windows et de vous connecter
root sur votre machine...
Dans un terminal, placez vous dans le répertoire où vous avez mis le fichier pptp.tar.gz
et lancez la commande:
Vous avez maintenant un répertoire pptp .
Si vous avez un noyau 2.4, télécharger inet_addr.c et pptp_callmgr.c et
remplacez les fichiers d'origine du répertoire pptp par ceux-ci.
Exécutez:
si tout s'est bien passé vous disposez d'un exécutable pptp. Copiez le fichiez pptp dans le répertoire /usr/sbin:
Installation de ppp
Vous avez besoin de ppp généralement disponible dans toute distribution ou chez
ftp://cs.anu.edu.au/pub/software/ppp/. Si vous l'installez "à la main,
procédure analogue à pptp (après avoir récupéré l'archive ppp-2.3.11.tar.gz
à l'adresse ci dessus):
tar -zxf ppp-2.3.11
cd ppp
./configure
make all install
|
Configuration de ppp
Les fichiers de configuration se trouvent dans /etc/ppp,
/etc/ppp/options et /etc/ppp/pap-secrets .
Si vous avez déjà utilisé ppp (pour une connexion internet par modem par exemple) ces fichiers peuvent déjà exister.
Dans /etc/ppp/options, vous devez avoir au minimum les lignes suivantes:
name "nom_utilisateur"
noauth
defaultroute
noipdefault
lcp-echo-interval 120
lcp-echo-failure 3
nodetach
|
nom_utilisateur est celui qui vous a été fourni par votre FAI.
Vous pouvez rajouter debug pour localiser
d'éventuels problèmes.
nauth permet de ne pas demander d'authentification à la machine distante sur laquelle vous vous connectez.
noipdefault permet à votre FAI de vous attribuer une adresse IP
(peut-être modifié si vous avez un IP fixe, veinard!).
lcp-echo-interval donne en secondes un intervalle d'envois d'échos sur la machine distante.
lcp-echo-failure donne le nombre successif d'échos sans réponse qui déclenche
un arrêt de ppp (utile pour
détecter un dysfonctionnement du réseau). J'ai choisi 2 minutes entre 2 échos et l'arrêt de ppp si 3
échos successifs sont restés sans réponses. Vous pouvez ne pas
utiliser ces paramètres si vous n'avez pas besoin d'automatiser les reconnexions. Ces deux paramètres,
en conjonction avec les scripts checkip
et uddns (voir plus loin) devraient permettre d'avoir des reconnexions avec des "trous" de taille minimale.
nodetach permet à ppp de ne pas être un process
détaché et permet de garder un log de ses messages (dans /var/log/adsl dans les scripts adsl ,
checkip et ddns ). Enlevez
cette options si vous ne souhaitez pas utiliser les infos émanant de ppp .
Dans /etc/ppp/pap-secrets , vous devez rajoutez votre nom d'utilsateur et votre mot de passe sous la forme:
"nom_utilisateur" * "mot_de_passe"
|
Vérifiez bien que ce fichier n'est lisible que de root:
chmod go-rwx /etc/ppp/pap-secrets
|
Installation du réseau
Si vous n'avez qu'une seule carte réseau (celle où est connectée le modem), elle s'appelle
eth0 , sinon voyez dans /var/log/boot.msg
comment elle s'appelle (eth0, eth1, eth2, ...). Si ce fichier n'est pas présent, vous pouvez tenter un
dmesg | eth . Le résultat devrait vous dire qui est qui à moins que vous n'ayez plusieurs cartes du même modèle,
auquel cas il faudra les tester une par une (avec ping par exemple, voir plus bas).
Configurez l'adresse IP de cette carte en 10.0.0.1 en utilisant la procédure de votre distribution, soit en rajoutant:
à votre script d'initialisation si eth0 est le nom de votre carte réseau.
Il n'est pas nécessaire de configurer de masque de
sous-réseau ni de passerelle par défaut, en fait il ne faut pas de passerelle par défaut.
ATTENTION: il est essentiel de ne pas configurer votre carte réseau en full duplex. Par exemple avec une
carte 3com 3C595 , le paramètre à ajouter à /etc/modules.conf
(si vous utilisez un chargement du pilote par module)
ou au paramétrage du noyau (si votre driver y est compilé) est full_duplex=0 .
Reportez vous à la doc de votre carte réseau et au module correspondant. sous Linux.
Remarque: le fichier modules.conf sous SuSe s'appelle
conf.modules chez Red Hat ou Slackware.
Si vous avez un réseau local (et donc deux cartes Ethernet), je vous conseille de lui attribuer un autre
sous réseau (par exemple 192.168.1.*) afin de clarifier les
choses si vous utiliser samba par exemple. De toutes façons, vous allez bien être connecté à
deux réseaux: votre "gentil" réseau interne et le grand
méchant Internet...
Il est indispensable que la carte réseau attachée au modem ait un IP de la forme 10.0.0.*, car
l'adresse du modem est configurée de manière interne à 10.0.0.138.
Pour vérifier l'état de votre réseau et du modem, lancez:
ping 10.0.0.1 # Pour tester la carte Ethernet
ping 10.0.0.138 # Pour tester le modem.
|
S'ils ne répondent pas, il va falloir revoir votre configuration réseau.
Configurez ensuite les adresses des serveurs de nom. Faites le soit par la procédure
de votre distribution en y indiquant les adresses des serveurs de noms (DNS)
communiqués par votre FAI, ou à la main entrez:
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
|
dans le fichier /etc/resolv.conf où xxx.xxx.xxx.xxx sont les adresses des serveurs de noms.
Ne configurez aucune passerelle par défaut.
Lancement manuel de la connexion
Cela se fait par la commande:
Devraient apparaître les messages de pptp et ppp vous informant de
l'avancement de la connexion:
- Montée de ppp0
- Adresse IP locale
- Adresse IP distante
Ca y est, vous pouvez aller chercher votre maillot et votre surf et/ou ouvrir une bouteille de Champagne!!
Un Ctrl- C dans la fenêtre ou vous avez lancé pptp suffit
normalement à couper la connexion. Mais:
killall pptp
killall pppd
rm -rf /var/run/pptp
|
vous assure de pouvoir vous reconnecter proprement. pptp ne "rend pas pas la main" après
avoir été lancé. Pour le lancer
depuis un script, il faudra l'éxécuter en tâche de fond (&): de toutes façons, si vous avez l'adsl,
c'est bien pour rester connecté en permanence et faire
fortune grâce au futur serveur web que vous allez pourvoir bientôt mettre en place, non? Alors passons
aux scripts de connexion, reconnexion et update de dns
automatiques.
Scripts de connexion, reconnexion et update de dns
Quand je n'avais pas d'ip fixe (merci Nerim), j'utilisais un nom de domaine dynamique (et gratuit) à www.dyndns.org.
Si vous voulez faire de même, prenez un nom d'utilisateur et
un mot de passe chez eux, et configurez manuellement sur leur site votre IP et nom de domaine (en fait j'ai à présent la chance d'avoir un ip fixe gratuit
chez Nerim, mais je continue à utiliser dyndns comme fournisseur de nom de domaine sur ip fixe pour d'autres serveurs hébergés chez
linux-sottises)
Il existe plusieurs clients de mise à jour d'ip chez dyndns.org, je conseille le script python ipcheck.py qui a de
nombreux avantages: mise à jours de plusieurs hôtes en une seule ligne, non exécution des mises à jours abusives ou inutiles, mise à jour au bout du délai
imparti par dyndns en cas de non changement d'ip. Vous avez naturellement besoin d'installer Python...
Voir http://ipcheck.sourceforge.net/ pour
tous les détails et les mises à jour et
http://support.dyndns.org/dyndns/clients/unix.shtml pour la liste des
clients de mise à jour d'ip sous linux chez dyndns.
Le script adsl permet de lancer, arrêter et relancer la connexion,
ainsi que checkip et uddns. Si vous n'avez pas besoin de uddns ,
commentez les lignes de
adsl qui concernent uddns .
Le script checkip tourne en tâche de fond pour vérifier l'état de la connexion.
Le script uddns met à jour votre IP chez www.dyndns.org.
Dans uddns, remplissez login, password et la liste de vos noms de domaine. J'ai aussi fait figurer la configuration "test" de dyndns
sur une ligne commentée par un #... Je vous conseille de tester votre configuration avec ce login/passwd de test.
Tous ces scripts sont contrôlés par un fichier de configuration que j'ai
arbitrairement placé à /etc/adsl.conf. Vous pouvez
changer cet emplacement, à condition de modifier les scripts eux-mêmes. Ce
fichier contient les emplacements des programmes que les scripts utilisent.
Ainsi, le mien contient :
ADSL=/etc/rc.d
CHECKIP=/usr/local/adsl
DDNS=/usr/local/adsl
DELAY=60
IFCONFIG=/sbin
IPDELAY=120
DDNSDELAY= 10
LOG=/var/log/adsl
MODEM=10.0.0.138
PPTP=/usr/sbin
|
ADSL est l'endroit où vous avez mis le script adsl
CHECKIP celui où vous avez mis checkip
DDNS celui où vous avez mis ipcheck.py
DELAY est le temps de latence de redémarrage (pour éviter les problèmes
d'authentification après une déconnexion)
vous estimez qu'attendre une minute votre ADSL est trop long, vous pouvez
essayer de le reduire ("j'ai personnellement mis 10 s" déclare William Steve Applegate, moi je l'ai mis à 0, mais sur certaines connexions,
il est nécessaire de le remonter...). Si le script
adsl commence à émettre des erreurs, remontez la valeur de DELAY.
IFCONFIG s'obtient en tapant which ifconfig ,
IPDELAY est le temps (en secondes)
entre deux lancements de checkip .
DDNSDELAY est un paramètre de temporisation dans uddns
au cas où la connexion soit un peu longue à se mettre en route (uddns tente la mise à jour tant que "ça ne
marche pas" et est "tué" de toutes façons si checkip voit que la connexion est perdue)
LOG est l'endroit où vous voulez
mettre les informations récueillies par les scripts.
MODEM n'est rien
d'autre que l'IP du modem (a priori toujours 10.0.0.138).
PPTP idem (which pptp ).
uddns récupère votre adresse IP actuelle, vous informe de son éventuel changement dans le log, et lance la mise à jour chez dyndns avec ipcheckip.py . L'adresse "précédente"
est stockée dans $CHECKIP/pptp.ip . Il est
donc nécessaire (uniquement pour la première fois où vous utilisez ce script) de créer un premier fichier pptp.ip
dans le répertoire $CHECKIP (mettez n'importe quoi dedans)
Voilà pour la configuration.
J'ai installé par défaut adsl dans /etc/rc.d (ce qui
correspond à la configuration pour les distributions SuSE et
Red Hat.
Sur une Debian, le script irait dans
/etc/init.d ).
Il faut ensuite créer un lien sur ce fichier de la
forme S??adsl dans le répertoire qui va bien avec votre
distribution (autrement dit, chacune a ses spécificités et il n'y a hélas pas
de solution générique). En admettant que vous vouliez l'ADSL lorsque vous
démarrez en mode graphique, il vous faudra mettre le lien dans
/etc/rc.d/rc3.d sur une SuSE "ancienne", et dans /etc/rc.d/rc5.d
sur une Red Hat/Mandrake/SuSE "récente" ; quant à la Debian, quel que soit le mode, c'est dans
/etc/rc2.d (le runlevel par défaut) qu'il faut mettre le lien.
Pour ce qui est des `??', vous devez les remplacer par un chiffre, qui
indiquera à quel moment du lancement le script sera appelé. Si vous utilisez
des clients réseau tels NTP, il
faut que le script se charge avant eux (ainsi, si ntpdate est
lancé par S22ntpdate , vous pouvez par exemple charger le script
par S15adsl ). D'autre part, il n'est pas inintelligent de penser à
stopper le démon correctement. Ceci se fait par un lien de la forme
K??adsl qui doit être placé au moins dans les répertoires
rc0.d et rc6.d , éventuellement rc1.d .
En fait, l'initialisation System V demanderait un paragraphe à elle seule, le
mieux est que vous étudiiez les scripts et liens dans ces répertoires pour en
saisir le principe.
La syntaxe de adsl est classique :
adsl {start|stop|status|restart}
|
adsl start lance aussi checkip et uddns .
Il est possible que lors de l'arrêt (adsl stop ou par le lien dans
/etc ), vous obteniez une erreur du style « uddns: no process
killed ». Ceci est normal, il n'y a pas lieu de s'affoler. Si vous êtes
un(e) maniaque, vous pouvez modifier dans adsl le
killall correspondant en rajoutant > /dev/null 2>&1 .
J'ai placé les scripts checkip et uddns dans
/usr/local/adsl . Mais vous pouvez les installer ailleurs, modifiez
en conséquence le fichier de configuration /etc/adsl.conf .
checkip teste toutes les IPDELAY secondes que votre connexion est
OK et l'arrête proprement et la relance si elle est coupée. Le test de
connexion se fait en regardant si l'interface ppp0 est active (en plus des echos sur le peer de connexion dans
/etc/ppp/options .
Ces trois scripts inscrivent tous leurs messages dans LOG que vous pourrez
consulter pour trouver les dates et raisons des arrêts-redémarrages de votre
machine et les updates de votre adresse de nom de domaine.
À présent que tout ça fonctionne (peut-être même auriez-vous dû le faire
auparavant !), vous devriez installer un pare-feu : vous venez d'ouvrir en
permanence la porte de votre domicile à la jungle d'Internet. Voir Partage et pare-feu.
Adaptation des scripts pour pppoa, modem alcatel usb avec drivers de Benoit Papillaut
Une page est désormais dédiée à ce
sujet: speedtouch-usb
Tous les commentaires ou découvertes de bugs sur ces derniers scripts sont les bienvenus à
tnka at linux-sottises.net
|