---------------------- révision du 15/04/2004 --------------------- Mise en place d'un réseau privé virtuel VPN sous protocole PPTP PPTP et le tunneling Qu'est ce que le tunneling Quand on passe dans un tunnel, personne à l'extérieur de ce tunnel ne peut nous voir. Deuxièmement, un tunnel à deux extrémités. Si l'on rentre d'un côté, on ne peut sortir que par l'autre (à moins de faire demi-tour). Appliqué au domaine des réseaux le tunneling permet dans un environnement aussi dense que l'Internet de: - ne pas être lu par les autres usagés d'Internet (les paquets sont cryptés) - d'envoyer des paquets à l'autre bout du tunnel comme s'il s'agissait d'un simple câble de liaison Ethernet et donc d'une liaison locale. Pourquoi utilisé ce protocole PPTP est utilisé par Microsoft pour permettre à des postes Windows de se connecter par l'intermédiaire d'un Réseau Privé Virtuel (Virtual Private Network, in english). Le but de cet article est de relier via le voisinage réseau de Microsoft un ordinateur connecté sur l'Internet avec un réseau local (LAN). Le protocole PPTP Le protocole PPTP (Point to Point Tunneling Protocol)est issu de la RFC2637 (http://www.ietf.org/rfc/rfc2637.txt) Ce protocole est basé sur l'authentification ms-chap Il présente des trous de sécurités. Voici quelques remarques issues de l'internet. Ces attaques sont liées à des choix de conception peu rigoureux ou à des erreurs de mise en oeuvre. L'attaque contre MS-CHAP v1 est liée à un protocole défi-réponse mal conçu et à la décision de Microsoft de recourir à un mot de passe pour en assurer la sécurité. On ne doit, en aucun cas, utiliser MS-CHAP v1. Les attaques contre MS-CHAP v2 sont également liées à la décision de Microsoft de recourir à un mot de passe pour toutes les fonctions de sécurité. Avec l'arrivée des protocoles d'échange de clés tels DH-EKE et SPEKE, qui utilisent des mots de passe et ne sont pas vulnérables au programme de craquage de mot de passe hors ligne, on assistera certainement à l'abandon des systèmes d'authentification par mot de passe qui n'utilisent pas ces techniques plus sécuritaires. De plus, de nombreux responsables de mise en oeuvre de RPV se tournent davantage vers IPSec pour assurer la sécurité de leur système et l'authentification d'utilisateur... Donc pour être sérieux, je vous recommande d'utiliser IPSec. (Client non fourni par Microsoft). En ce qui nous concerne, nous utiliserons ms-chap-v2 Installation du serveur (agent) sous Linux : pptpd 3 étapes sont nécessaires : - installer le serveur pptpd et le client pour linux : linux-pptp - patcher le démon ppp - patcher votre noyau linux *Installer le package pptpd : download : http://www.moretonbay.com/vpn/download_pptp.html ou sur le site http://www.poptop.org/ ou si vous êtes sous Débian un simple : #apt-get install pptpd devrait suffire *Patcher le démon ppp patcher le démon pppd pour qu'il puisse gérer le l'encryptage et l'authentification Microsoft MSCHAPv2/MPPE En tant que root : Aller dans ou creer le réperoire /usr/local/src/ #cd /usr/local/src/ suivant la version de votre noyau ( taper la commande : $uname -a ,pour voir la version de votre noyau), télécharger le bon source. en ce qui me concerne c'est un 2.4.18. récupérer les sources: - ppp sur ftp://cs.anu.edu.au/pub/software/ppp/ ou sur http://www.advancevpn.com/public/ ppp-2.4.1.tar.gz la bibliothèque SSl http://maga.di.unito.it/security/resources/mirrors/SSLeay/SSLeay090/SSLeay-0.9.0.tar.gz - le patch sur http://www.advancevpn.com/public/ ppp-2.4.1-openssl-0.9.6-mppe-patch.gz Mise en forme des sources: Détarer ppp-2.4.1.tar.gz et SSLeay-0.9.0.tar.gz : # tar xvzf ppp-2.4.1.tar.gz # tar xvzf SSLeay-0.9.0.tar.gz Déziper ppp-2.4.1-openssl-0.9.6-mppe-patch.gz # gunzip ppp-2.4.1-openssl-0.9.6-mppe-patch.gz puis #cp SSLeay-0.9.0/crypto/rc4/rc4.h ppp-2.4.1/linux/ #cp SSLeay-0.9.0/crypto/rc4/rc4_enc.c ppp-2.4.1/linux/ #patch -p0 < ppp-2.4.1-openssl-0.9.6-mppe-patch #cd ppp-2.4.1 Compilation : #./configure #make Remplacement de l'ancien pppd #cp /usr/sbin/pppd /usr/sbin/pppd.old (sauvegarde de l'ancien) #cp pppd/pppd /usr/sbin/ ok passons à la suite *Patcher le noyau : #cd /usr/src Récupérer le patch : http://www.advancevpn.com/public/linux-2.4.16-openssl-0.9.6b-mppe.patch.gz Déziper le : #gunzip linux-2.4.16-openssl-0.9.6b-mppe.patch.gz ensuite : #cd /usr/src/linux #patch -p1 < ../linux-2.4.16-openssl-0.9.6b-mppe.patch Compiler le noyau pour avoir les options suivantes en plus : CONFIG_PPP=m CONFIG_PPP_FILTER=y CONFIG_PPP_ASYNC=m CONFIG_PPP_SYNC_TTY=m CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m CONFIG_PPP_MPPE=m CONFIG_UNIX98_PTYS=y #make menuconfig , ou make xconfig (selon vos goûts) #make dep 1>/dev/null && make clean 1>/dev/null && make bzImage 1>/dev/null #make modules 1>/dev/null && make modules_install 1>/dev/null #cp arch/i386/boot/bzImage /boot/kernel-versionx Modifier lilo.conf pour prendre en compte le nouveau noyau et relancer lilo (comment faire ? : man lilo ) #vi /etc/lilo.conf #lilo Bon et bien, on reboot !! (sauf si vous n'avez eu besoin de recompiler que les modules) Configuration du serveur PPTP :pptpd fichier de conf : /etc/pptp.conf +------------------------------------------------- # début option /etc/ppp/pptpd-options #options qui seront passees a ppp debug #un peu de log de pptpd #dans /var/log/syslog localip 192.168.68.100 #adr. IP virtuel de notre # serveur a la connection remoteip 192.168.68.110-150 #spool d'adr. IP que l'on #donnera aux clients #fin +------------------------------------------------- fichier: /etc/ppp/pptpd-options pour pppd ------------------------------------------------- # debut debug # un peu de log de pppd dans syslog name PPTP # id pour /etc/ppp/chap-secrets require-chapms-v2 # chap ms v2 requis +chap # chap +chapms # chap Microsoft +chapms-v2 # chap Microsoft version 2 (sécurité +) mppe-40 # clé de 40 bits mppe-128 # clé de 128 bits mppe-stateles # renegotiation des clés a chaque #pacquet (securite +) netmask 255.255.255.0 nodefaultroute # ne pas creer de route par default # sur cette liaison proxyarp # ajouter cette connection dans #la table ARP (adr. MAC) lock # acces au device ppp réservé à pptpd nobsdcomp # pas de compression de type bsd nodeflate # pas de compression de type deflate mtu 1000 # taille maximun d'un paquet sur ce réseau mru 1000 # renseigne l'hote distant sur la taille #maxi des paquets auth # authentification obligatoire # fin du fichier ---------------------------------------------------------------- gestion des mots de passes d'authentification. fichier /etc/ppp/chap-secrets --------------------------------------------------- #debut ------- autres login et mot de passe ------- pour vos accès Internet par exemple # client server secret IP addresses nom_de_login PPTP mot_de_passe * un-autre-nom PPTP passe_de_mot * ------- etc ----------- #fin du fichier ---------------------------------------------------- noter que dans /etc/ppp/pptpd.options, la variable name correspond au champ 'server' de /etc/ppp/chap-secrets Ok, on y est. On peu maintenant relancer le démon pptpd: # /etc/init.d/pptpd stop # /etc/init.d/pptpd start Bon et maintenant, il nous faut trouver un ou plusieurs clients. Lançons une opération marketing !!! (prenez votre téléphone et appeler un pote qui à Windows et un accès internet) ou alors, si vous avez la chance d'avoir plusieurs bécanes en réseau chez vous, vous pouvez aussi faire quelques simulations par votre réseau Ethernet. Installation et configuration d'un client Microsoft Windows (98): Installation : Poste de travail --> Panneau de config --> Ajout/suppression de programmes --> onglet |installation de Windows | : - communications - (détail) [*] réseau privé virtuel (OK) On reboot L'install n'est pas fini car ce programme est bugé. Il faut télécharger le patch DUN14-98.exe ou DUN14-SE.exe (suivant la version de Windows) à l'adresse suivante : http://www.advancevpn.com/public/ Exécuter le programme On reboot Configuration : Poste de travail --> Acces reseau a distance --> |clic droit sur l'icone du vpn| nom ou adresse de l'hote : mettre l'adresse IP du server vpn se connecter en utilisant : microsoft VPN adapter |onglet type de serveur| [*] se connecter à un réseau [*] activer la compression logicielle [ ] demander un mot de passe crypte [ ] demander le cryptage des données [*] créer un journal pour cette connexion [ ] NetBEUI [ ] IPX [*] TCP/IP |clic sur paramètres TCP/IP| (*) adresse IP attribuée par le serveur ( ) (*) adresse de serveur de nom attribuées ..* ( ) [ ] utiliser la compression d'entête IP [ ] utiliser la passerelle par défaut... OK c'est bon. *: nous verrons plus tard s'il faut spécifier une adresse de server WINS pour faire fonctionner notre voisinage réseau avec samba Un petit essai pour voir si ça marche : prenons un exemple par exemple : nous avons dans /etc/pptpd.conf localip 192.168.68.100 remoteip 192.168.68.110-150 Et un pote sur internet à qui on a fait installer le client windows. On se connecte sur Internet et à nos téléphones portables (ou autres moyens moins chers de communication) Demander lui de choisir un nom d'utilisateur et un mot de passe pour établir la connexion PPTP chez vous. Par exemple toto et son-mot-de-passe. Ensuite, vous éditez le fichier /etc/ppp/chap-secrets et ajouter la ligne : toto PPTP son-mot-de-passe * Vous vous renseignez sur votre adresse IP attribuée par votre fournisseur d'accès. En ligne de commande par exemple : $/sbin/ifconfig ce qui donne: ppp0 Link encap:Point-to-Point Protocol inet addr:196.35.25.17 P-t-P:196.35.25.16 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 d'ou notre adresse ip : 196.35.25.17 (ceci est un exemple !!!) En résume : PC1 : server PPTP (c'est vous) PC2 : client windows (votre potau) 196.35.25.17 +------------+ 212.36.22.25 +-----------------| Internet |-----------------+ | +------------+ | | | 196.35.25.18 212.36.22.26 +--+--+ | | PC1 | | +-----+ +--+--+ | PC2 | +-----+ Demandez à votre collègue d'ouvrir la connexion vpn ( en cliquant sur l'icône vpn dans la fenêtre accès réseau à distance) et de mettre comme adresse de connexion votre adresse IP vue de l'Internet, soit ici dans l'exemple 196.35.25.18, puis son nom et son mot de passe (pptp). Bon alors, ça marche !! Au quel cas vous avez maintenant une deuxième interface (virtuelle) ppp en route soit : ppp0 Link encap:Point-to-Point Protocol inet addr:196.35.25.18 P-t-P:196.35.25.17 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 ppp1 Link encap:Point-to-Point Protocol inet addr:192.168.68.100 P-t-P:192.168.68.110 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1000 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 faites des essais de ping. PC1 : ping 192.168.68.110 et PC2 : ping 192.168.68.100 Bon ben voila, vous étés relié par un tunnel, et après ? vous pouvez faire du VNC, ssh, telnet etc... Mais c'est pas encore gagné pour le réseau Microsoft (voisinage réseau). Pour ça il faut aller voir le chapitre plus loin... Si vous n'avez pas de copain sur Internet et que vous avez un réseau local alors rien ne vous empêche de faire la manipe PC1 : serveur PPTP PC2 : client windows LAN 192.168.0.0 -------+------------------------+------------------ | | | | 192.168.0.1 192.168.0.2 +--+--+ +--+--+ | PC1 | | PC2 | +-----+ +-----+ connecter le client vpn à 192.168.0.1 vérifiez les ajouts d'interfaces ppp virtuelles avec leurs adresses ip. Vérifiez les pings et les tables de routage. Le client Linux , linux-pptp : Installer le client pptp (pptp-linux): soit http://pptpclient.sourceforge.net/ ou sur Débian : #apt-get install pptp-linux Ensuite, il faut patcher le démon pppd pour qu'il puisse prendre en charge ms-chapv2 comme pour le serveur. Donc refaite la manipe de recompilation de ppp comme pour le serveur. Configuration: Le client pptp est utilisé par ppp : pppd -pty "pptp serveur.site.net --nolaunchpppd" ou serveur.site.net est l'adresse IP du serveur pptp a joindre. La démarche est à peu près identique à celle que l'on aurait si on voulait initier une connexion à internet. Pour se connecter à notre VPN, on aura juste à taper en ligne de commande : #pon tunnel Les fichiers de configurations sont : /etc/ppp/peers/tunnel -> fichier pour la commande pon /etc/ppp/options.pptp -> options spécifique à pptp /etc/ppp/chap-secrets -> notre login et notre mot-de-passe fichier /etc/ppp/peers/tunnel : ------------------------------------------- #debut fichier pty "pptp ginette.est.belle --nolaunchpppd" remotename PPTP-GINETTE name nico require-chapms-v2 +chapms-v2 file /etc/ppp/options.pptp ipparam tunnel #fin du fichier -------------------------------------------- 'ginette.est.belle' est résolue en adr. IP. C'est là que l'on veut se connecter et ou se trouve un serveur pptp 'remotename PPTP-GINETTE' est référencé dans chap-secrets pour envoyer notre nom de login et notre mot de passe. 'name nico' est référencé dans chap-secrets pour trouver la correspondance du mot de passe associé. 'require-chapms-v2' type du cryptage 'file /etc/ppp/options.pptp' emplacement du fichier de configuration de pptp 'ipparam tunnel' passe 'tunnel' en 6eme parametre pour les scripts ip-up et ip-down. Voir /etc/ppp/ip-up, /etc/ppp/ip-up.d/ et meme chose pour ip-down. Le parametre 'tunnel' est mis dans la variable d'environnement PPP_IPPARAM. fichier fichier /etc/ppp/options.pptp : ------------------------------------------- #debut lock noauth # le serveur n'a pas à s'authentifier nodetach # ne pas mettre ppp en tache de fond nobsdcomp nodeflate mppe-40 mppe-128 mppe-stateless mtu 1000 mru 1000 #fin -------------------------------------------- fichier /etc/ppp/chap-secrets : ------------------------------------------------ #debut #client server secret IP addresses nico PPTP-GINETTE mot-de-passsss pat PPTP-GINETTE patounet #fin du fichier ------------------------------------------------ Voila, c'est fini. Faire un test: Assurez vous que vous avez accès à un serveur PPTP soit sur Internet, soit sur votre LAN, en faisant un ping sur celui-ci. exemple : ping ginette.est.belle Puis lancer la connexion: # pon tunnel et pour clore la connexion # poff tunnel Remarque : vous ne pouvez pas faire de connexion avec un serveur qui est lancer sur la même machine que le client (interface loopback). Vous aurez le message suivant : Using interface ppp0 Connect: ppp0 <--> /dev/pts/5 Serial line is looped back. Connexion terminated. A propos de pppd et de son fichier de configuration /etc/ppp/options. certaines valeurs peuvent être redondantes par rapport à nos autres fichiers de configuration mais peuvent entre nécessaires pour les autres types de connections (Internet par exemple). par exemple, j'ai : asyncmap 0 auth crtscts lock hide-password modem mru 542 -detach lcp-echo-interval 30 lcp-echo-failure 4 noipx +chap +chapms +chapms-v2 mppe-40 mppe-128 mppe-stateless De toute façon, ces valeurs peuvent être redéfinies par nos autres fichiers de configuration. Pour le client pptp, les fichiers de configurations sont lus dans l'ordre suivant: /etc/ppp/options /etc/ppp/peers/tunnel /etc/ppp/options.pptp /etc/ppp/chap-secrets Configuration pour mettre en partage le voisinage réseau de Microsoft, via le VPN Pré requis : Vous disposez d'un serveur Samba configuré sur votre machine Linux. Vous connaissez les manipes rudimentaires pour faire fonctionner Samba. Votre VPN pptp fonctionne entre un poste distant Microsoft et votre réseau Ce qu'il faut savoir sur les réseaux Microsoft Netbios: Si vous comprenez l'Anglais, je vous conseille de lire BROWSING.TXT dans /usr/share/doc/samba-doc/textdocs/BROWSING.txt, contenu dans le pacquage 'samba-doc'. Ou encore le numéro 44 de Linux Magazine. Ce qui suit s'appuie sur ce document: - le protocole applicatif Microsoft est ssn-netbios. Sur le port 139. - Pour être efficace, n'utiliser qu'un seul type de protocole réseau. C'est à dire IP et rien d'autre. - le mécanisme de base de résolution de nom des machines connectées sur un LAN Microsoft se fait par broadcast (tout les bits à 1 sur la partie host de IP). - Un ordinateur sera vu des autres si ses services de partages de fichiers et/ou d'imprimantes sont activés. (dans 'propriété du voisinage réseau') - pour faire simple, définir un seul groupe de travail pour tout les postes. - Un paquet broadcast NE PASSE PAS LES ROUTEURS. Donc, ce paquet ne passera pas de notre interface LAN ethernet (eth0) vers l'interface ppp. Les réseaux Microsoft ne pourront se voir. - Le moyen pour ne pas faire appel au broadcast IP est de mettre en place un serveur WINS, dont l'adresse IP sera connue par chaque ordinateur. Un schéma pour y voir plus claire : N1_A N1_B N1_C N1_D N1_E | | | | | ------------------------------------------------------- | subnet 1 | +---+ +---+ |R1 | Router 1 Router 2 |R2 | +---+ +---+ | | | subnet 2 subnet 3 | -------------------------- ------------------------------------ | | | | | | | | N2_A N2_B N2_C N2_D N3_A N3_B N3_C N3_D Sur une config de base, deux ordinateurs situés sur des réseaux différents (subnet1, subnet2, subnet3) ne peuvent se voir par le 'voisinage réseau Microsoft'. Sur chaque réseau (ou sous réseau), le mécanisme netbios-ssn est le suivant : - broadcast pour savoir qui est sur le réseau - élection du maître explorateur local ( Local Master Browser, LMB) - Le LMB enregistre le nom NetBios et les adresses IP des machines qui offrent un service sur le réseau. (via le broadcast) - les machines de ce réseau consultent le LMB pour avoir ces noms. - Le LMB est réélu en gros toutes les 15 minutes. Mise en place de WINS: quelques règles de fonctionnement: - chaque ordinateur connaît l'adresse IP du serveur WINS. - Il ne peut y avoir sur tout cet ensemble de réseaux qu'un et un seul serveur WINS - Il y a un LMB par réseau ou sous-réseau, sauf si ce réseau contient le DMB (voir plus bas). - Une fois que le LMB est élu, il demande au serveur WINS sur le port 137 ou se situe le maître explorateur global (Domaine Master Browser, DMB). - le LMB et le DMB synchronisent leur base de nom NetBios (en UDP sur le port 138) - il n'y a qu'un DMB sur tout cet ensemble de réseau. (Ceci n'a rien à voir avec le serveur de Domaine Microsoft) par exemple : (DMB) N1_A N1_B N1_C N1_D N1_E | | | | | ------------------------------------------------------- | subnet 1 | +---+ +---+ |R1 | Router 1 Router 2 |R2 | +---+ +---+ | | | subnet 2 subnet 3 | -------------------------- ------------------------------------ | | | | | | | | N2_A N2_B N2_C N2_D N3_A N3_B N3_C N3_D (LMB) (WINS) (LMB) Revenons à notre VPN : Je vous propose la configuration suivante : +---------[ Internet ]------------+ | | | | | | | | | | | +--N2 (LMB) N1_D N1_C N1_B N1_A | | | (WINS) | | | (DMB) | | | router | | | | +-----+-----+------+ net 1: 192.168.68.0/24 N1_A : machine linux qui nous sert de routeur, de serveur maître explorateur global (Domaine Master Browser) et enfin de serveur WINS.( et qui expose de manière dangereuse le réseau net 1 à l'Internet ..., mais bon c'est une autre histoire) N2 : une machine seule et qui naturellement a été élu en maître explorateur local. Son groupe de travail WORKGROUP est le même que celui du réseau 1. N1_A : 192.168.68.1 N1_B : 192.168.68.2 N1_C : 192.168.68.3 N1_D : 192.168.68.4 N2_A : 192.168.0.1 les machines N1_B, N1_C et N1_D sont configurées pour partager des fichiers et doivent se faire connaître auprès du serveur wins N1_A. (ce sont des clients wins). Pour que la machine N1_A devienne serveur WINS et DMB, on informe les lignes suivantes du fichier de configuration de samba. /etc/samba/smb.conf : netbios name = elea-ssn # je vous conseille de rajouter # l'intitulé -ssn a votre nom de # machine pour birn faire la difference # entre netbios et DNS workgroup = WORKGROUP # le même pour tous encrypt passwords = true # nécessaire pour windows domain master = yes # DMB ok local master = yes # redondance ? prefered master = yes # force l'élection os level = 65 # force de chez force l'élection wins support = yes # devenir serveur WINS name resolve order = wins lmhosts bcasts Sur les autres machines du réseau 1 on a wins server = 192.168.68.1 # où est le serveur WINS workgroup = WORKGROUP # le même pour tous ou bien si on est en windows : Propriété réseau -> TCP/IP de l'interface -> serveur wins : 192.168.68.1 Ensuite on relance les services de samba des machines : #/etc/init.d/samba force-reload Rendu à ce stade là, on doit pouvoir consulter chaque services samba de chaque machine: #smbclient -L elea-ssn Pour voir qui est le maître explorateur sur le réseau: #nmblookup -M - Il existe un programme en mode graphique pour linux qui ressemble au voisinage réseau de Microsoft et qui est : xsmbrowser. Maintenant que nos services samba (voisinage réseau Microsoft) fonctionnent, il ne reste plus qu'à connecter l'ordinateur distant N2. Un truc que peut faire pptpd, c'est de transmettre à l'hote distant l'adresse du serveur wins. pour cela, il suffit de rajouter la ligne suivante dans le fichier de configuration : /etc/ppp/pptpd.options : ms-wins 192.168.68.1 et de réinitialiser pptpd : #/etc/init.d/pptpd stop #/etc/init.d/pptpd start Ok, on rappelle notre pote qui est sur Internet, c'est celui qui a l'ordi N2. On lui demande de se connecter par le VPN sur N1. (donnez lui votre adresse IP vu de l'internet ). Si ça a marché tout à l'heure, il n'y a pas de raison pour que ça ne marche pas maintenant. Vérifiez avec lui sa table de routage. normalement, il doit avoir quelque part dans sa table la route pour aller chez vous: route masque passerelle adr.IP_de_votre_interface_VPN 255.255.255.0 adr.IP_de_son_interface_VPN sinon il faut rajouter cet route avec la commande : route add -net 192.168.68.0 gw 192.168.68.100 netmask 255.255.255.0 (ou 192.168.68.100 est l'adresse ip du serveur pptp via vpn, cf /etc/pptp.conf) vous pouvez également ajouter cette route automatiquement grace a un script de connexion situé dans /etc/ppp/ip-up.d/ exemple : fichier tunnel.sh #---------debut du fichier------- #!/bin/sh -x if [ "$PPP_IPPARAM" == "tunnel" ] ; then route add -net 192.168.0.0 gw 192.168.0.100 netmask 255.255.255.0 fi #-------------- fin du fichier--- ou $PPP_PPARAM correspond au parametre 'ipparam' du fichier /etc/ppp/peers/tunnel demandez lui de pinguer vos machines: (console dos) ping 192.168.68.1 ping 192.168.68.2 ping 192.168.68.3 ping 192.168.68.4 Puis enfin, faite lui ouvrir son voisinage réseau. Peut être lui faudra t'il une petite minute le temps de voir toutes vos machines. Comment configurer son (ses) firewall(s): Règles générales : - authoriser les paquets en protocole tcp sur le port 1723 - authoriser le protocole GRE , numéro protocole ip=47 Cette dernière règle est a marquée d'un pierre blanche car souvent oubliée.... Exemples : pour un firewall en openBSD en tête de réseau devant transmettre les requettes entrantes à un serveur pptp sur la LAN : #-------- fichier /etc/firewall.conf nat on $IF_EXT from $LAN to any -> ($IF_EXT) rdr on $IF_EXT proto tcp from any to any port 1723 -> $SERVEUR_PPTP pass in quick on $IF_EXT proto gre from any to any pass out quick on $IF_EXT proto gre from any to any #---------- fin du fichier ----------- et executer la commande : pfctl -f /etc/firewall.conf remarque : gre doit être renseigner dans /etc/protocols la commande suivante : cat /etc/protocols | grep gre donne : gre 47 GRE # General Routing Encapsulation les modules suivant vous seront surement necessaires : ip_tables iptable_nat ip_conntrack iptable_filter ipt_state a charger avec la commande modprobe Pour un firewall en linux 2.4.xxx (non testé) en tête de réseau devant transmettre les requettes entrantes à un serveur pptp sur la LAN : iptables -t nat -A POSTROUTING -s $IP_LAN -j MASQUERADE iptables -A FORWARD -p tcp --dport 1723 -j ACCEPT iptables -t nat -A PREROUTING -i $IF_MOD -p tcp --dport 1723 \ -j DNAT --to-destination $SERVEUR_PPTP iptables -A FORWARD -p gre -j ACCEPT iptables -t nat -A POSTROUTING -p gre -j ACCEPT iptables -t nat -A PREROUTING -p gre -j ACCEPT Pour un firewall situé en tête d'un réseau Lan abritant un client pptp: # partie pour pptp VPN iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT echo "Forward authorise pour le protocole GRE" iptables -A FORWARD -m state --state NEW -p gre -j ACCEPT echo "NAT pour le protocole GRE" iptables -t nat -A POSTROUTING -p gre -j MASQUERADE echo "Nat authorise su le port 1723" iptables -t nat -A POSTROUTING -p tcp -j MASQUERADE iptables -A FORWARD -m state --state NEW -p tcp --dport 1723 \ -i $IF_LAN -o $IF_EXT -j ACCEPT Pour plus d'info : http://pptpclient.sourceforge.net/ auteur: nicolas.montarnal@libertysurf.fr