#language fr ||~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[ru/pptp-linux|Русский]] - [[fr/pptp-linux|Français]] -~|| ---- '''VPN''' — Dans les réseaux informatiques et les télécommunications, le réseau privé virtuel (Virtual Private Network en anglais, abrégé en VPN) est vu comme une extension des réseaux locaux et préserve la sécurité logique que l'on peut avoir à l'intérieur d'un réseau local. Il correspond en fait à une interconnexion de réseaux locaux via une technique de « tunnel ». On parle de VPN lorsqu'un organisme interconnecte ses sites via une infrastructure partagée avec d'autres organismes. <> == Introduction == En pratique c'est surtout utilisé pour se connecter au réseau interne de son entreprise depuis une connexion internel normale. On s'en sert aussi pour se connecter à des fournisseurs de VPN public permettant d'anonymiser sa connexion. == Installation du client == ---- Pour établir ce genre de connexion il faut commencer par installer le paquet DebPkg:pptp-linux (PPTP Client), dépendant du paquet DebPkg:ppp (PPP: Point-to-Point Protocol - Protocole Point à Point): {{{ # aptitude install pptp-linux }}} {{{#!wiki caution '''Vérifier la version de PPP''' Cette étape peut être passée si vous êtes sur Debian GNU/Linux 4.0 Etch ou supérieur. Si vous avez besoin du support MPPE (Microsoft Point-to-Point Encryption), alors vous devez vérifier que le paquet DebPkg:ppp est en version 2.4.2 ou supérieur. Debian Woody inclut la version 2.4.1 qui ne supporte pas le MPPE. Debian Sarge inclut la version 2.4.3 et Debian Etch inclut la version 2.4.4. (Le paquet DebPkg:pptp-linux ne dépend pas d'une version supérieure ou égale à 2.4.2 de DebPkg:ppp car il est possible de configurer un tunnel sans l'encryption MPPE. Il ne faut pas utiliser la version 2.4.1 de ppp même si elle a été patchée pour le support MPPE car tous les correctifs testés ne sont pas compatibles avec le support MPPE ajouté aux noyaux des versions Etch et supérieures. }}} == Configuration manuelle == ---- Voici les informations nécessaires pour configurer un tunnel. Ces informations devraient vous être fournies par l'administrateur du serveur VPN ou le fournisseur. * L'adresse IP ou le nom du serveur VPN ($SERVER), * Le nom que vous avez choisi pour le tunnel (nom de la configuration) ($TUNNEL), * Le nom du domaine ($DOMAIN), * Le nom d'utilisateur pour la connexion ($USERNAME), * Le mot de passe pour la connexion ($PASSWORD), * Le type d'encryptage Dans la suite de la documentation, remplacez ces variables par les valeurs. Pour la suite, on considère que votre réseau est configuré correctement et que le serveur VPN est accessible. Si ce n'est pas le cas, allez voir [[NetworkConfiguration]] === Configuration du fichier de base === Les fichiers de configuration avec lesquels nous allons travailler sont tous situés dans le répertoire '''/etc/ppp''' pour des raisons de commodité rendez-vous dans ce répertoire : {{{ # cd /etc/ppp/ }}} Voilà les fichiers qui nous intéressent : * /etc/ppp/chap-secrets ''(fichier contenant les mots de passe)'' * /etc/ppp/options.pptp ''(fichier contenant la configuration par defaut)'' * /etc/ppp/peers/$TUNNEL ''(votre fichier de configuration)'' ==== /etc/ppp/options.pptp ==== ---- Il s'agit ici des paramètres par défaut qui seront utilisés par tous les tunnels. Normalement vous ne devriez pas avoir besoin de modifier ce fichier. Normalement vous avez les options suivantes en standard{{{ lock noauth nobsdcomp nodeflate }}} ==== /etc/ppp/chap-secrets ==== ---- Ce fichier contient les informations de connexion de votre tunnel. Vous devez l'éditer :{{{ # gedit /etc/ppp/chap-secrets }}} Et y ajouter une ligne comme suit :{{{ # client server secret IP addresses $DOMAIN\\$USERNAME PPTP $PASSWORD * }}} '''Note :''' Si le serveur PPTP ne nécessite pas de domaine, ne mettez que le $USERNAME, sans le domaine et sans le slash. '''Note :''' Si le mot de passe contient des caractères spéciaux, voir la documentation officielle de pppd. ==== /etc/ppp/peers/$TUNNEL ==== ---- Créez un fichier /etc/ppp/peers/$TUNNEL :{{{ # gedit /etc/ppp/peers/$TUNNEL }}} Ajoutez les paramètres de configuration par exemple : {{{ pty "pptp $SERVER --nolaunchpppd" name $DOMAIN\\$USERNAME remotename PPTP require-mppe-128 file /etc/ppp/options.pptp ipparam $TUNNEL }}} La deuxième ligne, '''name''' correspond à l'identifiant de connexion avec le domaine s'il y en a un. Sa valeur doit correspondre à celle de la ligne ajoutée dans ''/etc/ppp/chap-secrets''. === Ouverture/fermeture de la connexion VPN === Une fois le fichier configuré, pour ouvrir la connexion VPN il suffit de taper la commande :{{{ # pon $TUNNEL }}} En cas d'erreur, rajouter les options suivantes permettra de faciliter le diagnostic :{{{ pon $TUNNEL debug dump logfd 2 nodetach }}} Pour fermer la connexion VPN taper la commande :{{{ poff $TUNNEL }}} === Routing (routage) === ---- Une fois votre connexion VPN établi, vérifier que vous pouvez bien accéder aux machines de l'autre coté du tunnel. ==== Client -> Serveur ==== Pour les connexions client/server, c'est simple, chacun a sa propre IP et peut contacter l'autre dès la connexion établie. [[http://pptpclient.sourceforge.net/images/routing_clientlan1.png]] ==== Client -> LAN ==== C'est plus compliqué si vous voulez accéder à un réseau situé derrière le serveur VPN. Dans ce cas il vous faut configurer des routes une fois que la connexion est établie. [[http://pptpclient.sourceforge.net/images/routing_clientlan2.png]] Dans l'exemple ci-dessus : * Le tunnel entre le client et le serveur VPN est ppp0 * Le réseau distant utilise des adresses commençant par 192.168.10. Donc après que la connexion est établie il faut créer une route comme suit :{{{ # route add -net 192.168.10.0 netmask 255.255.255.0 dev ppp0 }}} Et pour tester :{{{ # traceroute 192.168.10.127 traceroute to 192.168.10.127 (192.168.10.127), 30 hops max, 38 byte packets 1 192.168.10.114 (192.168.10.114) 48.176 ms 48.115 ms 93.816 ms 2 192.168.10.127 (192.168.10.127) 46.554 ms 48.138 ms 48.443 ms }}} Les paquets destinés au serveur de mail transitent bien par le tunnel. Les paquets destinés au serveur VPN lui-même utilisent aussi la route qui vient d'être créée. ==== LAN -> LAN ==== Si vous avez un autre ordinateur connecté au vôtre dans un réseau local, il se peut que vous vouliez faire ceci : [[http://pptpclient.sourceforge.net/images/routing_lanlan1.png]] Si vous souhaitez que n'importe quel ordinateur du réseau distant puisse discuter avec n'importe quel ordinateur de votre réseau local, il faut que vous établissiez une route sur le réseau distant ou que vous utilisiez ipchains ou iptable pour traduire les adresses. [[http://pptpclient.sourceforge.net/images/routing_lanlan2.png]] Dans le schéma ci-dessus, les informations importantes sont : * Le réseau distant est 192.168.0.0/16 * l'interface du tunnel est ppp0 La solution dépend du votre noyau. ===== Kernel 2.4.x (Iptable) ===== {{{ # route add -net 192.168.0.0 netmask 255.255.0.0 dev ppp0 # iptables --insert OUTPUT 1 --source 0.0.0.0/0.0.0.0 \ --destination 192.168.0.0/16 --jump ACCEPT --out-interface ppp0 # iptables --insert INPUT 1 --source 192.168.0.0/16 \ --destination 0.0.0.0/0.0.0.0 --jump ACCEPT --in-interface ppp0 # iptables --insert FORWARD 1 --source 0.0.0.0/0.0.0.0 \ --destination 192.168.0.0/16 --jump ACCEPT --out-interface ppp0 # iptables --insert FORWARD 1 --source 192.168.0.0/16 \ --destination 0.0.0.0/0.0.0.0 --jump ACCEPT # iptables --table nat --append POSTROUTING --out-interface ppp0 \ --jump MASQUERADE # iptables --append FORWARD --protocol tcp \ --tcp-flags SYN,RST SYN --jump TCPMSS --clamp-mss-to-pmtu }}} ''La dernière ligne résout le problème du chemin MTU'' ===== Kernel 2.2.x (Ipchains) ===== {{{ # route add -net 192.168.0.0 netmask 255.255.0.0 dev ppp0 # ipchains -I output 1 -s 0.0.0.0/0.0.0.0 -d 192.168.0.0/16 \ -i ppp0 -j ACCEPT # ipchains -I forward 1 -s 192.168.0.0/16 -d 0.0.0.0/0.0.0.0 \ -i ppp0 -j MASQ -b # ipchains -I input 1 -s 192.168.0.0/16 -d 0.0.0.0/0.0.0.0 \ -i ppp0 -j ACCEPT }}} Pour tester, depuis un autre ordinateur de votre réseau : {{{ # traceroute mail traceroute to mail (192.168.0.7), 30 hops max, 38 byte packets 1 client (10.0.1.1) 0.980 ms 0.312 ms 0.225 ms 2 server (10.20.0.1) 48.079 ms 48.758 ms 47.708 ms 3 mail (192.168.0.7) 50.250 ms 46.662 ms 48.299 ms }}} Le flèches rouges sur le schéma ci-dessous montre le cheminement des paquets : [[http://pptpclient.sourceforge.net/images/routing_lanlan3.png]] == Liens == ---- * [[http://pptpclient.sourceforge.net/|Client PPTP]] * [[http://pptpclient.sourceforge.net/howto-debian.phtml|HowTo - Client PPTP]] * [[http://pptpclient.sourceforge.net/howto-diagnosis.phtml|HowTo Diagnostic PPTP]] * [[http://pptpclient.sourceforge.net/routing.phtml#automatic-setup|HowTo Routage]] ---- CategoryNetwork CategoryNetwork