(Attention, le serveur de tests tourne une FreeBSD-5.x, donc je ne sais pas si cela fonctionne sous un FreeBSD-4.x et/ou s'il faut recompiler des choses dans son kernel chéri :-) )

Voici en quelques lignes comment obtenir un serveur de tunnels PPTP (compatible nativement avec des clients Windows XP et consorts et Mac OSX).

Tout d'abord, installer le port MPD :

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

Dans /usr/local/etc/rc.d/, copier le fichier mpd.sh.sample en mpd.sh

Personnellement j'ai modifié le script mpd.sh afin que la console de MPD ne soit lancée que sur localhost en ajoutant le flag '-a' (la console tourne par défaut sur le port 5005, sans mot de passe)

Ce qui donne

-                       "${DAEMON}" -b -p "${PIDFILE}"
+                       "${DAEMON}" -b -a 127.0.0.1 -p "${PIDFILE}"

Dans le répertoire /usr/local/etc/mpd/ se trouvent les 3 fichiers nécessaires au bon fonctionnement de MPD : mpd.conf, mpd.links et mpd.secret

############
# mpd.conf #
############

default:
        load pptp01
        load pptp02
        load pptp03
        load pptp04
        load pptp05

pptp01:
        new -i ng01 pptp01 pptp01
        set ipcp ranges 10.0.0.254/32 10.0.0.001/32
        load pptp_default

pptp02:
        new -i ng02 pptp02 pptp02
        set ipcp ranges 10.0.0.254/32 10.0.0.002/32
        load pptp_default

pptp03:
        new -i ng03 pptp03 pptp03
        set ipcp ranges 10.0.0.254/32 10.0.0.002/32
        load pptp_default

pptp04:
        new -i ng04 pptp04 pptp04
        set ipcp ranges 10.0.0.254/32 10.0.0.002/32
        load pptp_default

pptp05:
        new -i ng05 pptp05 pptp05
        set ipcp ranges 10.0.0.254/32 10.0.0.002/32
        load pptp_default

pptp_default:
        set iface disable on-demand
        set bundle disable multilink
#       set bundle max-logins 1
        set iface enable proxy-arp
        set iface enable tcpmssfix
        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 IP_de_votre_serveur_DNS_resolver
#       set ipcp nbns IP_de_votre_serveur_DNS_resolver
#       set bundle enable compression
        set ccp yes mppc
        set ccp yes mpp-e40
        set ccp yes mpp-e56
        set ccp yes mpp-e128
        set ccp yes mpp-stateless
        set bundle yes crypt-reqd
#       log +ccp2 +ccp3 +pptp2 +pptp3



#############
# mpd.links #
#############

pptp01:
        set link type pptp
        set pptp self IP_publique_du_serveur_VPN
        set pptp enable incoming
        set pptp disable originate

pptp02:
        set link type pptp
        set pptp self IP_publique_du_serveur_VPN
        set pptp enable incoming
        set pptp disable originate

pptp03:
        set link type pptp
        set pptp self IP_publique_du_serveur_VPN
        set pptp enable incoming
        set pptp disable originate

pptp04:
        set link type pptp
        set pptp self IP_publique_du_serveur_VPN
        set pptp enable incoming
        set pptp disable originate

pptp05:
        set link type pptp
        set pptp self IP_publique_du_serveur_VPN
        set pptp enable incoming
        set pptp disable originate
##############
# mpd.secret #
##############


user1		password1
user2		password2
user3		password3
user4		password4
user5		password5

Quelques petites explications concernant la configuration du fichier mpd.conf :



MPD ne sachant pas allouer dynamiquement une IP, il faut donc la spécifier tunnel par tunnel (ici, on ne pourra avoir que 5 tunnels actifs simultanément, mais rien n'empêche de créer d'autres entrées dans la configuration) ; prendre garde donc aux collisions dans le plan d'adressages IP côté client, peut être choisir quelque chose de plus judicieux que 10.0.0.x/24

J'ai modifié mon /etc/syslog.conf afin que MPD loggue dans son propre fichier

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

(ne pas oublier de faire un touch du fichier et de redémarrer syslogd ;) )

Au démarrage de MPD, les interfaces ng01 à ng05 seront “statiquement” créées, visibles par un simple 'ifconfig'.

A-pu-ka tester en configurant une connexion VPN toute simple, avec les réglages pas défaut dans votre XP préféré (pour MacOSX, c'est plus simple : il n'y a pas de réglages ni options de configuration :) )

A noter qu'il peut être nécessaire de configurer un peu de routage ou du nat selon la configuration réseau “d'arrivée”, à l'autre extrémité du VPN.

Cya – /SClo
sclo(at)teaser.fr

freebsd/vpn_avec_mpd.txt · Last modified: 2010/01/12 13:29 (external edit)