Configuration PPP

à la main

Configuration PPP clique bouton Configuration PPP avec plusieurs FAI
Configuration Internet

Présentation

Configuration PPP

Configuration DNS

Utilisateurs PPP

Présentation

Vous avez la possibilité de configurer la connexion au travers d'outils de configuration du style clique-bouton, cependant si vous voulez vous connecter "à la main" ou du moins comprendre le mécanisme de connexion, cette page est fait pour vous. Vous avez d'abord besoin des éléments suivants:
 
Le numéro de téléphone de votre fournisseur d'accès
L'adresse IP du serveur DNS primaire de votre fournisseur
L'adresse IP du serveur DNS secondaire de votre fournisseur
Votre nom de compte chez votre fournisseur et votre mot de passe

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. Elle ne comprend pas l'authentification PAP pour le moment.

ATTENTION: Pour info j'utilise le package ppp-2.3.8-1mdk.i586.rpm, on m'a fait remarquer que mes scripts pouvaient ne pas marcher avec des versions plus anciennes de ppp, je vous conseille donc d'upgrader ppp, ce qui a pour effet de résoudre le problème.

Configuration PPP

Quand on installe le package ppp, celui-ci crée un répertoire /etc/ppp, on y trouve les fichiers suivants:

-rw-------    1 root    root             733 nov  9 18:47 connect-errors
-rwxr-xr-x-    1 root    root              265 sep 16  1997 ip-down
-rwxr-xr-x-    1 root    root             446 nov  9 20:55 ip-up
-rwxr-x---     1 root    pppusers    369 nov  9 18:52 ppp-off
-rwxr-x---     1 root    pppusers     496 nov  9 20:57 ppp-on
-rw-------     1 root    root              237 nov  9 19:16 ppp-on-dialer

Le fichier connect-errors est généré automatiquement en cas d'erreur lors d'une connexion PPP, les autres fichiers sont des fichiers de configuration et des scripts de commande. En cas d'authentification par PAP ou CHAP, vous auriez d'autres fichiers.

Le script exécutable ppp-on 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 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 6.1, 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.

Le script exécutable ppp-off permet 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

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.
Dans le fichier ip-up vous pouvez mettre ce que voulez comme par exemple l'envoie 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

De même dans le fichier ip-down, vous mettrez les commandes que vous souhaitez lancer à l'arrêt d'une connexion.

Configuration PPP avec CHAP (Free et Waika9)

La configuration est identique à celle décrite plus haut, les fichiers diffèrent un peu à commencer par ppp-on:

#!/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 $PPPOPTIONS /dev/ttys0 115200 \
        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é.

Configuration des serveurs DNS

Vous éditez le fichier /etc/resolv.conf et vous indiquez le nom du serveur primaire et secondaire après le mot clé nameserver:

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.

Comment ça marche

Pour lancer la connexion, il suffit de taper ppp-on (en tâche de fond pour pouvoir voir les commentaires) et ppp-off pour arrêter. Voici le genre de commentaires que vous pouvez voir:

[root@tavel /]# ./ppp-on \&
Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xd54de4d8> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x1 <mru 1524> <asyncmap 0xa0000> <pcomp><accomp>< 11 04 05 f4> < 13 08 01 62 72 65 73 74>]Imp>]
rcvd [LCP ConfReq id=0x2 <mru 1524> <asyncmap 0xa0000> <pcomp> <accomp>]
sent [LCP ConfAck id=0x2 <mru 1524> <asyncmap 0xa0000> <pcomp> <accomp>]
sent [IPCP ConfReq id=0x1 <addr 192.168.13.11> <compress VJ 0f 01>]
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
rcvd [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 194.149.178.1>]
sent [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 194.149.178.1>]
rcvd [CCP ConfReq id=0x1 < 11 06 00 01 01 03>]
sent [CCP ConfRej id=0x1 < 11 06 00 01 01 03>]
rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
sent [IPCP ConfReq id=0x2 <addr 192.168.13.11>]
rcvd [CCP ConfRej id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [CCP ConfReq id=0x2]
rcvd [IPCP ConfNak id=0x2 <addr 194.149.178.133>]
sent [IPCP ConfReq id=0x3 <addr 194.149.178.133>]
rcvd [CCP ConfRej id=0x2]
rcvd [IPCP ConfAck id=0x3 <addr 194.149.178.133>]
local  IP address 194.149.178.133
remote IP address 194.149.178.1
Script /etc/ppp/ip-up started (pid 1468)
Script /etc/ppp/ip-up finished (pid 1468), 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:

Nov  9 21:21:00 tavel kernel: CSLIP: code copyright 1989 Regents of the University of California
Nov  9 21:21:00 tavel kernel: PPP: version 2.3.7 (demand dialling)
Nov  9 21:21:00 tavel kernel: PPP line discipline registered.
Nov  9 21:21:00 tavel kernel: registered device ppp0
Nov  9 21:21:00 tavel pppd[1459]: pppd 2.3.8 started by root, uid 0
Nov  9 21:21:01 tavel chat[1463]: abort on (BUSY)
Nov  9 21:21:01 tavel chat[1463]: abort on (ERROR)
Nov  9 21:21:01 tavel chat[1463]: abort on (NO CARRIER)
Nov  9 21:21:01 tavel chat[1463]: abort on (NO DIALTONE)
Nov  9 21:21:01 tavel chat[1463]: abort on (Invalid Login)
Nov  9 21:21:01 tavel chat[1463]: abort on (Login incorrect)
Nov  9 21:21:01 tavel chat[1463]: send (ATZ^M)
Nov  9 21:21:01 tavel chat[1463]: expect (OK)
Nov  9 21:21:02 tavel chat[1463]: ATZ^M^M
Nov  9 21:21:02 tavel chat[1463]: OK
Nov  9 21:21:02 tavel chat[1463]:  -- got it
Nov  9 21:21:02 tavel chat[1463]: send (ATDT0496294696^M)
Nov  9 21:21:02 tavel chat[1463]: expect (CONNECT)
Nov  9 21:21:02 tavel chat[1463]: ^M
Nov  9 21:21:28 tavel chat[1463]: ATDT0496294696^M^M
Nov  9 21:21:28 tavel chat[1463]: CONNECT
Nov  9 21:21:28 tavel chat[1463]:  -- got it
Nov  9 21:21:28 tavel chat[1463]: send (^M)
Nov  9 21:21:28 tavel chat[1463]: expect (ogin:)
Nov  9 21:21:28 tavel chat[1463]:  45333/ARQ/V90/LAPM/V42BIS^M
Nov  9 21:21:31 tavel chat[1463]: ^M
Nov  9 21:21:31 tavel chat[1463]:
Nov  9 21:21:31 tavel last message repeated 23 times
Nov  9 21:21:31 tavel chat[1463]: *** DANUP ISDnet ***^M
Nov  9 21:21:31 tavel chat[1463]: ^M
Nov  9 21:21:31 tavel chat[1463]: ^M
Nov  9 21:21:31 tavel chat[1463]: Login:
Nov  9 21:21:31 tavel chat[1463]:  -- got it
Nov  9 21:21:31 tavel chat[1463]: send (le-login-chez-le-fai^M)
Nov  9 21:21:32 tavel chat[1463]: expect (ord:)
Nov  9 21:21:32 tavel chat[1463]:  -- got it
Nov  9 21:21:32 tavel chat[1463]: send (mot-de-passe-en-clair!!^M)
Nov  9 21:21:32 tavel chat[1463]: timeout set to 5 seconds
Nov  9 21:21:32 tavel chat[1463]: expect (~)
Nov  9 21:21:32 tavel chat[1463]:  ^M
Nov  9 21:21:32 tavel chat[1463]:     Entering PPP Mode.^M
Nov  9 21:21:32 tavel chat[1463]:     IP address is 194.149.178.133^M
Nov  9 21:21:32 tavel chat[1463]:     MTU is 1524.^M
Nov  9 21:21:37 tavel chat[1463]: alarm
Nov  9 21:21:37 tavel chat[1463]: send (^M)
Nov  9 21:21:37 tavel pppd[1459]: Serial connection established.
Nov  9 21:21:37 tavel pppd[1459]: Using interface ppp0
Nov  9 21:21:37 tavel pppd[1459]: Connect: ppp0 <--> /dev/ttyS0
Nov  9 21:21:37 tavel chat[1463]: send (^M)
Nov  9 21:21:40 tavel kernel: PPP BSD Compression module registered
Nov  9 21:21:40 tavel kernel: PPP Deflate Compression module registered
Nov  9 21:21:40 tavel pppd[1459]: local  IP address 194.149.178.133
Nov  9 21:21:40 tavel pppd[1459]: remote IP address 194.149.178.1

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.

Utilisateurs PPP

Maintenant il faut faire en sorte que la connexion puisse être lancée par d'autres utilisateurs ne jouissant pas forcément de droits super utilisateur. Pour cela on va se servir de sudo, voici le fichier de configuration de sudo /etc/sudoers:

# 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

Retour haut de la page