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