La configuration suivante permet de créer un serveur VPN sur votre routeur tournant sous OpenWrt. Les options utilisées ici vous permettront de vous connecter au VPN depuis un poste Windows en utilisant le client VPN fourni par Window.
Le fichier /etc/ppp/options
Il contient la configuration commune à toutes les connections PPP.
# désactive les compressions et autres contrôles de connection
noaccomp
nopcomp
nocrtscts
lock # garanti un accès exclusif sur l'interface réseau
maxfail 0 # en cas d'échec, recommence à l'infini
Le fichier /etc/ppp/options.pptpd
Dans ce fichier se trouvent les options du serveur pptp.
Pour fonctionner, le vpn doit être sur un réseau différent de celui de votre LAN.
logfile /tmp/pptp-server.log
192.168.99.1: # L'adresse ip du serveur
auth
name "*"
lcp-echo-failure 3
lcp-echo-interval 60
default-asyncmap
mtu 1482
mru 1482
nobsdcomp
nodeflate
nodefaultroute
proxyarp
ipparam mon_vpn # le nom donné à la connection dans les scripts ip-up et ip-down.
# requis pour que l'on puisse se connecter via une connection vpn "Windows".
mppe required,no40,no56,stateless
require-mschap-v2
refuse-chap
refuse-mschap
refuse-eap
refuse-pap
ms-wins 192.168.99.100 # Si vous disposez d'un serveur wins
Le fichier /etc/ppp/ip-up.d/mon_vpn
Ce fichier ajoute une règle iptable pour autoriser le traffic de la nouvelle connexion.
if [ $6 = "mon_vpn" ]; then
/usr/sbin/iptables -A FORWARD -i $1 -j ACCEPT
exit 0
fi
Le fichier /etc/ppp/chap-secrets
Il contient la liste des utilisateurs autorisés à se connecter au vpn.
#USERNAME PROVIDER PASSWORD IPADDRESS
nom_login * mon_mdp 192.168.99.20
Le fichier /etc/init.d/S51pptpd
Ce script permet de lancer le serveur vpn au démarrage du routeur. Il s'occupe de charger les modules nécessaires à l'établissement des connections et à leur filtrage éventuel par iptables.
#!/bin/sh
BIN=pptpd
DEFAULT=/etc/default/$BIN
RUN_D=/var/run
PID_F=$RUN_D/$BIN.pid
[ -f $DEFAULT ] && . $DEFAULT
case $1 in
start)
mkdir -p $RUN_D
for m in arc4 sha1 slhc ppp_generic ppp_async ppp_mppe_mppc ip_conntrack_proto ip_nat_proto_gre ip_conntrack_proto_gre ip_gre ip_nat_pptp ip_conntrack_pptp; do
insmod $m >/dev/null 2>&1
done
$BIN $OPTIONS
;;
stop)
[ -f $PID_F ] && kill $(cat $PID_F)
;;
*)
echo "usage: $0 (start|stop)"
exit 1
esac
exit $?