Les deux protocoles PPP et PPPoe se distinguent par le fait qu'une session PPPoe doit être établie avant que les échanges PPP ne débutent.
Le caractère asymétrique du dialogue PPPoE a une influence importante sur la
configuration des deux (systèmes|routeurs) virtuels. Le routeur
Hub
doit exécuter un processus
spécifique pppoe-server
qui lui
permet d'attendre les requêtes du routeur Spoke
. La configuration de ce routeur
Spoke
est très voisine de celle de
n'importe quel client PPP. Il
suffit juste de spécifier l'utilisation du greffon pppoe
dans la configuration.
Par définition, un système Broadband Remote Access Server assure les fonctions suivantes :
-
Agréger le trafic en provenance des équipements Digital subscriber line access multiplexer (DSLAM). Sur la maquette, nous utilisons le commutateur
wan-sw
en lieu et place du DSLAM. -
Fournir une connectivité de niveau 2 à travers des réseaux Ethernet ou ATM sur lesquels les sessions PPP sont établies. Cette fonction est bien assurée par l'interface
eth1
du routeurHub
. -
Faire respecter les politiques de qualité de service (QoS). Cette fonction n'est pas traitée ici.
-
Fournir une connectivité de niveau 3 et un routage des paquets IP vers le fournisseur d'accès (et|ou) l'Internet. Cette fonction est aussi assurée par le routeur
Hub
.
Comme cette liste correspond bien au rôle assigné au routeur
Hub
on peut passer à la
configuration de la nouvelle interface WAN. On commence par s'intéresser à la liste
des paquets Debian utiles. On détaille ensuite les fichiers de
configuration correspondants.
$
aptitude search ~ippp
i A ppp - Point-to-Point Protocol (PPP) - daemon
i pppoe - PPP over Ethernet driver
Le paquet pppoe
contient l'outil
pppoe-server qui permet de gérer
le dialogue de gestion de session du protocole. Les outils fournis
avec ce paquet sont une implémentation complète du protocole
PPPoE dans l'espace
utilisateur.
$
dpkg -S `which pppoe-server`
pppoe: /usr/sbin/pppoe-server
Il est tout à fait possible d'utiliser cet outil directement à partir de la ligne de commande. Dans le cas présent, on souhaite retrouver la configuration d'une exécution à l'autre des instances de machines virtuelles. On essaie donc de paramétrer le serveur PPPoE dans les fichiers de configuration usuels de la distribution. Voici une liste des fichiers de configuration qui permettent de lancer le service.
-
Le fichier
/etc/network/interfaces
:# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.0.2.62/26 gateway 192.0.2.1 iface eth0 inet6 static address 2001:db8:fe00:8175:b8ad:ff:feca:fe00/64 gateway fe80::9083:f2ff:febf:2ef0 auto eth1 iface eth1 inet manual up ip link set dev $IFACE up up pppoe-server -I $IFACE -C BRAS -L 203.0.113.1 -p /etc/ppp/ip-range down killall pppoe-server down ip link set dev $IFACE up
La méthode de configuration de l'interface
eth1
est dite manuelle. Avec cette méthode aucun paramètre n'est requis. On donne deux instructions. On active l'interface au niveau liaison (couche 2) et on lance l'outil pppoe-server avec cette même interface comme paramètre. -
Le fichier
/etc/ppp/pppoe-server-options
:debug login require-chap nodefaultroute ms-dns 192.0.2.1 +ipv6
La présence de ce fichier est obligatoire pour le fonctionnement de l'outil pppoe-server. Dans le cas présent, on se utilise le jeu d'options suivant extrait des pages de manuels du démon
pppd
.-
debug
: affichage des étapes d'établissement de session dans les journaux système. -
login
: référence de compte utilisateur à utiliser lors de l'authentification du routeurspoke
. Cette option implique que le compte utilisateur existe sur le système et qu'il soit présent dans le fichier/etc/ppp/chap-secrets
. -
require-chap
: impose au routeurspoke
une authentification via le protocole CHAP (Challenge Handshake Authentication Protocol). -
nodefaultroute
: préserve la route par défaut (accès Internet) du routeurhub
. -
ms-dns
: publie l'adresse IPv4 du serveur DNS à utiliser. -
+ipv6
: active les protocoles IPv6CP et IPv6.
-
-
Le fichier
/etc/ppp/chap-secrets
:# Secrets for authentication using CHAP # client server secret IP addresses "hub" * "5up3r53cr3t" * "spoke" * "5up3r53cr3t" *
Comme l'option
login
impose l'existence d'un compte utilisateur pour référencer la ligne du fichierchap-secrets
, le moyen le plus simple est de créer un compte local sur le routeurhub
.#
adduser --disabled-login spoke -
Le fichier
/etc/ppp/ip-range
:203.0.113.10-100
Ce fichier définit la liste des adresses IPv4 que le démon peut délivrer en fonction des demandes de connexion PPP.
Une fois la session PPPoE établie, le seul travail effectué par l'outil pppoe-server consiste à lancer le démon pppd qui se charge de gérer ses propres transactions aux deux niveaux LCP et NCP.
La configuration côté routeur d'accès ne présente qu'une seule
spécificité : l'appel au greffon pppoe
. Comme dans le cas précédent, on commence
par le contrôle du paquet ppp
et on
poursuit avec les fichiers de configuration.
$
aptitude search ~ippp
i ppp - protocole point à point (PPP) - démon
Le paquet ppp
, en plus du code
nécessaire à la gestion du dialogue PPP, contient un greffon pppoe
. Ce greffon permet l'utilisation du code
PPPoE fourni avec le noyau
Linux.
Comme avec l'autre routeur, il est possible d'exécuter le démon
PPP avec l'ensemble de ses
paramètres directement à la ligne de commande. On suit ici le même
principe que pour le routeur Hub
:
une configuration sauvegardée dans les fichiers de configuration du
système.
-
Le fichier
/etc/network/interfaces
:# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet manual up ip link set dev $IFACE up down ip link set dev $IFACE down auto dsl-provider iface dsl-provider inet ppp pre-up ifup eth1 provider dsl-provider
La définition de l'interface
ppp0
utilise la méthodeppp
. Avec cette méthode, on peut utiliser la directiveprovider
qui permet d'automatiser le lancement du démon PPP avec les paramètres spécifiés dans le fichierdsl-provider
. Comme avec l'autre routeur, on fait précéder le lancement du démon par l'activation de l'interface au niveau liaison (couche 2).Le fichier présenté est directement inspiré de la page du wiki Debian PPPoE
-
Le fichier
/etc/ppp/peers/dsl-provider
:# There should be a matching entry with the password in /etc/ppp/chap-secrets. user "spoke" # Load the PPPoE plugin. plugin rp-pppoe.so # Ethernet interface to which the modem is connected. eth1 # Assumes that your IP address is allocated dynamically by the ISP. noipdefault # Try to get the name server addresses from the ISP. usepeerdns # Use this connection as the default route. defaultroute # Makes pppd "dial again" when the connection is lost. persist # Do not ask the remote to authenticate. noauth debug +ipv6
C'est à ce niveau que l'on trouve l'appel au greffon PPPoE. Sa fonction est essentiellement l'utilisation de l'interface Ethernet
eth1
en lieu et place d'une interface «série» classique. Le fichier présenté est directement inspiré du modèle fourni avec la documentation du paquetppp
:/usr/share/doc/ppp/examples/peers-pppoe
.Les options ajoutées :
debug
et+ipv6
, sont relatives au niveau des détails présents dans les journaux systèmes et l'activation des protocoles associés à IPv6.