PTP est un protocole de tunnel de point à point permettant de créer des réseaux
privés [[wp>Point-to-Point_Tunneling_Protocol]]. Conçut par Microsoft, il est
moins robuste que les solutions VPN récentes comme OpenVPN, IPSec mais
a l'avantage d'être implémenté d'office dans Windows et est plus facilement
accessible que les autres solution de VPN sur certains appareils (HP TouchPad).
Nous alons voir ici comme le mettre en place sur un serveur Debian (Squeeze) en
utilisant le serveur poptop (paquet pptpd
).
Installation et configuration du serveur
# aptitude install pptpd
Adresses
La configuration a lieu dans le fichier /etc/pptpd.conf
. Vous devez
y préciser l'adresse IP privé du serveur ainsi que la plage d'adresse IP
utilisées par les clients. Par exemple pour un serveur ayant pour adresse privé
10.8.1.1 et des clients entre les adresses IP 10.8.1.10 à 10.8.1.20:
localip 10.8.1.1
remoteip 10.8.1.10-20
Utilisateurs
Pour se connecter au serveur les utilisateurs doivent spécifié un nom
d'utilisateur et un mot de passe. Ils sont spécifiés dans le fichier
/etc/ppp/chap-secrets
.
Pour cela pour et pour chaque utilisateur il suffit d'ajouter une ligne comme la suivante:
client server secret IP addresses
monlogin * monmotdepasse *
Règles du pare feux
Le VPN ppptp utilise le port 1723 il faut donc l'ouvrir pour pouvoir s'y
connecter. Ainsi avec ferm
:
table filter {
chain INPUT {
proto tcp dport 1723 ACCEPT;
}
}
Une fois les utilisateurs connectés et si vous considérez que vos utilisateurs sont sures vous pouvez ouvrir les ports en provenance du VPN:
table filter {
chain INPUT {
interface ppp0 ACCEPT;
}
}
Accès internet à travers le VPN
Cela permet aux utilisateurs du VPN d'accéder au reste du réseau et internet à travers le VPN.
Activation du transfert des paquets IP au niveau du noyau
Cela s'effectue via la commande suivante :
# echo 1 > /proc/sys/net/ipv4/ip_forward
Pour le rendre permanent il suffit de décommenter
dans le fichier /etc/sysctl.conf
la ligne :
net.ipv4.ip_forward=1
Règles du pare-feux
Dans un premier temps il faut autoriser le transfert de paquets IP en provenance du VPN. Par exemple avec ferm:
table filter{
chain FORWARD {
interface ppp0 ACCEPT;
}
}
Ain si la translation d'adresse en provenance des adresses du réseau VPN. Par exemple avec ferm :
table nat {
chain POSTROUTING saddr 10.8.1.0/255.255.255.0 MASQUERADE;
}
Mise en place d'un serveur DNS
Lors des connexions internet le serveur DNS est primordial pour associer les URL
avec les adresses IP correspondantes. Afin que les clients puissent utiliser un
service DNS facilement il est possible d'installer le cache de DNS
dnsmasq
:
# aptitude install dnsmasq
Configuration d'un client sous Linux
Pour se connecter au VPN depuis Linux il suffit d'installer le paquet
pptp-linux
:
# aptitude install pptp-linux
La configuration se fait dans les fichiers du répertoire /etc/ppp
. Les
mots de passe et accès sont spécifiés dans le même fichier que pour le serveur
à savoir /etc/ppp/chap-secrets
. Ainsi comme pour l'utilisateur du VPN
précédent:
client server secret IP addresses
monlogin PPTP monmotdepasse *
Ensuite pour facilité la création du tunnel il faut créer un fichier
(mon_vpn
dans notre exemple) dans le répertoire /etc/ppp/peers/
contenant par exemple:
pty "pptp mon_vpn.example.net --nolaunchpppd"
name tblein
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam mon_vpn
On initialise le tunnel via la commande:
# pon mon_vpn
Pour l'arrêter :
# poff mon_vpn
Afin que les connexions passe par le tunnel il suffit de modifier les routes par défaut.
TODO