Bien le bonjour,
En ce moment, il y a de nombreuse offre pour devenir “anonyme” sur Internet. Une de ses offres : Le VPN
[size=150]I) Comment mettre en place une connection VPN en PPTP en tant que Client, sur Debian[/size]
Tout d’abord il faut installer le paquet:
apt-get install pptp-linux
Editer le fichier chap-secrets
nano /etc/ppp/chap-secrets
Mettre * si l’adresse ip fournit par votre serveur VPN est dynamique
[code]# Secrets for authentication using CHAP
client server secret IP addresses
nom_utilisateur PPTP votre_mot_de_passe *[/code]
exemple:
[code]# Secrets for authentication using CHAP
client server secret IP addresses
loupa PPTP tchatchatcha *[/code]
Creer le fichier nom_du_service
nano /etc/ppp/peers/nom_du_service
Exemple:
nano /etc/ppp/peers/PhantomPeer
Et copier dedans:
#Il faut modifier les nom de type $tatata$
pty "pptp $AdresseIP_ou_NomDNS_du_serveur_VPN$ --nolaunchpppd"
name $nom_utilisateur$
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam $nom_du_service$
persist
L’option persist permet de réactiver la connexion automatiquement en cas de perte de connexion
Exemple:
pty "pptp pptp.phantompeer.com --nolaunchpppd"
name loupa
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam PhantomPeer
persist
Tester la connexion avec la commande de diagnosique
pon nom_du_service debug dump logfd 2 nodetach
exemple:
pon PhantomPeer debug dump logfd 2 nodetach
Pour lancer la commande sans diagnostique de connexion
pon nom_du_service
Stopper la connexion:
poff nom_du_service
[size=150]II) Rendre la connexion automatique au démarrage de vote Debian[/size]
Editer le fichier “interfaces”
nano /etc/network/interfaces
Ajouter dans le fichier
auto tunnel
iface tunnel inet ppp
provider nom_du service
Exemple:
auto tunnel
iface tunnel inet ppp
provider PhantomPeer
[size=150]III) Configuration de la Debian pour utiliser le VPN pour certaines applications:[/size]
J’image qu’il y a certain qui aimerai ne pas balancer tout leur trafic sur le VPN mais juste quelques applications.
Surtout ceux qui possède plusieurs ordinateurs et qui utilise certain service qui ne marcherai plus dans le cas d’une direction complete du traffic sur le VPN.
J’ai donc, après quelques recherches, trouver une solution.
Je remercie PascalHambourg pour son exemple sur le routage avancé, ça m’a permis de mettre en place cette partie.
Explication du fonctionnement:
[ul]- Il faudra tout d’abord créer un table celle du système, elle servira à creer une route par default differente de celle utilisé pour acceder directement à Internet.
- Les paquets seront marqué par apport au protocole et au port choisit (ex: protocole tcp, port 80 => Marquage des paquet http en mode connecté)
- Une fois marqué, les paquets seront router vers la nouvelle table de routage créé
- Etant donnée que la nouvelle table de routage possèdera l’interface du VPN en route par default, les paquets marqué seront acheminé directement sur l’interface du VPN.[/ul]
Pour la création de la nouvelle table de routage:
echo 1 VPN >> /etc/iproute2/rt_tables
Changez “VPN” par n’importe quel nom:
[size=120]1) Diriger certaine application sur l’interface du VPN grace à un script[/size]
Créer un fichier puis ajouter le script dedans
Voici le script:
[code]#! /bin/sh
#On récupere l’adresse ip de l’interface VPN.
#Modifier ppp0 si ce n’est pas l’interface de votre VPN
IpInterfaceVpn=$(ifconfig ppp0 | sed -n ‘s/.adr:([^ ]).*/\1/p’)
#A modifier suivant votre configuration
MonInterfaceLan=‘eth1’
InterfaceViaInternet=‘eth0’
InterfaceViaVPN=‘ppp0’
NomTable=‘VPN’
#Désactiver la validation d’adresse source sur l’interface du VPN
sysctl -w net.ipv4.conf.ppp0.rp_filter=0
#Si vous voulez rajouter le marquage d’autre paquets reçus, c’est ici.
#Marquer les paquets reçus par l’interface LAN
iptables -t mangle -A PREROUTING -i $MonInterfaceLan -p tcp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i $MonInterfaceLan -p udp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i $MonInterfaceLan -p udp --dport 5500:5510 -j MARK --set-mark 0x1
#Si vous voulez rajouter le marquage d’autre paquets émis, c’est ici.
#Marquer les paquets émis par le routeur vers internet si nécessaire
iptables -t mangle -A OUTPUT -o $InterfaceViaInternet -p tcp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -o $InterfaceViaInternet -p udp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -o $InterfaceViaInternet -p udp --dport 5500:5510 -j MARK --set-mark 0x1
#Router les paquets marqués avec la table de routage alternative
ip rule add fwmark 0x1 table $NomTable
#Créer une route par défaut dans la table alternative
ip route add default dev $InterfaceViaVPN via $IpInterfaceVpn table $NomTable
#Router l’adresse source avec l’adresse de l’interface de sortie
iptables -t nat -A POSTROUTING -o $InterfaceViaVPN -j SNAT --to $IpInterfaceVpn[/code]
Le rendre executable via la commande
chmod +x votre_fichier
C’est une solution, mais ce n’est pas la meilleur car le script ne marchera pas si vous le mettez au demarrage de l’ordinateur.
Il vous faudra l’activer vous meme.
De plus, tout routage spécifique pour une connexion pptp doit être definis spécifiquement dans les config de pptp-linux (merci PascalHambourg)
[size=120]2) Diriger certaine application sur l’interface du VPN de façon automatique[/size]
Nous allons dans cette partie travailler dans les dossiers:
[ul]- /etc/ppp/ip-up.d => Scripts lancés apres l’etablissement de la connexion PPTP
- /etc/ppp/ip-down.d => Scripts lancés apres une coupure ou la désactivation de la connexion PPTP[/ul]
Dans ces dossiers, il nous est possible d’utiliser plusieurs variable d’environnement dans nos scripts fournis par le service pppd:
[ul]- $PPP_IFACE= Nom de l’interface
- $PPP_TTY= Le téléscripteur (tty)
- $PPP_SPEED= La vitesse du lien
- $PPP_LOCAL= L’adresse ip local du VPN (chez nous)
- $PPP_REMOTE=L’adresse ip sur le serveur VPN distant[/ul]
Nous allons donc tout d’abord créé le script lancé au demarrage de la connexion:
nano /etc/ppp/ip-up.d/ActivationRoutageVPN
[code]#!/bin/sh
#A modifier suivant votre configuration
MonInterfaceLan=‘eth1’
InterfaceViaInternet=‘eth0’
NomTable=‘VPN’
#Désactiver la validation d’adresse source sur l’interface du VPN
sysctl -w net.ipv4.$PPP_IFACE.rp_filter=0
#Si vous voulez rajouter le marquage d’autre paquets reçus, c’est ici.
#Marquer les paquets reçus par l’interface LAN
iptables -t mangle -A PREROUTING -i $MonInterfaceLan -p tcp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i $MonInterfaceLan -p udp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i $MonInterfaceLan -p udp --dport 5500:5510 -j MARK --set-mark 0x1
#Si vous voulez rajouter le marquage d’autre paquets émis, c’est ici.
#Marquer les paquets émis par le routeur vers internet si nécessaire
iptables -t mangle -A OUTPUT -o $InterfaceViaInternet -p tcp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -o $InterfaceViaInternet -p udp --dport 80 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -o $InterfaceViaInternet -p udp --dport 5500:5510 -j MARK --set-mark 0x1
#Router les paquets marqués avec la table de routage alternative
ip rule add fwmark 0x1 table $NomTable
#Créer une route par défaut dans la table alternative
ip route add default dev $PPP_IFACE via $PPP_LOCAL table $NomTable
#Router l’adresse source avec l’adresse de l’interface de sortie
iptables -t nat -A POSTROUTING -o $PPP_IFACE -j SNAT --to $PPP_LOCAL[/code]
Jusqu’à là, ça ne change pas trop de mon script précédent, à part les variable d’environnement que j’ai ajouté.
Ne pas oubliez les droits d’execution du fichier
chmod +x /etc/ppp/ip-up.d/ActivationRoutageVPN
Nous allons ensuite créé le script lancé en cas de fin de connexion
nano /etc/ppp/ip-down.d/DesactivationRoutageVPN
[code]#!/bin/sh
#A modifier suivant votre configuration
MonInterfaceLan=‘eth1’
InterfaceViaInternet=‘eth0’
NomTable=‘VPN’
#Suppression des routes ajouté dans le script précédent.
iptables -t mangle -D PREROUTING 3
iptables -t mangle -D PREROUTING 2
iptables -t mangle -D PREROUTING 1
iptables -t mangle -D OUTPUT 3
iptables -t mangle -D OUTPUT 2
iptables -t mangle -D OUTPUT 1
#Suppression de la route pour les paquets marqués dans la table de routage alternative
ip rule del fwmark 0x1 table $NomTable
#Suppression de la route par default issue de la table alternative
ip route del default dev $PPP_IFACE via $PPP_LOCAL table $NomTable
Suppression de la route nat permettant de router l’adresse source avec l’adresse de l’interface de sortie
iptables -t nat -D POSTROUTING 2[/code]
Vérifié bien le numero de vos anciennes regles :
iptables -t mangle -L --line-numbers
iptables -t nat -L --line-numbers
Voila, j’ai essayé de détailler le plus possible pour que ce tuto soit accessible pour tout le monde
J’espere que ça aidera des gens .
N’esitez pas si vous voyez des ameliorations à faire.
Bonne journée à tous
Les articles et les documentations
http://pptpclient.sourceforge.net/ => Site officiel de pptp-linux (Anglais)
http://bibabox.fr/tag/vpn/ => Une autre documentation sur la mise en place du Vpn PPTP (Français)
http://doc.ubuntu-fr.org/iptables => Documentation sur iptables (Français)