Haut de page

Réseau Privé Virtuel


MacOS X 10.2 permet de se connecter à un réseau privé virtuel (Virtual Private Network: VPN).

Un VPN offre un tunnel crypté entre une machine externe un réseau d'entreprise. Vous pouvez par exemple vous connecter à votre réseau d'entreprise depuis chez vous. Lorsque vous êtes connecté, toutes vos communication sont sécurisées et sont émises depuis l'intérieur de votre réseau d'entreprise.

MacOS X supporte les protocoles PPTP et IPSec. MacOS X Server 10.2 offre un serveur PPTP. Dans ce document je vais décrire l'utilisation et la configuration de PPTP.

24 octobre 2003 : MacOS X Server 10.3 offre PPTP et L2TP/IPSec, le client 10.3 intègre aussi L2TP/IPSec en plus de PPTP.


PPTP (Point-to-Point Tunneling Protocol)

Utilisation de PPTP

Vous pouvez ouvrir un tunnel PPTP au dessus d'une connexion existante. Ici on se connecte en ADSL Wanadoo via un modem Alcatel SpeedTouch USB.

À partir de ce moment, toutes communications passent par la connexion PPTP.

Attention dans la configuration actuelle, la connexion VPN sera coupée sur il n'y a aucune activité pendant 10 minutes, on se retrouvera automatiquement en connexion ADSL.

Truc : Pour contrôler ce qui se passe, ouvrir la fenêtre Historique de connexion (Menu Fenêtre de l'Application Connexion à Internet).


Configuration du client MacOS 10.2.4

Pour configurer le client, cliquer sur la flêche bleue dans la fenêtre Connexion VPN. Remplir la zone Adresse du serveur avec le nom de la machine serveur VPN, le Nom avec votre loginVPN et le Mot de passe. Cliquer sur le bouton Se connecter.

Si vous avez mis en place un FireWall, n'oubliez-pas d'ouvrir la communication provenant du serveur VPN car la procédure d'authentification se connecte au poste client.

Note: IPSec utilise ESP (protocol 50) et AH (protocol 51).


Détails de communication

Avec connexion PPTP Sans connexion PPTP
ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8822<BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
tunnel inet -->
ether 00:30:65:e5:a5:d0
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 80.13.102.19 --> 80.13.102.1 netmask 0xff000000
ppp1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1448
inet 132.227.64.aaa --> 132.227.64.pptp netmask 0xffff0000
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8822<BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
tunnel inet -->
ether 00:30:65:e5:a5:d0
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 80.13.102.19 --> 80.13.102.1 netmask 0xff000000
netstat -rn
Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default pptp.lip6.fr UGSc 3 6 ppp1
afontenayssb-106-1 afontenayssb-106-1 UH 1 0 ppp0
localhost localhost UH 7 7444 lo0
pptp.lip6.lip6.fr afontenayssb-106-1 UGHS 40 38 ppp0

Internet6:
Destination Gateway Flags Netif Expire
UH lo0
fe80::%lo0 Uc lo0
link#1 UHL lo0
ff01:: U lo0
ff02::%lo0 UC lo0
Routing tables

Internet:
Destination Gateway Flags Refs Use Netif Expire
default afontenayssb-106-1 UGSc 3 1 ppp0
afontenayssb-106-1 afontenayssb-106-1 UH 4 0 ppp0
localhost localhost UH 13 7735 lo0

Internet6:
Destination Gateway Flags Netif Expire
UH lo0
fe80::%lo0 Uc lo0
link#1 UHL lo0
ff01:: U lo0
ff02::%lo0 UC lo0
traceroute src.lip6.fr
traceroute to src.lip6.fr (132.227.64.100), 30 hops max, 40 byte packets
1 pptp.lip6.fr (132.227.64.pptp) 68.478 ms 58.315 ms 58.527 ms
2 src.lip6.fr (132.227.64.100) 57.987 ms 63.38 ms 59.661 ms
traceroute to src.lip6.fr (132.227.64.100), 30 hops max, 40 byte packets
1 afontenayssb-106-1-4-1.abo.wanadoo.fr (80.13.102.1) 51.879 ms 51.835 ms 55.803 ms
2 80.10.179.1 (80.10.179.1) 64.644 ms 59.342 ms 55.786 ms
3 p1-1.nraub303.aubervilliers.francetelecom.net (193.252.99.2) 54.507 ms 59.324 ms 65.498 ms
4 p9-0.ntaub301.aubervilliers.francetelecom.net (193.252.161.66) 54.322 ms 56.644 ms 83.808 ms
5 p9-0.ntaub201.aubervilliers.francetelecom.net (193.252.161.53) 62.918 ms 56.03 ms 56.675 ms
6 193.251.126.54 (193.251.126.54) 90.496 ms 138.942 ms 70.887 ms
7 p1-0.pascr1.pastourelle.opentransit.net (193.251.243.30) 79.776 ms 51.926 ms 68.212 ms
8 p12-0.pascr2.pastourelle.opentransit.net (193.251.241.98) 61.401 ms 56.235 ms 55.837 ms
9 p7-0.boubb1.bourse.opentransit.net (193.251.241.157) 71.591 ms 57.021 ms 63.943 ms
10 193.51.185.2 (193.51.185.2) 53.884 ms 57.159 ms 57.138 ms
11 jussieu-a1-0-500.cssi.renater.fr (193.51.179.38) 57.481 ms 74.016 ms 53.558 ms
12 rap-jussieu.cssi.renater.fr (193.51.182.201) 57.069 ms 64.263 ms 53.731 ms
13 jussieu.rap.prd.fr (195.221.126.33) 58.169 ms 58.426 ms 68.242 ms
14 r-scott.reseau.jussieu.fr (134.157.254.10) 58.044 ms 55.357 ms 79.954 ms
15 src.lip6.fr (132.227.64.100) 80.307 ms 74.372 ms 56.428 ms

Configuration avancée de client en split routing

Maintenant que l'on a le routage via le réseau VPN, c'est bien mais, depuis chez soi, pourquoi tout faire passer par le VPN. En split routing ici, je vais faire passer les réseaux 132.227.0.0, 134.157.0.0 ainsi que la machine 195.83.118.1 par le VPN, le reste passant par le routeur ADSL sans VPN.
Le script ci-dessous lors de son exécution va donner la liste des commandes à taper. Dans ce script, les commandes ne sont exécutées.

#! /bin/sh
#
# Va afficher les commandes a executer en root
# adslr = adresse IP du routeur ADSL
# vpnr = adresse Ip du routeur VPN
#
adslr=`netstat -nr | grep ' UGHS ' | grep 'ppp0' | awk '{print $2}'`
vpnr=`netstat -nr | grep 'ppp1' | awk '{print $2}'`
echo '#'Routeur ADSL:$adslr
echo '#'Routeur VPN:$vpnr
echo sudo route delete default $vpnr
echo sudo route add default $adslr
echo sudo route add -net 132.227 $vpnr
echo sudo route add -net 134.157 $vpnr
echo sudo route add -host 195.83.118.1 $vpnr
echo ""
echo "#Pour remettre en etat"
echo sudo route delete -net 132.227
echo sudo route delete -net 134.157
echo sudo route delete -host 195.83.118.1
echo sudo route delete default $adslr
echo sudo route add default $vpnr


Configuration du serveur (MacOS X Server 10.2.4)

Pour activer le serveur PPTP au démarrage de la machine, il faut modifier le fichiers /etc/hostconfig

IPFORWARDING=-YES-
VPNSERVER=-YES-
VPN_ARGS=""

Le daemon vpnd va appeler pppd, il faut configurer les fichiers chap-secrets, pptp_addresses et pptp_service dans /etc/ppp. Le fichier chap-secrets ne doit être lisible que par root.

% ls -al /etc/ppp
-rw------- 1 root wheel 18 Mar 6 17:18 chap-secrets
-rw-r--r-- 1 root wheel 580 Mar 6 17:17 pptp_addresses
-rw-r--r-- 1 root wheel 117 Mar 3 22:05 pptp_service

chap-secrets contient les login et mot de passe des clients VPN

loginVPN * mot-de-passe *

pptp_addresses contient les adresses attribuées au clients VPN.

132.227.64.aaa
132.227.64.bbb

pptp_service contient les paramètres de configuration du serveur ppp.

#nodetach
pptpmode answer
mppe-stateless
mppe-128
require-chapms-v2
proxyarp
lcp-echo-failure 5
lcp-echo-interval 60

Serveur de nom (DNS)

il est possible d'ajouter les lignes

ms-dns adresse-ip-dns-primaire
ms-dns adresse-ip-dns-secondaire

à la fin du fichier pptp_service ou dans un nouveau fichier nommé /etc/ppp/options. Cela sera effectif si vous ne remplissez pas le champ facultatif Serveurs DNS dans l'onglet TCP/IP de PPTP des Préférences système Réseau.

Log

Sur le serveur, /var/log/system.log fait apparaître

Mar 9 18:21:08 pptp pppd[4494]: PPTP incoming call in progress from '80.13.102.19'...
Mar 9 18:21:08 pptp pppd[4494]: PPTP connection established.
Mar 9 18:21:08 pptp mach_kernel: pptp_wan_attach, link index = 0, (ld = 0x2186704)
Mar 9 18:21:08 pptp pppd[4494]: Using interface ppp0
Mar 9 18:21:08 pptp pppd[4494]: Connect: ppp0 <--> socket[34:17]
Mar 9 18:21:08 pptp pppd[4494]: MSCHAP-v2 peer authentication succeeded for loginVPN
Mar 9 18:21:08 pptp pppd[4494]: MPPE 128 bit, stateless compression enabled
Mar 9 18:21:08 pptp pppd[4494]: found interface en0 for proxy arp
Mar 9 18:21:08 pptp pppd[4494]: local IP address 132.227.64.pptp
Mar 9 18:21:08 pptp pppd[4494]: remote IP address 132.227.64.aaa
....
Mar 9 18:27:20 pptp pppd[4494]: LCP terminated by peer (User request)
Mar 9 18:27:21 pptp pppd[4494]: Connection terminated.
Mar 9 18:27:21 pptp pppd[4494]: Connect time 6.2 minutes.
Mar 9 18:27:21 pptp pppd[4494]: Sent 3126 bytes, received 2687 bytes.
Mar 9 18:27:21 pptp pppd[4494]: PPTP disconnecting...
Mar 9 18:27:21 pptp pppd[4494]: PPTP disconnected
Mar 9 18:27:21 pptp pppd[4494]: Exit.

Sur le serveur, /Library/Logs/vpnd.log fait apparaître

#Start-Date: 2003-03-08 02:50:29 CET
#Fields: date time s-comment
2003-03-08 02:50:29 CET Listening for packets on port 1723...
2003-03-09 18:21:07 CET PPTP connection accepted from 80.13.102.19; leased IP 132.227.64.aaa to child 4493.
2003-03-09 18:21:08 CET Child process 4493 quit with exit status 0.

Aidé par la documentation suivante :

Nicolas Seriot. pour la configuration du serveur MacOS X.
Le site AFP548.com.
Microsoft Understanding Point-to-Point Tunneling Protocol (PPTP). Windows NT® Server version 4.0.
Une analyse critique du protocole MS-CHAPv2.
PPTP http://members.blackbox.net/a/programs/pptp/
PPTP sur MacOS X Hints.

mars 2003



FutureShare

 | 

Glossaire

 |