Mise en oeuvre d’un serveur PPTP sous LINUX avec POPTOP PPTPD

Testé sur REDHAT LINUX 8, mais devrait fonctionner de la même manière sur les distributions REDHAT LIKE comme FEDORA.
Pour une fedora récente ou une cento récente, voir la note en fin d’article pour l’installation.

Pré requis

-Un abonnement Internet avec une adresse IP fixe ( FREE propose une ip fixe gratuite, WANADOO propose une option payante pour ce service ).
Cette connexion doit être lancé au démarrage avant de démarrer POPTOP.
Si vous avez un routeur Internet, il faudra rediriger des ports vers le serveur LINUX ( cela sera expliqué plus loin ).

-Un PC fonctionnant sous Linux installé et opérant comme passerelle Internet

Schéma du réseau

Le schéma de principe

Installation

Allez sur le site du projet POPTOP http://www.poptop.org

site poptop

Allez dans la zone de téléchargement ( Downloads ) et récupérez les rpms suivants :
-dkms-2.0.2-1.noarch.rpm
-kernel_ppp_mppe-0.0.4-2dkms.noarch.rpm
-ppp-2.4.3-0.cvs_20040527.1.i386.rpm ( pptpd nécessite un ppp version 2.4 minimum )
-pptpd-1.2.1-1.i386.rpm

Avant d’installer ces paquets, il vous faut installer le paquet kernel-source correspondant à votre noyau actuel ( uname -r ) et créez un lien /usr/src/linux pointant sur ces sources. Ils seront utiles pour la création du module kernel_ppp_mppe.

Il vous faudra aussi la commande patch si elle n’a pas été installée avec votre système.

Installez les paquets dans l’ordre que j’ai donné ci-dessus à cause des dépendances l’un de l’autre. Utilisez la commande rpm -Uvh nom_du_paquet.rpm pour ceci car il y a de fortes chances que vous ayez déjà un paquet ppp sur la machine.

La création du module du noyau est assistée par dkms et ne devrait pas poser de problèmes.

Une fois les paquets installés, vérifiez avec la commande ntsysv que pptp sera démarré à chaque démarrage du PC.

Configuration

Il vous reste à paramétrer le logiciel POPTOP avant de le lancer.

J’ai modifié les dernières lignes du fichier /etc/pptpd.conf comme ceci ( je n’ai pas retouché le reste du fichier )


# commenté car non utilisé, j'utilise le proxyarp dans la suite de la conf
#localip 192.168.1.9
# Adresses IP attribuées par le serveur pour les clients qui se connectent, ici max 5 clients
remoteip 192.168.1.10-14

Modifier ensuite les deux fichiers suivants situés dans /etc/ppp

– fichier options.pptpd ( j’ai enlevé tous les commentaires, pour la doc, mais en pratique je vous conseille de les conserver, cela peut être utile )


refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp

– fichier chap-secrets contenant une entrée par utilisateur.


utilisateur1 pptpd motdepasse *

L’étoile indique que l’adresse ip sera attribuée par le serveur dynamiquement. Si vous voulez une ip fixe, vous pouvez la renseigner ici.

Vous trouverez en fn fichiers joints, les fichiers que j’utilise.

Démarrer le service pptpd ( service pptpd start ), le serveur est actif.

Pour visualiser les connexions, vous pouvez vous référer aux fichiers /var/log/messages et /var/log/secure qui affichent des infos intéressantes quand les clients se connectent.

Ouverture et redirection de ports

-Si votre machine LINUX est le firewall de votre réseau, il faut permettre l’accès pptp sur l’interface internet.

Pour ce faire il faut autoriser le port 1723 en tcp et le protocole GRE. Voici les commandes à taper :

iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT

-Si votre machine LINUX est derrière un routeur ADSL ou un firewall, vous avez deux possibilités.

1- Votre routeur accepte une machine en DMZ, et il suffit de lui donner l’adresse ip de votre machine LINUX. Ceci permet de rediriger tout le traffic entrant sur l’ip publique du routeur vers votre station LINUX.

2- Votre routeur n’a pas cette simplification, et il vous faut alors rediriger le traffic tcp sur le port 1723 et le protocole GRE vers l’adresse ip de votre LINUX.

Pour la gestion des règle du firewall, il est bon de savoir que le pptpd crée une nouvelle interface ppp à chaque client connecté ( ppp0, ppp1, ppp2, etc…).

Vous pouvez donc gérer ces multiples interfaces en utilisant dans vos règles iptables la dénomination ppp+ qui veut dire, ppp_peu_importe_la_valeur.

Attention toutefois dans le cas où vous êtes connecté en ADSL via modem ethernet, car votre connexion utilise ppp0.

Pensez-y et vérrouillez le traffic de ppp0 vers l’interface LAN avant d’autoriser un traffic quelconque avec une commande utilisant ppp+.

Test

Paramétrez un client pptp ( par exemple un XP avec le document donné en annexe ) et connectez le à votre réseau.

Sur ce poste une fois connecté, passez en ligne de commandes et vérifiez que tout fonctionne.

la commande ipconfig vous montrera l’adresse ip privée attribuée par le serveur POPTOP.

la commande ping 192.168.1.10 testera la connectivité avec le serveur Interne que vous voulez joindre.

Problèmes rencontrés

Problème de MTU

J’ai rencontré un problème sur un pptp derrière une connexion adsl wanadoo via un modem ethernet.

Le problème se présentait de la manière suivante :

La connexion pptp se passe à merveille, je me connecte et je peux pinguer les machines correctement.

Par contre, dès que j’essaie d’accéder à une page web ou un autre service d’une machine du réseau distant, la connexion s’établit mais la liaison semble ensuite figée.

J’avais déjà rencontré un problème équivalent, ce qui m’a guidé vers le MTU de la liaison pptp. Le MTU est la taille maxi des paquets émis, si il est trop grand ou trop petit, cela pose des problèmes.

J’ai constaté que le MTU du lien ppp1 correspondant à ma connexion était fixé à 1396. Si je force le mtu par la commande ifconfig ppp1 mtu 1450, les connexions fonctionnent correctement.

J’ai essayé sans succès de fixer la valeur dans le fichier /etc/ppp/options.pptpd en activant les paramètres suivant :

mtu 1450
mru 1450

Il a donc fallu trouver un moyen de forcer le MTU après la connexion.

Pour faire des modifications post connexion, il y a un script /etc/ppp/if-up, mais ce script conseille de créer un fichier /etc/ppp/if-up.local pour ne pas toucher au fichier d’origine.

Pour cela, voici la procédure :


touch /etc/ppp/ip-up.local
chmod +x /etc/ppp/ip-up.local

Editer ensuite le fichier et le configurer comme ceci :


INTERFACE=$1
#
# Cette valeur est envoyée par le script if-up
# Elle correspond à l'interface ppp qui vient de se connecter
#
# Ma connexion ADSL crée une interface ppp0
# Il ne faut donc pas modifier le MTU sur cette connexion
#
if [ $INTERFACE = "ppp0" ]; then
echo Pas de changement sur ppp0
else
echo Modification MTU
/sbin/ifconfig $1 mtu 1450
fi

Redémarrer ensuite pptpd avec les commandes suivantes :

service pptpd stop
puis
service pptpd start

Problème cryptage Windows 2000. Ajout du 08-03-2006

Si lors de la connexion avec un windows 2000 vous obtenez une « erreur 619 », cela vient d’un manque d’une mise à jour Microsoft.

Quand vous lancez le Windows Update, sélectionnez « personnalisé » et vérifiez s’il ne vous manque pas ces deux mises à jour :
– Mise à jour des certificats racine
– Package de fournisseur de services cryptographiques pour cartes à puce de base Microsoft : x86 (KB909520)

Une fois installé, tout rentre dans l’ordre et le VPN se monte correctement.

Problème d’installation sur CentOS et Fedora. Ajout du 24-03-2006

Installation sur des distribs CentOS ou Fedora récentes.

Sur les distribs récentes, il n’y a plus de paquets kernel-source ou kernel-sourcecode.

La compilation du module mppe demande ces sources.

En fait il faut utiliser la procédure suivante:

uname -r

Cette commande vous indique le type de kernel et sa version.

Suivant si vous avez un kernel monoprocesseur ou multiprocesseur ( smp ) utilisez la commande qui convient


yum install kernel-devel
ou
yum install kernel-smp-devel

Continuez ensuite la procédure « normale » en installant dkms et kernel_ppp_mppe

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.