Mise en place d'un serveur L2TP et d'une authentification RADIUS

Mise en place d'un LNS (L2TP Network Server) et d'une authentification Radius sur du matériel CISCO / Ubuntu sous GNS3.

Mise en place d'un serveur L2TP et d'une authentification RADIUS

Objectif : Mise en place d'un LNS (L2TP Network Server) et d'une authentification Radius sur du matériel CISCO / Ubuntu sous GNS3.

Nous verrons comment configurer un serveur LNS afin d'établir un tunnel L2TP et une session PPP depuis un routeur client, l'objectif étant pour le routeur client d'établir une session PPP depuis un réseau dont nous n'avons pas la gestion (ie. site étranger, 4G d'un autre opérateur etc.)

LNS

Un routeur client établie une session PPP sur un équipement d'extermité appelé LNS (L2TP Network Server).

Les différents sessions sont généralement agrégées en entrée par un LAC (L2TP Access Concentrator) de l'opérateur local, le LAC décide alors d'envoyer au bon serveur LNS la requête PPP. Le LNS authentifie alors l'utilisateur et commence la négotiation PPP, une fois terminée toutes les trames sont envoyées par le LAC au client et au LNS.

Schéma réalisé par l'association FAIMaison :

Sur le routeur qui aura le rôle de LNS, on active vpdn :

vpdn enable

On crée un groupe vpdn pour l'authentification des sessions L2TP :

vpdn-group TUNNELS-LNS
 accept-dialin
  protocol l2tp
  virtual-template 2
 source-ip 192.168.1.1
 local name lns
 l2tp tunnel hello 10
 l2tp tunnel password 0 passwordclient

Dans ce groupe nous spécifions le virtual-template. Ce virtual-template permettra ensuite de créer les virtuals access des sessions PPP :

interface Virtual-Template2
 description lns tunnel
 ip unnumbered Loopback0
 ip mtu 1452
 qos pre-classify
 no keepalive
 ppp mtu adaptive
 no ppp lcp fast-start
 ppp caller name LNS
 ppp authentication chap
 ppp ipcp dns 8.8.8.8
 

Configuration des paramètres RADIUS

Toujours sur le routeur LNS :

aaa group server radius RADIUS-AUTH
 server 192.168.1.3 auth-port 1812 acct-port 1813
!
aaa group server radius RADIUS-ACCT
 server 192.168.1.3 auth-port 1812 acct-port 1813
!
aaa authentication login default local-case
aaa authentication ppp default group RADIUS-AUTH
aaa authorization network default group RADIUS-AUTH 
aaa authorization network LOCALONLY local 
aaa accounting update periodic 5
aaa accounting network default
 action-type start-stop
 group RADIUS-ACCT
!
aaa nas port extended
ip radius source-interface Ethernet1/0 
radius-server host 192.168.1.3 auth-port 1812 acct-port 1813 key passwordl2tp
radius-server vsa send authentication

SERVEUR RADIUS

Sur un Linux, ici ubuntu 14 :

sudo apt install freeradius

On autorise ensuite le serveur L2TP à s'authentifier sur le radius :

vi /etc/freeradius/clients.conf

clients CISCO
	client 192.168.1.1 {
	secret passwordl2tp
	}

On crée un compte PPP avec différents paramètres pour le client :
vi /etc/freeradius/users

steve	Cleartext-Password := "passwordradius"
		Framed-Protocol = PPP,
		Framed-IP-Address = 172.16.3.33,
		Frame-IP-Netmask = 255.255.255.0,

On lance ensuite Radius en activant le debug :

freeradius -x

Il s'agit d'une configuration basique du serveur L2TP.

CLIENT (Cisco)

Voici sur le routeur client les paramètres permettant d'établir la session PPP.

l2tp-class L2TP-CONF
 authentication
 hello 10
 password passwordclient
pseudowire-class L2TP-VPN
 encapsulation l2tpv2
 protocol l2tpv2 L2TP-CONF
 ip local interface Vlan1
 ip tos reflect
interface Virtual-PPP1
 description Dial Home Device
 ip address negotiated
 ip mtu 1492
 ip tcp adjust-mss 1420
 keepalive 10 3
 no cdp enable
 ppp authentication chap callin
 ppp chap hostname steve
 ppp chap password 0 passwordradius
 ppp direction callout
 pseudowire 192.168.1.1 1 pw-class L2TP-VPN

VERIFICATION

Depuis le LNS on peut vérifier l'établissement des tunnels L2TP :

lns-lab-1#show vpdn tunnel l2tp 
L2TP Tunnel Information Total tunnels 590 sessions 585
LocTunID   RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
                                                           Count VPDN Group 
160        20381      routeur-client1 est    3.3.3.3   1     TUNNELS-LNS    
164        43347      routeur-client2 est    1.1.1.1   1     TUNNELS-LNS    
234        43551      routeur-client3 est    8.8.8.8    1     TUNNELS-LNS  

Mais aussi des sessions PPP :

lns-lab-1#show users wide
    Line                    User
   0 con 0                   
  Interface    User               Mode         Idle     Peer Address
  Vi3                       routeur-client1@l2tp
  Vi4                       routeur-client2@l2tp
  Vi5                       routeur-client3@l2tp
  Vi6                       routeur-client4@l2tp

On peut aussi suivre l'établissement des sessions en affichant le debug depuis le routeur client ou le routeur LNS :

debug ppp authentication

Voici comment est établi la session PPP via l'interface Virtual-PPP1 :

Dans la réponse du Radius au serveur L2TP est indiqué les différents paramètres du client IP Address/ Routes etc. Il existe de nombreuses autres options utiles. (VRF, MTU etc.)

Puis le LNS fournit les mêmes informations au client sous la forme de PPP IPCP :

Ressources :

https://www.cisco.com/c/fr_ca/support/docs/dial-access/virtual-private– dialup-network-vpdn/20980-vpdn-20980.html

https://wallu.pagesperso-orange.fr/pag-l.htm