Maquette du réseau de collecte, avec mpd5 et freeradius.
Docs MPD: http://mpd.sourceforge.net/ http://mpd.sourceforge.net/doc5/mpd.html
Docs BSD Router Project: http://bsdrp.net/documentation/examples/how_to_build_a_bsdrp_router_lab http://bsdrp.net/documentation/examples/pppoe_and_l2tp_lab
Mail de fin 2012
L'architecture de collecte ADSL en France à en général cette gueule là :
client <-------> BAS <------> LNS <----> Internet
PPPoE L2TP IP
(ou plus graphiquement <http://wallu.pagesperso-orange.fr/lac.jpg>)
L2TP est le mécanisme réseau qui permet de faire à un opérateur ADSL de
faire de la revente de collecte : les connexions réseaux (PPP) des
clients se retrouvent livrées à travers un gros tunnel à un routeur du
FAI.
Dans la terminologie L2TP, le BAS qui attrape la connexion du client
s'appelle un LAC (pour L2TP Access Concentrator). Et l'endroit où cette
connexion est livrée s'appelle un LNS (pour L2TP Network Server).
Notre soucis à nous, c'est qu'on veut pouvoir mutualiser une seule
collecte pour la livrer à plusieurs opérateurs. Si on reprend notre
schéma de tout à l'heure, ça serait chouette de pouvoir monter un truc
comme ça :
client <-------> BAS <------> LAC/LNS <------> LNS <----> Internet
PPPoE L2TP L2TP IP
C'est à dire une machine au milieu qui aura comme seul rôle d'attraper
les paquets de la collecte (L2TP donc), et de les renvoyer vers le
LNS qui va bien, selon l'origine de la connexion.
C'était la question qu'on s'est posé en toute toute fin de réunion jeudi
dernier. La bonne nouvelle, c'est que c'est possible, que j'ai testé, ça
marche, et que ce n'est même pas très compliqué à faire, tous les outils
sont là tout prêt ! En substance, le logiciel mpd [1] et la
nano-distribution BSDRP [2].
[1] http://mpd.sourceforge.net/
[2] http://bsdrp.net/
En pièce-jointe se trouve une archive qui contient les fichiers de
configuration ainsi que les logs utiles d'un petit labo de 5 machines
construit avec BSDRP [3]. Je me suis inspiré de leur doc sur comment
tester PPPoE et L2TP [4] et après quelques essais (juste le temps de
capter un poil mieux la logique de `mpd`, mais rien de difficile), j'y
suis arrivé.
Le labo est construit comme ça, en terme réseau :
client <-> lac-collecte <-> lac-grenode <-> lns-rezine
^
|
v
lns-illyse
Les logs qui se trouvent permettent de voir deux connexions successives,
la première en utilisant la connexion `rezine` définie sur le client, et
la suivante la connexion `illyse`.
Le cœur de la configuration qui nous intéresse est celle de la machine
`lac-grenode`, et elle ne fait donc que 14 lignes. Mais je me dis que ça
peut tout à fait valoir le coup d'utiliser aussi BSDRP+mpd pour faire le
LNS, vu comme ça m'a paru un couple simple et fiable avec mes quelques
tests.
[3] http://bsdrp.net/documentation/examples/how_to_build_a_bsdrp_router_lab
[4] http://bsdrp.net/documentation/examples/pppoe_and_l2tp_lab
Installation
Sur zoidberg (Debian Squeeze)
# installation de Virtualbox 4.1
wget http://download.virtualbox.org/virtualbox/4.1.8/virtualbox-4.1_4.1.8-75467~Debian~squeeze_i386.deb
dpkg -i virtualbox-4.1_4.1.8-75467~Debian~squeeze_i386.deb
# template routeur BSDRP
wget http://downloads.sourceforge.net/project/bsdrp/BSD_Router_Project/1.1/BSDRP_1.1_full_i386_serial.img.xz?r=http%3A%2F%2Fbsdrp.net%2Fdownloads&ts=1329744425&use_mirror=freefr
unxz BSDRP_1.1_full_i386_serial.img.xz
# script d'installation du labo
wget http://bsdrp.svn.sourceforge.net/viewvc/bsdrp/trunk/tools/BSDRP-lab-vbox.sh
# debug: ./BSDRP-lab-vbox.sh: 642: Syntax error: "fi" unexpected
# ligne 641: ajouter quelque chose entre le else et le fi
Le script BSDRP-lab-vbox.sh va préparer 5 routeurs virtuels et configurer entre eux un réseau maillé complet (chaque vm possède 4 interfaces, vers les 4 autres routeurs du lab).
zoidberg:~# ./BSDRP-lab-vbox.sh -n 5 -i BSDRP_1.1_full_i386_serial.img
BSD Router Project (http://bsdrp.net) - VirtualBox lab script
WARNING: All config files need .conf: /etc/modprobe.d/00local, it will be ignored in a future release.
WARNING: All config files need .conf: /etc/modprobe.d/blacklist, it will be ignored in a future release.
Setting-up a lab with 5 router(s):
- 0 LAN between all routers
- Full mesh Ethernet links between each routers
Router1 have the following NIC:
em0 connected to Router2.
em1 connected to Router3.
em2 connected to Router4.
em3 connected to Router5.
Router2 have the following NIC:
em0 connected to Router1.
em1 connected to Router3.
em2 connected to Router4.
em3 connected to Router5.
Router3 have the following NIC:
em0 connected to Router1.
em1 connected to Router2.
em2 connected to Router4.
em3 connected to Router5.
Router4 have the following NIC:
em0 connected to Router1.
em1 connected to Router2.
em2 connected to Router3.
em3 connected to Router5.
Router5 have the following NIC:
em0 connected to Router1.
em1 connected to Router2.
em2 connected to Router3.
em3 connected to Router4.
Start the lab...
Connect to router 1: socat unix-connect:/tmp/BSDRP_lab_R1.serial STDIO,raw,echo=0
Connect to router 2: socat unix-connect:/tmp/BSDRP_lab_R2.serial STDIO,raw,echo=0
Connect to router 3: socat unix-connect:/tmp/BSDRP_lab_R3.serial STDIO,raw,echo=0
Connect to router 4: socat unix-connect:/tmp/BSDRP_lab_R4.serial STDIO,raw,echo=0
Connect to router 5: socat unix-connect:/tmp/BSDRP_lab_R5.serial STDIO,raw,echo=0
Les commandes socat permettent d'accéder aux consoles série des routeurs virtuels depuis la machine hôte (root / pas de mdp).
Ajouter l'option escape pour spécifier un caractère d'échappement permettant de quitter socat. Par exemple, avec la commande suivante, control+o permet de quitter la console.
socat unix-connect:/tmp/BSDRP_lab_R1.serial STDIO,raw,echo=0,escape=0x0f
Attention le démarrage initial des machines consomme beaucoup de ressources (top monté à 30 sur une eeebox b202).
Une fois toutes les vm démarrées, se connecter sur chacune et exécuter:
system virtualized
reboot
system virtualized optimise les routeurs pour un environnement virtualisé. Après cette opération, le labo consomme beaucoup moins de ressources.
Configuration
Source .svg: https://doc.illyse.net/attachments/download/109/bsdrp-lab_1.svg
Fichiers de conf
Implanter les fichiers de conf fournis en pièce jointe du mail.
wget https://doc.illyse.net/attachments/download/100/mpd-lac-intermediaire.tar.gz
Chemins des fichiers:
/etc/rc.conf
/usr/local/etc/mpd5/mpd.conf
/usr/local/etc/mpd5/mpd.secret
Router1: client
rc.conf
hostname="client"
gateway_enable="NO"
ipv6_gateway_enable="NO"
ipv6_enable="YES"
rtadvd_enable="NO"
tcp_extensions="YES"
defaultrouter="NO"
# no IP address (we are using PPPoE)
quagga_enable="NO"
mpd_enable="YES"
mpd_flags="-b -s ppp"
mpd.conf
default:
load illyse
rezine:
create bundle static REZINE
set bundle enable ipcp
set ipcp enable req-pri-dns
set ipcp enable req-sec-dns
set iface route default
create link static ADSL pppoe
set link action bundle REZINE
set auth authname claude+rezine@grenode.collecte
set auth password secret
set pppoe iface em0
open
illyse:
create bundle static ILLYSE
set bundle enable ipcp
set ipcp enable req-pri-dns
set ipcp enable req-sec-dns
set iface route default
create link static ADSL pppoe
set link action bundle ILLYSE
set auth authname dominique+illyse@grenode.collecte
set auth password secret
set pppoe iface em0
open
Router2: lac-collecte
rc.conf
hostname="lac-collecte"
sshd_enable="NO"
gateway_enable="NO"
ipv6_gateway_enable="NO"
ipv6_enable="YES"
rtadvd_enable="NO"
tcp_extensions="YES"
defaultrouter="NO"
# Configure NIC
ifconfig_em1="10.0.23.2/24"
quagga_enable="NO"
mpd_enable="YES"
mpd_flags="-b -s ppp"
mpd.conf
default:
create link template ADSL pppoe
set pppoe iface em0
set link action forward GRENODE
set link enable incoming
create link template GRENODE l2tp
set l2tp peer 10.0.23.3
Router3: lac-grenode
rc.conf
hostname="lac-grenode"
sshd_enable="NO"
gateway_enable="NO"
ipv6_gateway_enable="NO"
ipv6_enable="YES"
rtadvd_enable="NO"
tcp_extensions="YES"
defaultrouter="NO"
ifconfig_em1="10.0.23.3/24" # toward lac-collecte
ifconfig_em2="10.0.98.3/24" # toward lns-rezine
ifconfig_em3="10.0.99.3/24" # twoard lns-ilise
quagga_enable="NO"
mpd_enable="YES"
mpd_flags="-b -s ppp"
mpd.conf
default:
create link template COLLECTE l2tp
set l2tp enable length
set l2tp enable outcall
set l2tp self 10.0.23.3
set link no pap chap eap
set link enable pap
set link action forward REZINE "\\+rezine@grenode\\.collecte$"
set link action forward ILLYSE "\\+illyse@grenode\\.collecte$"
set link enable incoming
create link template REZINE l2tp
set l2tp peer 10.0.98.4
create link template ILLYSE l2tp
set l2tp peer 10.0.99.5
Router4: lns-rezine
rc.conf
hostname="lns-rezine"
sshd_enable="NO"
gateway_enable="YES"
ipv6_gateway_enable="YES"
ipv6_enable="YES"
rtadvd_enable="NO"
tcp_extensions="YES"
defaultrouter="NO"
ifconfig_em2="10.0.98.4/24" # toward lac-grenode
quagga_enable="NO"
mpd_enable="YES"
mpd_flags="-b -s ppp"
mpd.conf
default:
set ippool add adsl-rezine 88.88.0.1 88.88.0.99
create bundle template ADSL
set ipcp ranges 88.88.0.254/32 ippool adsl-rezine
set ipcp dns 8.8.8.8
set bundle enable ipv6cp
create link template GRENODE l2tp
set l2tp enable length
set link action bundle ADSL
set link enable chap
set auth authname rezine
set auth enable internal
set l2tp self 10.0.98.4
set link enable incoming
mpd.secret
claude+rezine@grenode.collecte secret
Router5: lns-illyse
rc.conf
hostname="lns-illyse"
sshd_enable="NO"
gateway_enable="YES"
ipv6_gateway_enable="YES"
ipv6_enable="YES"
rtadvd_enable="NO"
tcp_extensions="YES"
defaultrouter="NO"
ifconfig_em2="10.0.99.5/24" # toward lac-grenode
quagga_enable="NO"
mpd_enable="YES"
mpd_flags="-b -s ppp"
mpd.conf
default:
set ippool add adsl-illyse 99.99.0.1 99.99.0.99
create bundle template ADSL
set ipcp ranges 99.99.0.254/32 ippool adsl-illyse
set ipcp dns 8.8.8.8
set bundle enable ipv6cp
create link template GRENODE l2tp
set l2tp enable length
set link action bundle ADSL
set link enable chap
set auth authname illyse
set auth enable internal
set l2tp self 10.0.99.5
set link enable incoming
mpd.secret
dominique+illyse@grenode.collecte secret
Redémarrage des services
Une fois les fichiers de configuration créés, redémarrer les services et sauvegarder la conf.
/etc/rc.d/routing restart
/etc/rc.d/netif restart
/usr/local/etc/rc.d/mpd5 start
config save
Tests
Voir /var/log/ppp.log sur les différents routeurs.
Pour choisir entre Rézine et Illyse, éditer mpd.conf sur le client et switcher entre load illyse et load rezine.
Interface ppp sur le client:
[root@client]~# ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
inet 99.99.0.1 --> 99.99.0.254 netmask 0xffffffff
inet6 fe80::cecc:ff:fe00:101%ng0 prefixlen 64 scopeid 0x8
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
Interface ppp sur le LNS Illyse:
[root@lns-illyse]~# ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
inet 99.99.0.254 --> 99.99.0.1 netmask 0xffffffff
inet6 fe80::cecc:ff:fe00:105%ng0 prefixlen 64 scopeid 0x8
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
Ajout du radius
Principe
Le réseau de collecte nécessite un serveur radius pour authentifier les utilisateurs et fournir les paramètres de la connexion ppp (en particulier l'IP fixe de l'abonné).
Typiquement, ce serveur radius est interrogé au moins deux fois: une fois par le LAC de l'opérateur de collecte, et une fois par le LNS du FAI.
Dans le cas d'une collecte mutualisée (deux FAI, mais un seul realm et un seul radius connus de l'opérateur de collecte), il est nécessaire de prévoir un serveur radius par FAI, et un proxy radius interrogé en frontal par les LAC. Le proxy va lui-même interroger l'un ou l'autre des radius "terminaux" en fonction du login fourni.
La configuration testée jusqu'ici prévoit que c'est mpd5 sur lac-grenode qui détermine quel LNS doit terminer le tunnel L2TP, en fonction de la partie droite du login radius (après le +). Il est possible d'ajouter une troisième interrogation du radius, par lac-grenode, pour que le choix du LNS soit déterminé par le radius du FAI. Chacun des FAI peut alors mettre en place plusieurs LNS et associer dans son radius chaque abonné à un LNS en particulier. C'est le cas de figure décrit ci-dessous. Dans ce cas:
- on élimine les directives FORWARD dans les configurations mpd. Elles sont remplacées par une interrogation du radius.
- c'est le radius qui renvoie un attribut mpd_action=FORWARD REZINE ou mpd_action=FORWARD ILLYSE
- lac-collecte, lac-grenode, lnz-rezine et lns-illyse s'adressent tous au proxy radius
- le radius modifie à la volée les attributs mpd_action pour corriger les valeurs passées à lac-collecte et aux LNS
Le traitement conditionnel sur la base du login radius n'a donc plus lieu dans mpd mais dans le proxy radius.
Source .svg: http://doc.illyse.net/attachments/download/121/bsdrp-lab_2.svg
Configuration
Note: je ne détaille pas les modifications sur rc.conf. Faire le nécessaire pour établir le routage IP entre le proxy radius et les machines devant s'adresser à lui.
mpd5 sur lac-collecte
mpd.conf
default:
create link template ADSL pppoe
set pppoe iface em0
# set link action forward GRENODE
set link enable chap
set auth authname illyse
set auth enable radius-auth
set radius server 172.28.1.2 radiussecret
set link enable incoming
create link template GRENODE l2tp
set l2tp peer 10.0.23.3
mpd5 sur lac-grenode
mpd.conf
default:
create link template COLLECTE l2tp
set l2tp enable length
set l2tp enable outcall
set l2tp self 10.0.23.3
set link no pap chap eap
set link enable pap
set auth enable radius-auth
set radius server 172.28.1.2 radiussecret
# set link action forward REZINE "\\+rezine@grenode\\.collecte$"
# set link action forward ILLYSE "\\+illyse@grenode\\.collecte$"
set link enable incoming
create link template REZINE l2tp
set l2tp peer 10.0.98.4
create link template ILLYSE l2tp
set l2tp peer 10.0.99.5
mpd5 sur lns-illyse/lns-rezine
Note: à épurer. Le range a-t-il encore besoin d'être défini ici? C'est maintenant le radius qui fournit l'adressage ppp.
mpd.conf
default:
set ippool add adsl-illyse 99.99.0.1 99.99.0.99
create bundle template ADSL
set ipcp ranges 99.99.0.254/32 ippool adsl-illyse
set ipcp dns 8.8.8.8
set bundle enable ipv6cp
create link template GRENODE l2tp
set l2tp enable length
set link action bundle ADSL
set link enable chap
set auth authname illyse
# set auth enable internal
set auth enable radius-auth
set radius server 172.28.1.2 radiussecret
set l2tp self 10.0.99.5
set link enable incoming
Conf radius commune: VSA MPD5
On ajoute un dictionnaire pour que freeradius connaisse les attributs spécifiques à MPD5 ("Vendor Specific Attributes"). On a en particulier besoin de l'attribut mpd-action, qui va permettre au radius d'envoyer des directives "forward" à MPD.
/usr/share/freeradius/dictionary.mpd
#----------------------------------------------------------
# dictionary.mpd
VENDOR mpd 12341
BEGIN-VENDOR mpd
ATTRIBUTE mpd-rule 1 string
ATTRIBUTE mpd-pipe 2 string
ATTRIBUTE mpd-queue 3 string
ATTRIBUTE mpd-table 4 string
ATTRIBUTE mpd-table-static 5 string
ATTRIBUTE mpd-filter 6 string
ATTRIBUTE mpd-limit 7 string
ATTRIBUTE mpd-input-octets 8 string
ATTRIBUTE mpd-input-packets 9 string
ATTRIBUTE mpd-output-octets 10 string
ATTRIBUTE mpd-output-packets 11 string
ATTRIBUTE mpd-link 12 string
ATTRIBUTE mpd-bundle 13 string
ATTRIBUTE mpd-iface 14 string
ATTRIBUTE mpd-iface-index 15 integer
ATTRIBUTE mpd-input-acct 16 string
ATTRIBUTE mpd-output-acct 17 string
ATTRIBUTE mpd-action 18 string
ATTRIBUTE mpd-peer-ident 19 string
ATTRIBUTE mpd-iface-name 20 string
ATTRIBUTE mpd-iface-descr 21 string
ATTRIBUTE mpd-iface-group 22 string
ATTRIBUTE mpd-drop-user 154 integer
END-VENDOR mpd
#----------------------------------------------------------
Ce fichier doit être référence dans /etc/freeradius/dictionnary par la ligne suivante:
$INCLUDE /usr/share/freeradius/dictionary.mpd
Proxy radius
FIXME: faire le tri entre chap et pap
/etc/freeradius/clients.conf: définit qui a le droit de s'adresser au radius
client localhost {
ipaddr = 127.0.0.1
secret = radiussecret
require_message_authenticator = no
shortname = localhost
nastype = other # localhost isn't usually a NAS...
}
client 172.28.0.0/22 {
secret = radiussecret
shortname = lan
}
/etc/freeradius/sites-enabled/default: définit le fonctionnement général du radius. Le login radius est retravaillé au début de la section autorize.
- la partie avant le + devient le nouveau login
- la partie entre le + et le @ devient le nouveau realm (et indiquera quel radius final interroger)
- Dans le cas d'un login foo+illyse@grenode.collecte, le radius d'Illyse sera donc interrogé avec le login foo@illyse~~ Non, c'est l'identifiant complet d'origine qui est passé au radius du FAI. Les transformations ci-dessus (le realm, surtout) ne servent qu'à sélectionner les radius de destination dans proxy.conf
La section post-proxy permet de modifier à la volée les attributs retournés par le radius final en fonction de l'IP d'origine de l'interrogation. En pratique, on altère la valeur de l'attribut mpd-action. Cela permet de maintenir le choix du LNS au niveau du radius du FAI (forward ILLYSE ou forward REZINE), tout en indiquant à lac-collecte qu'il doit toujours monter le lien vers Grenode (forward GRENODE):
- si la requête vient de lac-collecte, répondre systématiquement mpd-action=FORWARD GRENODE
- si la requête vient de lac-grenode, ne pas modifier la valeur (=> c'est le user sur le radius du FAI qui détermine le LNS à utiliser) (cas par défaut, rien à configurer)
si la requête vient d'un des LNS, supprimer l'attribut mpd-action (pas de forward, on termine le tunnel)
authorize { if ("%{request:User-Name}" =~ /^(.)+@(.)/) { update request { Stripped-User-Name := "%{1}" Realm := "%{2}" } update control { Proxy-To-Realm := "%{2}" } } preprocess chap mschap digest suffix eap { ok = return } files #ldap expiration logintime pap } authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } digest unix Auth-Type LDAP { ldap } eap } preacct { preprocess acct_unique suffix files } accounting { detail unix radutmp exec attr_filter.accounting_response } session { radutmp } post-auth { exec Post-Auth-Type REJECT { attr_filter.access_reject } } pre-proxy { } post-proxy { if ("%{request:NAS-IP-Address}" =~ /^172.28.3.102/) { update proxy-reply { mpd-action := "forward GRENODE" } } if ("%{request:NAS-IP-Address}" =~ /^172.28.3.105/) { update proxy-reply { mpd-action := "" } } eap }
/etc/freeradius/proxy.conf: définit les deux radius terminaux associés aux realms rezine et illyse.
Note: on peut peut-être simplifier ce fichier en virant la notion de pool
# -*- text -*-
##
## proxy.conf -- proxy radius and realm configuration directives
##
## $Id$
proxy server {
default_fallback = no
}
home_server illyse {
type = auth+acct
ipaddr = 172.28.1.9
port = 1812
secret = radiussecret
}
home_server rezine {
type = auth+acct
ipaddr = 172.28.1.9
port = 1812
secret = radiussecret
}
home_server_pool illyse_pool {
type = fail-over
home_server = illyse
}
home_server_pool rezine_pool {
type = fail-over
home_server = rezine
}
realm illyse {
pool = illyse_pool
secret = radiussecret
nostrip
}
realm rezine {
pool = rezine_pool
secret = radiussecret
nostrip
}
Radius Illyse
Note: configuré pour un backend LDAP. Voir le fichier users plus bas pour ajouter un utilisateur sans LDAP.
/etc/freeradius/sites-enabled/default:
authorize {
if ("%{request:User-Name}" =~ /^(.*)[+]/) {
update request {
Stripped-User-Name := "%{1}"
Realm := "%{2}"
}
}
preprocess
chap
mschap
digest
suffix
eap {
ok = return
}
files
ldap
expiration
logintime
pap
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
digest
unix
Auth-Type LDAP {
ldap
}
eap
}
preacct {
preprocess
acct_unique
suffix
files
}
accounting {
detail
unix
radutmp
exec
attr_filter.accounting_response
}
session {
radutmp
}
post-auth {
exec
Post-Auth-Type REJECT {
attr_filter.access_reject
}
}
pre-proxy {
}
post-proxy {
eap
}
/etc/freeradius/modules/ldap: définition du backend
ldap {
server = "127.0.0.1"
basedn = "ou=users,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR"
filter = "(&(cn=%{Stripped-User-Name:-%{User-Name}})(dialupAccess=yes))"
ldap_connections_number = 5
timeout = 4
timelimit = 3
net_timeout = 1
access_attr = "dialupAccess"
dictionary_mapping = ${confdir}/ldap.attrmap
password_attribute = userPassword
edir_account_policy_check = no
}
/etc/freeradius/clients.conf: définit qui a le droit de s'adresser au radius
Note: dans la mesure ou seul le proxy interroge ce serveur, on doit pouvoir ne laisser que la dernière entrée du fichier.
client localhost {
ipaddr = 127.0.0.1
secret = radiussecret
require_message_authenticator = no
shortname = localhost
nastype = other # localhost isn't usually a NAS...
}
client 172.28.3.102 {
secret = radiussecret
shortname = lac-collecte
}
client 172.28.3.103 {
secret = radiussecret
shortname = lac-grenode
}
client 172.28.3.104 {
secret = radiussecret
shortname = lns-rezine
}
client 172.28.3.105 {
secret = radiussecret
shortname = lns-illyse
}
client 172.28.1.2 {
secret = radiussecret
shortname = zoidberg
}
/etc/freeradius/users: définition des users radius sans LDAP
gee Cleartext-Password := "blah"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 99.99.0.43,
Framed-IP-Netmask = 255.255.255.0,
mpd-action = "forward ILLYSE"