Configurer PPPoE
09/02/2005
 Christian CALECA 
Liste des cours

rp-pppoe & Linux


Le Kit proposé par Wanadoo contient (ou a contenu à une époque) une version d'Enternet pour Linux, soumis à la même licence que celle des versions Windows. La société "Roaring Penguin" propose un client sous licence GPL.

La manipulation qui suit présente l'installation et la configuration de rp-pppoe sur une distribution Mandrake 8.1

La distribution Debian propose un paquetage PPPoE qui n'est autre qu'une adaptation de rp-pppoe.

Présentation

Il est nécessaire d'avoir installé au préalable le démon pppd.

rp-pppoe  est proposé sous la forme de paquetage RPM, autant en profiter. A l'heure où je rédige ces lignes, Mandrake propose la version 3.1 alors que l'on trouve la version 3.3 sur le site de Roaring Penguin. J'ai choisi d'installer le  rp-pppoe-3.3-1.i386.rpm pour RedHat, qui semble fonctionner parfaitement sur la Mandrake.

Un deuxième paquetage, rp-pppoe-gui-3.3-1.i386.rpm, permet comme son nom le laisse supposer, de disposer d'une interface graphique pour configurer, démarrer et arrêter la connexion PPPoE. Ce paquetage ne présente un intérêt que si vous utilisez la connexion sur une machine Linux qui vous sert de poste de travail avec une interface graphique.

Nous allons voir comment utiliser rp-pppoe dans deux cas de figure :

Installation

Vous avez tout ce qu'il faut. l'installation de rp-pppoe place quelques scripts utiles:

Le paquetage propose également quelques autres outils de diagnostics et de mise au point qui ne devraient pas nous servir.

Configuration de la (des) carte réseau(x)

nom Par des moyens graphiques, netconf permet facilement de configurer vos diverses cartes réseau.
activé Dans l'exemple, c'est l'adaptateur 2 qui sera utilisé pour la connexion PPPoE

Pour une connexion sur le câble, le mieux est de désactiver cette interface. Pour le moment, si vous utilisez les services DHCP, la carte est activée et est configurée comme indiqué sur l'image.

Vous devez retrouver dans /etc/sysconfig/network-scripts un fichier nommé ifcfg-eth1 qui contient ces informations.

Configuration de rp-pppoe, méthode permanente

La méthode que nous voyons ici est plutôt adaptée à une connexion établie de façon permanente, lors du boot de la machine. Tous les utilisateurs pourront alors en profiter. C'est ce qu'il faudra faire si votre machine est une passerelle vers votre réseau privé.

Si vous optez pour une utilisation plus "personnelle" où chaque utilisateur pourra à sa guise ouvrir ou fermer la connexion, vous préfèrerez probablement utiliser l'interface graphique, que nous verrons plus loin.

Le fichier pppoe.conf

Voici le fichier en intégralité. Ce qu'il est important de voir est signalé en gras surligné.

#***********************************************************************
#
# pppoe.conf
#
# Configuration file for rp-pppoe.  Edit as appropriate and install in
# /etc/ppp/pppoe.conf
#
# NOTE: This file is used by the adsl-start, adsl-stop, adsl-connect and
#       adsl-status shell scripts.  It is *not* used in any way by the
#       "pppoe" executable.
#
# Copyright (C) 2000 Roaring Penguin Software Inc.
#
# This file may be distributed under the terms of the GNU General
# Public License.
#
# $Id: pppoe.conf,v 1.7 2001/09/14 19:07:39 dfs Exp $
#***********************************************************************

# When you configure a variable, DO NOT leave spaces around the "=" sign.

# Ethernet card connected to ADSL modem

# ici doit figurer le nom de l'interface que vous allez utiliser.
ETH=eth1

# ADSL user name.  You may have to supply "@provider.com"  Sympatico
# users in Canada do need to include "@sympatico.ca"
# Sympatico uses PAP authentication.  Make sure /etc/ppp/pap-secrets
# contains the right username/password combination.
# For Magma, use xxyyzz@magma.ca

# ici doit figurer le nom d'utilisateur que votre fournisseur vous a donné.
USER=fti/xxxxxxx@fti


# Bring link up on demand?  Default is to leave link up all the time.
# If you want the link to come up on demand, set DEMAND to a number indicating
# the idle time after which the link is brought down.

# Ici, vous indiquez si vous voulez utiliser une connexion permanante
# (choix par défaut)
DEMAND=no
# Ou à la demande. La valeur indiquée est le temps d'inactivité au bout duquel
# la connexion sera interrompue (en secondes probablement).
#DEMAND=300

# DNS type: SERVER=obtain from server; SPECIFY=use DNS1 and DNS2;
# NOCHANGE=do not adjust.

# Ici, vous choisissez la façon dont le ou les DNS vont être choisis
#	SERVER pour récupérer automatiquement les informations du FAI
#              (vous devrez alors exploiter USEPEERDNS)
#	SPECIFY pour indiquer vous-même le ou les DNS que vous voulez utiliser
#	       (vous devrez alors exploiter DNS1 et DNS2)
# Dans cet exemple, nous utiliserons les DNS indiqués par le FAI
DNSTYPE=SERVER

# Obtain DNS server addresses from the peer (recent versions of pppd only)
USEPEERDNS=yes

DNS1=
DNS2=

# Make the PPPoE connection your default route.  Set to
# DEFAULTROUTE=no if you don't want this.

# Normalement, votre route par défaut doit pointer sur la passerelle de votre FAI
# Sauf si vous savez exactement ce que vous faites, laissez cette option à YES
DEFAULTROUTE=yes

### ONLY TOUCH THE FOLLOWING SETTINGS IF YOU'RE AN EXPERT
# Puisqu'on nous le dit...
# Tout de même, il y a une ou deux options à voir :

# How long adsl-start waits for a new PPP interface to appear before
# concluding something went wrong.  If you use 0, then adsl-start
# exits immediately with a successful status and does not wait for the
# link to come up.  Time is in seconds.
#
# WARNING WARNING WARNING:
#
# If you are using rp-pppoe on a physically-inaccessible host, set
# CONNECT_TIMEOUT to 0.  This makes SURE that the machine keeps trying
# to connect forever after adsl-start is called.  Otherwise, it will
# give out after CONNECT_TIMEOUT seconds and will not attempt to
# connect again, making it impossible to reach.

# rp-pppoe essaye de reconnecter à chaque interruption de la liaison
# si la connexion n'est pas à la demande.
# l'option suivante permet éventuellement d'obliger rp-pppoe à essayer d'établir
# la connexion indéfiniment. Ici, nous nous contenterons de 30 secondes.
# Si vous devez pouvoir accéder à votre machine à distance (ssh, telnet...)
# mettez alors cette valeur à 0 pour forcer les tentatives à l'infini.
CONNECT_TIMEOUT=30

# How often in seconds adsl-start polls to check if link is up
CONNECT_POLL=2

# Specific desired AC Name
ACNAME=

# Specific desired service name
SERVICENAME=

# Character to echo at each poll.  Use PING="" if you don't want
# anything echoed
PING="."

# File where the adsl-connect script writes its process-ID.
# Three files are actually used:
#   $PIDFILE       contains PID of adsl-connect script
#   $PIDFILE.pppoe contains PID of pppoe process
#   $PIDFILE.pppd  contains PID of pppd process
CF_BASE=`basename $CONFIG`
PIDFILE="/var/run/$CF_BASE-adsl.pid"

# Do you want to use synchronous PPP?  "yes" or "no".  "yes" is much
# easier on CPU usage, but may not work for you.  It is safer to use
# "no", but you may want to experiment with "yes".  "yes" is generally
# safe on Linux machines with the n_hdlc line discipline; unsafe on others.
SYNCHRONOUS=no

# Do you want to clamp the MSS?  Here's how to decide:
# - If you have only a SINGLE computer connected to the ADSL modem, choose
#   "no".
# - If you have a computer acting as a gateway for a LAN, choose "1412".
#   The setting of 1412 is safe for either setup, but uses slightly more
#   CPU power.

# Option fort intéressante, surtout si la machine agit comme une passerelle
# entre le Net et votre réseau local. Cette option permet à vos hôtes du réseau
# privé d'adopter un MTU compatible avec PPPoE
CLAMPMSS=1412
#CLAMPMSS=no

# LCP echo interval and failure count.
LCP_INTERVAL=20
LCP_FAILURE=3

# PPPOE_TIMEOUT should be about 4*LCP_INTERVAL
PPPOE_TIMEOUT=80

# Firewalling: One of NONE, STANDALONE or MASQUERADE

# Personellement, je préfère m'occuper du firewall à part en écrivant mes propres règles
# dans netfilter. 
FIREWALL=NONE

# Il n'est normalement pas nécessaire de modifier les autres paramètres.

# Linux kernel-mode plugin for pppd.  If you want to try the kernel-mode
# plugin, use LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
LINUX_PLUGIN=

# Any extra arguments to pass to pppoe.  Normally, use a blank string
# like this:
PPPOE_EXTRA=""

# Rumour has it that "Citizen's Communications" with a 3Com
# HomeConnect ADSL Modem DualLink requires these extra options:
# PPPOE_EXTRA="-f 3c12:3c13 -S ISP"

# Any extra arguments to pass to pppd.  Normally, use a blank string
# like this:
PPPD_EXTRA=""

Le "CLAMP MSS", est un moyen d'agir sur la taille maximale des paquets au niveau TCP. Nous verrons ça plus en détail un peu plus loin. Il est possible de pousser cette valeur jusqu'à 1452. Au delà, nous aurons des problèmes.

Les fichiers pap-secrets et chap-secrets

Ils ont la même allure tous les deux :

# Secrets for authentication using PAP
# client	server	secret			IP addresses
fti/xxxxxxx@fti	*	xxxxxxx			*

Bien entendu, le mot de passe (secret) est écrit en clair dans ces fichiers. Attention donc aux droits d'accès... Normalement, dans ce type de configuration, seul root a accès en lecture et en écriture.

Presque toutes ces options auraient pu être configurées par l'intermédiaire du script adsl-setup. Maintenant que l'on sait à peu près de quoi l'on parle, il n'y a plus aucun inconvénient à le faire à votre choix, par le script ou par la mise à jour de ces fichiers.

Il ne vous reste plus qu'à configurer votre SystemV pour qu'il appelle /etc/rc.d/init.d/adsl start au démarrage et vous aurez alors une interface ppp0 active.

Configuration de rp-pppoe  pour chaque utilisateur

Dans le cas où la machine Linux est utilisée comme un poste de travail, on aura certainement intérêt à utiliser plutôt cette méthode, à moins que l'on souhaite disposer d'une connexion permanente.

connexion il faut lancer l'utilitaire tkpppoe.
Le bouton "Properties" permet le paramétrage du client.
edit L'onglet "Basic" permet la saisie de l'identifiant de l'utilisateur.
NIC L'onglet NIC and DNS permet de spécifier:
  • L'interface Ethernet utilisée
  • La façon de choisir son DNS.
options L'onglet "Options"...

Attention, la connexion PPP synchrone peut ne pas fonctionner correctement. Il faut essayer. La connexion synchrone est moins gourmande en ressources CPU

Il suffit maintenant d'utiliser les boutons "Start" et Stop" pour utiliser sa connexion comme on le ferait avec un modem RTC.

La configuration, pour un utilisateur donné, n'est, bien entendu, à faire qu'une fois

Mise en garde

La mise en oeuvre de rp-pppoe à travers l'interface graphique n'utilise pas les fichiers de configuration vus plus haut. ses propres fichiers sont créés dans /etc/ppp/rp-pppoe-gui, ce qui permet de disposer d'une configuration éventuellement différente pour chaque utilisateur.

Et pour la Debian...

C'est somme-toute assez similaire. La configuration testée est une Woody stable.

Utilisez le script pppoeconf, qui recherchera automatiquement l'interface attachée au modem, vous posera les questions essentielles et configurera convenablement le client.

L'originalité de la Debian, c'est qu'elle intègre plus intimement PPPoE à la connexion PPP "classique".

Vous démarrerez et arrêterez votre connexion PPPoE par un :

/etc/init.d/ppp start (ou stop)

Dans la pratique, le script pppoeconf effectue :

Normalement, vous n'avez rien à modifier pour que ça fonctionne, mais faisons tout de même les remarques suivantes :.