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"