VPN L2TP sous FreeBSD

Publié le 08 décembre 2007 par Jean-Dominique Baylac

Woahh ça fonctionne enfin ! Après quelques heures de prises de têtes et un reboot d’une machine ça fonctionne.

Alors si toi aussi tu veux faire du VPN L2TP simplement c’est très facile. Il faut tout d’abord : Le merveilleux daemon mpd (mpd — netgraph multi-link PPP daemon) ensuite un client VPN (ici j’utilise un Zinzin) Par contre il faut modifier légèrement la base des registres pour dégager IPSEC.

Dans \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters il faut créer le DWORD “ProhibitIpSec” et mettre la valeur à 1.

Donc ensuite tu configures ton client VPN sous windows relativement facilement en lui spécifiant l’ip du LNS fraîchement créé.

ensuite sous windows XP, tu reboote ( on sait jamais ça lui fait du bien parfois)

Maintenant la partie intéressante, ce qu’il faut faire sous FreeBSD. J’utilise un FreeBSD 6.1 (pas taper ! ).

Après avoir mis mon arbre de ports à jour, j’ai fait un tour dans /usr/ports/net/mpd4

make all install

maintenant on file dans /usr/local/etc/mpd4

On crée tout d’abord un fichier mpd.conf. Notre fichier se subdivisera en plusieurs partie.

startup:
set global enable tcp-wrapper
set console port 5005
set console ip 127.0.0.1 #on bind la console sur localhost uniquement
set console user username password #on paramêtre l’utilisateur et le mot de passe
set console open

#Ici on charge les interfaces.
default:
load l2tp0
load l2tp1
load l2tp2
load l2tp3
#On configure chaque interface
l2tp0:
new -i ng0 l2tp0 l2tp0
set ipcp ranges 10.0.0.254/32 10.0.0.1/32
load standard #on charge le profil standard
l2tp1:
new -i ng1 l2tp1 l2tp1
set ipcp ranges 10.0.0.254/32 10.0.0.2/32
load standard
l2tp2:
new -i ng2 l2tp2 l2tp2
set ipcp ranges 10.0.0.254/32 10.0.0.3/32
load standard
l2tp3:
new -i ng3 l2tp3 l2tp3
set ipcp ranges 10.0.0.254/32 10.0.0.4/32
load standard
#Ce sont les options standards chargé avec chaque interfaces
standard:
set iface disable on-demand
set bundle disable multilink
set link yes acfcomp protocomp
set link no pap chap
set link enable chap chap-md5 chap-msv1 chap-msv2
set link keep-alive 60 180
set ipcp yes vjcomp
set ipcp dns 172.22.10.1 #Paramètre ip du serveur DNS
set iface enable proxy-arp
set bundle disable compression
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e128
set ccp yes mpp-stateless
set bundle yes crypt-reqd
set l2tp self 172.22.10.1 #Adresse du LNS
set l2tp enable incoming #On autorise les appels entrants
set l2tp disable originate
set iface enable tcpmssfix
log +all #Très pratique pour avoir les infos dans /var/log/mpd.log

Maintenant on crée un fichier mpd.links

l2tp0:
set link type l2tp
l2tp1:
set link type l2tp
l2tp2:
set link type l2tp
l2tp3:
set link type l2tp

et enfin on crée un fichier mpd.secrets

user motdepasse

On peut aussi utiliser un serveur radius pour gérer l’authentification de nos utilisateurs.

On rajoute cela dans /etc/syslogd.conf et on crée le fichier et on HUP le syslogd

!mpd
*.* /var/log/mpd.log

Ensuite on ajoute dans /etc/rc.conf

mpd_enable=”YES” 

Et on connecte son client VPN et tout cela simplement.

Problèmes rencontrés au cours de la mise en place.

- J’utilisais une vieille version de MPD et j’obtenais une erreur. J’ai mis à jour mes ports.

- Un reboot du serveur sous freebsd à été nécessaire, disont que ng_l2tp fonctionnait pas top, sans doute lié à l’utilisation des versions anciennes de MPD.

- Problème avec windows avec IPSEC ( corrigé après quelques recherches)

A quoi peut servir cette manipulation.

- Créer un LNS pour gérer de la collecte ADSL (expérimental quand même)

L’architecture ADSL tourne encore pour certain avec des LNS ( L2TP network server). En général les FAI déploient des Cisco 7200 VXR pour assurer cette fonction. Il est “encore possible” d’acheter de la collecte IP adsl chez un N3uf telecom ou France Telecom et ainsi livrer de l’adsl dans tout le territoire.  J’ai retrouvé un vieux document  expliquant comment la collecte ip ADSL était livré au FAI stasCIPA2.pdf

- Relier des machines externes à votre lan interne