Dernière modification 15.07.02
- Le numéro de téléphone de votre fournisseur d'accès
- Votre nom de compte chez votre fournisseur et votre mot de passe
- L'adresse IP du serveur DNS primaire de votre fournisseur (éventuellement)
- L'adresse IP du serveur DNS secondaire de votre fournisseur (éventuellement)
Cette configuration est valable dans le cas où vous avez un provider
unique, dans le cas où vous avez plusieurs providers (essais de
FAI gratuits), reportez vous à la page configuration
PPP avec multi FAI.
Je trouve la configuration de la connexion PPP sur la Mandrake particulièrement
confuse, il y a des fichiers sous /usr/bin et une tonne sous /etc/sysconfig/network-scripts,
je n'ai jamais vraiment réussi à comprendre le mécanisme
d'une connexion PPP. C'est pourquoi j'ai essayé de construire une
solution qui se veut la plus portable possible et donc doit marcher sur
toutes les distribs de linux. Cette page comprend l'identification CHAP
telle que l'utilise Free.
Dans la suite des opérations kervao.fr est le nom du domaine local.
ATTENTION: - Pour info pour des versions
de package de ppp inférieures à 2.4.0, on m'a
fait remarquer que mes scripts pouvaient ne pas marcher, je vous conseille
donc d'upgrader ppp, ce qui a pour effet de résoudre le problème.
- Attention si vous avez une carte réseau, veillez à ce que
dans le fichier /etc/sysconfig/network vous n'ayez pas GATEWAYDEV=eth0,
voici le contenu du mien:
NETWORKING=yes
FORWARD_IPV4=true
HOSTNAME=asterix.kervao.fr
DOMAINNAME=kervao.fr
GATEWAYDEV=
-rw------- 1 root daemon
78 jui 19 2001 chap-secrets
-rwxr-xr-x 1 root root
513 sep 17 2001 ip-down*
-rwxr-xr-x 1 root root
2839 jui 24 2001 ip-down.ipv6to4*
-rwxr-xr-x 1 root root
956 sep 17 2001 ip-up*
-rwxr-xr-x 1 root root
4845 jui 24 2001 ip-up.ipv6to4*
-rw-r--r-- 1 root daemon
36 jui 19 2001 options
-rw------- 1 root daemon
102 jun 13 18:43 pap-secrets
drwxr-xr-x 2 root daemon
1024 jui 19 2001 peers/
On va créer des scripts personnalisés de connexion, le premier est ppp-on, cet exécutable permet de lancer une connexion, voici son contenu:
#!/bin/bash
# définition du nom du fichier contenant les paramètres
de connexion
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#définition du port sur lequel est branché le modem
MODEM=/dev/ttyS0
#définition de la vitesse max du modem (on peut mettre 115200
même si le modem plafonne à 56400)
SPEED=115200
#options diverses PPP, pour plus d'info "man pppd"
PPPOPTIONS="lock noauth modem crtscts asyncmap 00000000 defaultroute
debug"
exec /usr/sbin/pppd -detach $PPPOPTIONS $MODEM $SPEED \
remotename $DEVICE ipparam
$DEVICE \
connect "/usr/sbin/chat
-v -f $DIALER_SCRIPT"
Les options que je passe à pppd sont celles qui sont définies
par défaut sur une distrib Mandrake, je n'ai pas cherché
à les comprendre et encore moins à les modifier, retenez
quand même que debug sert à avoir plus d'informations
et que sans defaultroute le routage ne marchera pas.
Donnez les droits d'éxécution à ce script
chmod 755 /etc/ppp/ppp-on
Le script exécutable ppp-off va permettre de stopper la connexion:
#!/bin/bash
if [ "$1" = "" ]; then
DEVICE=ppp0
else
DEVICE=$1
fi
if [ -r /var/run/$DEVICE.pid ]; then
kill -INT `cat /var/run/$DEVICE.pid`
if [ ! "$?" = "0" ]; then
rm -f /var/run/$DEVICE.pid
echo "Argh erreur en détruisant le fichier pid"
exit 1
fi
echo "Liaison PPP $DEVICE
terminé"
exit 0
fi
echo "Erreur liaison PPP non active sur $DEVICE"
exit 1
Donnez les droits d'éxécution à ce script
chmod 755 /etc/ppp/ppp-off
Le fichier ppp-on-dialer contient les paramètres de connexion
'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
'' 'ATZ'
'OK' 'ATDT0491294697'
'CONNECT' ''
'ogin:' 'le-login-chez-le-fai'
'ord:' 'le-mot-de-passe'
'TIMEOUT' '5'
'~--' ''
Vous remplacez évidemment le numéro de téléphone, le login et le mot de passe par les votres. Donnez des droits de lecture uniquement à root.
chmod 600 /etc/ppp/ppp-on-dialer
Dans le fichier ip-up vous pouvez mettre ce que voulez comme par exemple l'envoi du courrier en attente de même que la réception
#!/bin/bash
/usr/sbin/sendmail -q -v
/usr/bin/fetchmail
ATTENTION: - mettre le chemin complet des commandes
- c'est avec les droits root que vous allez lancer le script ip-up,
par conséquent veiller à ce que root ait un .fetchmailrc
pour relever le mail de tous vos utilisateurs.
De même dans le fichier ip-down, vous mettrez les commandes que vous souhaitez lancer à l'arrêt d'une connexion.
#!/bin/bash
# définition du nom du fichier contenant les paramètres
de connexion
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#définition du port sur lequel est branché le modem
MODEM=/dev/ttyS0
#définition de la vitesse max du modem (on peut mettre 115200
même si le modem plafonne à 56400)
SPEED=115200
#options diverses PPP, pour plus d'info "man pppd"
PPPOPTIONS=" noauth defaultroute modem debug ipcp-accept-remote
ipcp-accept-local idle 180"
exec /usr/sbin/pppd $MODEM $SPEED $PPPOPTIONS \
connect "/usr/sbin/chat
-v -f $DIALER_SCRIPT" \
remotename proxad user
login-chez-free
Le fichier /etc/ppp/ppp-on-dialer est plus court:
'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'' 'ATZ'
'OK' 'ATDT0491294697'
'CONNECT' ''
Un fichier fait son apparition /etc/ppp/chap-secrets, il contient
login-chez-free * mot-de-passe-chez-free
Ce fichier doit avoir les droits 600 pour des raisons évidentes de sécurité.
search kervao.fr
nameserver 194.149.160.9
nameserver 194.149.160.1
A noter qu'il n'est absolument pas nécessaire de spécifier le même nom de domaine que celui de votre provider, vous pouvez garder votre nom farfelu.
En cas d'attribution automatique des serveurs de noms, le fichier /etc/resolv.conf sera automatiquement modifié en conséquence sur une Mandrake par un jeu de fichiers qui m'échappe. Si c'est votre cas, pas de problème, sinon voilà un petit script qui permettra de renseigner automatiquement le fichier /etc/resolv.conf il suffit de le rajouter au début de /etc/ppp/ip-up
rm -f /etc/resolv.conf
echo "search kervao.fr" > /etc/resolv.conf
# en cas de serveur
DNS local, décommentez la ligne suivante
# echo "nameserver 127.0.0.1"
rm -f /etc/resolv.conf
echo "nameserver " $DNS1 >> /etc/resolv.conf
echo "nameserver " $DNS2 >> /etc/resolv.conf
Par ailleurs vous devez rajouter l'option usepeerdns à pppd dans le fichier ppp-on comme ceci
PPPOPTIONS="usepeerdns noauth defaultroute modem debug ipcp-accept-remote ipcp-accept-local idle 180"
Pour info c'est pppd qui passe les adresses IP à ip-up à travers les variables DNS1 et DNS2 grâce à l'option usepeerdns (man pppd pour plus de détails).
[root@tavel /]# ./ppp-on
Serial connection established.
using channel 3
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x81624e37>
<pcomp> <accomp>]
rcvd [LCP ConfNak id=0x1 <asyncmap 0xffffffff>]
sent [LCP ConfReq id=0x2 <magic 0x81624e37> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x2 <magic 0x81624e37> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x2 <mru 1500> <asyncmap 0xffffffff>
<magic 0xc2d873ec> <pcomp> <accomp> <mrru 1500> <endpoint
[null]>]
sent [LCP ConfRej id=0x2 <mrru 1500>]
rcvd [LCP ConfReq id=0x3 <mru 1500> <asyncmap 0xffffffff>
<magic 0xc2d873ec> <pcomp> <accomp>]
sent [LCP ConfAck id=0x3 <mru 1500> <asyncmap 0xffffffff>
<magic 0xc2d873ec> <pcomp> <accomp>]
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <compress VJ 0f 01>
<ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd
v1 15>]
rcvd [IPCP ConfReq id=0x4 <compress VJ 0f 01> <addr 202.3.224.35>]
sent [IPCP ConfAck id=0x4 <compress VJ 0f 01> <addr 202.3.224.35>]
rcvd [IPCP ConfNak id=0x1 <addr 202.3.231.33> <ms-dns1 202.3.225.10>
<ms-dns3 202.3.225.20>]
sent [IPCP ConfReq id=0x2 <addr 202.3.231.33> <compress VJ
0f 01> <ms-dns1 202.3.225.10> <ms-dns3 202.3.225.20>]
rcvd [LCP ProtRej id=0x5 80 fd 01 01 00 0f 1a 04 78 00 18 04 78
00 15 03 2f]
rcvd [IPCP ConfAck id=0x2 <addr 202.3.231.33> <compress VJ
0f 01> <ms-dns1 202.3.225.10> <ms-dns3 202.3.225.20>]
local IP address 202.3.231.33
remote IP address 202.3.224.35
primary DNS address 202.3.225.10
secondary DNS address 202.3.225.20
Script /etc/ppp/ip-up started (pid 2438)
Script /etc/ppp/ip-up finished (pid 2438), status = 0x0
Pour avoir un max d'info, avant de lancer ppp-on, ouvrer un shell en tant que root et taper tail -f /var/log/messages, vous devriez y voir ça:
Jul 9 08:28:19 asterix pppd[2377]: pppd 2.4.1 started by root,
uid 0
Jul 9 08:28:20 asterix chat[2391]: report (CONNECT)
Jul 9 08:28:20 asterix chat[2391]: abort on (BUSY)
Jul 9 08:28:20 asterix chat[2391]: abort on (ERROR)
Jul 9 08:28:20 asterix chat[2391]: abort on (NO CARRIER)
Jul 9 08:28:20 asterix chat[2391]: abort on (NO DIALTONE)
Jul 9 08:28:20 asterix chat[2391]: abort on (Invalid Login)
Jul 9 08:28:20 asterix chat[2391]: abort on (Login incorrect)
Jul 9 08:28:20 asterix chat[2391]: send (ATZ^M)
Jul 9 08:28:20 asterix chat[2391]: expect (OK)
Jul 9 08:28:21 asterix chat[2391]: ATZ^M^M
Jul 9 08:28:21 asterix chat[2391]: OK
Jul 9 08:28:21 asterix chat[2391]: -- got it
Jul 9 08:28:21 asterix chat[2391]: send (ATDT3640^M)
Jul 9 08:28:21 asterix chat[2391]: expect (CONNECT)
Jul 9 08:28:21 asterix chat[2391]: ^M
Jul 9 08:28:40 asterix chat[2391]: ATDT3640^M^M
Jul 9 08:28:40 asterix chat[2391]: CONNECT
Jul 9 08:28:40 asterix chat[2391]: -- got it
Jul 9 08:28:40 asterix chat[2391]: send (^M)
Jul 9 08:28:40 asterix chat[2391]: expect (ogin:)
Jul 9 08:28:40 asterix chat[2391]: 36000/ARQ/V90/LAPM/V42BIS^M
Jul 9 08:28:42 asterix chat[2391]: ^M
Jul 9 08:28:42 asterix chat[2391]: Welcome to 3Com Total Control
HiPer ARC (TM)^M
Jul 9 08:28:42 asterix chat[2391]: Networks That Go The Distance
(TM)^M
Jul 9 08:28:42 asterix chat[2391]: ^M
Jul 9 08:28:42 asterix chat[2391]: login:
Jul 9 08:28:42 asterix chat[2391]: -- got it
Jul 9 08:28:42 asterix chat[2391]: send (login-fai^M)
Jul 9 08:28:42 asterix chat[2391]: expect (ord:)
Jul 9 08:28:42 asterix chat[2391]: login-fai^M
Jul 9 08:28:42 asterix chat[2391]: Password:
Jul 9 08:28:42 asterix chat[2391]: -- got it
Jul 9 08:28:42 asterix chat[2391]: send (mot-de-passe^M)
Jul 9 08:28:42 asterix chat[2391]: timeout set to 5 seconds
Jul 9 08:28:42 asterix chat[2391]: expect (~)
Jul 9 08:28:42 asterix chat[2391]: ^M
Jul 9 08:28:42 asterix chat[2391]: ~
Jul 9 08:28:42 asterix chat[2391]: -- got it
Jul 9 08:28:42 asterix chat[2391]: send (^M)
Jul 9 08:28:43 asterix pppd[2377]: Serial connection established.
Jul 9 08:28:43 asterix pppd[2377]: Using interface ppp0
Jul 9 08:28:43 asterix pppd[2377]: Connect: ppp0 <--> /dev/ttyS0
Jul 9 08:28:46 asterix pppd[2377]: local IP address
202.3.231.33
Jul 9 08:28:46 asterix pppd[2377]: remote IP address 202.3.224.35
Jul 9 08:28:46 asterix pppd[2377]: primary DNS
address 202.3.225.10
Jul 9 08:28:46 asterix pppd[2377]: secondary DNS address 202.3.225.20
Cette sortie est un peu différente dans le cas d'une connexion
avec identification CHAP (Free).
A noter que le mot de passe de connexion PPP ainsi que le login apparaît
en clair dans le fichiet de log.
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias PPPON=/etc/ppp/ppp-on
Cmnd_Alias PPPOFF=/etc/ppp/ppp-off
# User privilege specification
root ALL=(ALL) ALL
olivier ALL=NOPASSWD:PPPON,NOPASSWD:PPPOFF
veronique ALL=NOPASSWD:PPPON,NOPASSWD:PPPOFF
Mes deux utilisateurs olivier et veronique ont le droit d'utiliser les commandes ppp-on et ppp-off et donc de déclencher et d'arrêter une connexion PPP. Pour déclencher une connexion, il suffira donc de taper:
sudo /etc/ppp/ppp-on
Et pour l'arrêter:
sudo /etc/ppp/ppp-off
NOTE: Pour simplifier rajouter dans le .bashrc de vos
utilisateurs habilités sudo
alias connecte='sudo /etc/ppp/ppp-on'
alias deconnecte='sudo /etc/ppp/ppp-off'
Pour prendre en compte les modifs
source ~/.bashrc
Il suffit alors de taper dans un shell
connecte
ou
deconnecte
'REPORT' 'CONNECT'
Maintenant au niveau de la commande chat du fichier ppp-on, on va rajouter au lieu de :
"/usr/sbin/chat -v -f $DIALER_SCRIPT"
Ceci
"/usr/sbin/chat -v -f $DIALER_SCRIPT -r /tmp/report-file"
Maintenant lors d'une connexion, l'inscription suivante va s'inscrire dans le fichier /tmp/report-file:
Opening "/tmp/report-file"...
chat: Jul 09 08:28:40 CONNECT 36000/ARQ/V90/LAPM/V42BIS
Closing "/tmp/report-file".
Ce fichier n'est pas écrasé mais incrémenté
à chaque connexion. Il vous suffit à chaque début
de connexion de jeter un coup d'oeil dedans pour voir à quelle vitesse
vous êtes connecté.
[Retour page d'accueil FUNIX] |