Serveur VPN PPTP avec MPD

Voici une des méthodes permettant de monter un serveur VPN PPTP :
Il s'agit de MPD pour Multi link PPP Daemon.
L'avantage est qu'il permet de faire de l'encryption.
De plus, MPD ne gère pas seulement le PPTP, mais aussi PPPOE, et peut fonctionner aussi en tant que client PPTP.

Pour l'installer, faire simplement :

$ cd /usr/ports/net/mpd  
$ make install clean  

Ensuite, 3 fichiers sont à éditer : mpd.conf, mpd.links et mpd.secret
Ces fichiers se trouvent normalement dans /usr/local/etc/mpd

Voici un exemple de mpd.conf :

default:  
        load pptp0  
        load pptp1  
        load pptp2  

pptp0:  
        new -i ng0 pptp0 pptp0  
        set ipcp ranges 10.2.0.1/32 10.2.0.2/32  
        load pptp  
pptp1:  
        new -i ng1 pptp1 pptp1  
        set ipcp ranges 10.2.0.1/32 10.2.0.3/32  
        load pptp  
pptp2:  
        new -i ng2 pptp2 pptp2  
        set ipcp ranges 10.2.0.1/32 10.2.0.4/32  
        load pptp  

pptp:  
#       new -i ng0 pptp pptp  
        set iface disable on-demand  
        set iface enable proxy-arp  
        set iface idle 1800  
        set iface enable tcpmssfix  
        set bundle enable multilink  
# enable TCP-Wrapper (hosts_access(5)) to block unfriendly clients  
#       set bundle enable tcp-wrapper  
# use RADIUS servers   
#       load radius  
        set link yes acfcomp protocomp  
        set link no pap chap  
        set link enable chap  
        set link keep-alive 10 60  
        set link mtu 1460  
        set ipcp yes vjcomp  
#       set ipcp ranges 10.2.0.1/32 10.2.0.10/32  
        set ipcp dns 10.2.0.1  
#       set ipcp nbns 10.2.0.1  
#  
# The five lines below enable Microsoft Point-to-Point encryption  
# (MPPE) using the ng_mppc(8) netgraph node type.  
#  
        set bundle enable compression  
        set ccp yes mppc  
        set ccp yes mpp-e40  
        set ccp yes mpp-e128  
        set ccp yes mpp-stateless  

Pour mpd.links :

pptp0:  
        set link type pptp  
        set pptp self 192.168.1.1  
        set pptp enable incoming  
        set pptp disable originate  
pptp1:  
        set link type pptp  
        set pptp self 192.168.1.1  
        set pptp enable incoming  
        set pptp disable originate  
pptp2:  
        set link type pptp  
        set pptp self 192.168.1.1  
        set pptp enable incoming  
        set pptp disable originate  

Dans cet exemple, le serveur PPTP dispose d'une carte réseau configurée avec l'adresse 192.168.1.1.
Son adresse du réseau VPN sera 10.2.0.1,
et seuls 3 clients simultanés peuvent être connectés avec les adresses 10.2.0.2 , 10.2.0.3 et 10.2.0.4.
A chaque client, une interface y sera associée.
ng0 pour le premier client, ng1 pour le deuxième et ng2 pour le troisième.

Si on le souhaite, on peut tout à fait ajouter le nombre de clients PPTP qu'on veut.
La limite sera a priori, sur le nombre possible d'interface netgraph c'est à dire "ng".

Viens ensuite un exemple de fichier mpd.secret contenant la liste des utilsateurs et leur mot de passe :

fred            "fred-pw"  
joe             "foobar"        192.168.1.1  
bob             "\x34\"foo\n"   192.168.1.10/24  
sal             "yipee"         192.168.1.254  

Sur chaque ligne, le login en 1ère colonne et le mot de passe en 2ème colonne sont obligatoires.
La 3ème colonne est optionnelle et correspond à l'adresse IP du client qu'on autorise pour le login concerné.

Pour récupérer les logs syslog de mpd, vous pouvez modifier votre /etc/syslog.conf :

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

Si vous utilisez syslog-ng, vous pouvez modifier votre /usr/local/etc/syslog-ng/syslog-ng.conf
et ajouter ces 3 lignes :

destination mpd { file("/var/log/mpd.log" owner("root") group("wheel") perm(0640)); };  
filter f_mpd { program("^mpd$"); };  
log { source(src); filter(f_mpd); destination(mpd); };  

Il ne vous reste plus qu'à lancer mpd
Ajouter :
mpd_enable="YES" dans votre /etc/rc.conf

Puis

$ /usr/local/etc/rc.d/mpd.sh start  

Source BSDMon

Ajouter un commentaire

  • Votre courriel ne sera jamais publié