Dans ce tutoriel, je vais vous montrer comment configurer le vpn ipredator ainsi qu’un client web bittorent sur votre serveur linux/debian/ubuntu.
Etape 1 : Configuration du vpn
Il faut avant tout s’inscrire sur le site d’ipredator (15€ les 3 mois dans mon souvenir)
Après avoir récupéré vos identifiants, on installe le logiciel pptp-linux pour configurer notre vpn avec nos identifiants fraîchement acquis.
[sh]aptitude install pptp-linux[/sh]
[sh]/etc/ppp/chap-secrets[/sh]
[sh]/etc/ppp/peers/ipredator[/sh]
Si vous avez un firewall rajoutez ces quelques règles dans votre fichier de configuration.
[sh]#VPN
iptables -A OUTPUT -m state –state NEW -o eth0 -p tcp –dport 1723 –syn -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT[/sh]
On peut maintenant lancer maintenant le vpn.
[sh]pppd call ipredator[/sh]
Pour démonter la carte :
[sh]poff ipredator[/sh]
Vous pouvez vérifier que l’interface est bien montée en faisant un petit ifconfig ! Si vous avez bien fait votre travail elle devrait apparaître sous le nom « ppp0 »
Si vous souhaitez lancer le vpn en mode débug voici la commande :
[sh]pon ipredator debug dump logfd 2 nodetach[/sh]
Etape 2 : Routage
Le problème avec les vpn c’est que parfois il change d’adresse ip du coup la configuration de votre client torrent va devoir être modifiée pour pouvoir pointer vers la nouvelle adresse ip. Pour parer à ce changement d’adresse plutôt contraignant on va monter une nouvelle interface de loopback .
Rajoutez dans le fichier /etc/network/interfaces
[sh]auto lo:1
iface lo:1 inet static
address 192.168.0.1
netmask 255.255.255.255[/sh]
et redémarrez le service networking pour que la modification soit prise en compte.
[sh]/etc/init.d/networking restart[/sh]
Ci-dessous vous trouverez le script permettant de faire la liaison entre l’interface de loopback et l’interface du vpn en mettant à jour les tables de routages de votre machine à chaque fois qu’une nouvelle adresse ip est attribuée au vpn.
v2.0 : dispo ici
v3.1 : dispo ici cette nouvelle version check l’état du lien vpn en lançant un ping vers www.google.fr .Si le ping est KO le script remonte le lien vpn.
Attention : Pensez à autoriser le ping à destination de www.google.fr sur le votre FW
[sh]
#!/bin/bash
#https://www.ophyde.com/configuration-dipredator-et-transmission/
#by ophyde
#v3.1
poff ipredator
sleep 10
export PATH=$PATH:/usr/sbin/
while :
do
date
#On recupere l’adresse IP du vpn si elle existe et on la stocke dans $ipipred
ipipred=$(/sbin/ifconfig ppp0 | grep adr: | awk -F\: ‘{print $2}’ | awk ‘{print $1}’)
sleep 30
ppp0=$(/sbin/ifconfig ppp0)
#On recupere l’etat du lien grace au ping
ping=$(ping -I 192.168.0.1 www.google.fr -c 1 | grep % | awk -F\, ‘{print $3}’ | awk -F\% ‘{print $1}’)
#Si la variable $ipipred est vide on active la carte
if [ -z « ${ppp0} » ]
then
/usr/bin/poff ipredator
/usr/bin/pon ipredator
sleep 10
# Si l’interface ppp0 est toujours up mais qu’on ne ping plus l’exterieur on reactive la carte
elif [ $ping != 0 ]
then
/usr/bin/poff ipredator
/usr/bin/poff ipredator
sleep 10
fi
#On recupere l’adresse IP actuelle du vpn et on la stocke dans $ipvpn
ipvpn=$(/sbin/ifconfig ppp0 | grep adr: | awk -F\: ‘{print $2}’ | awk ‘{print $1}’)
echo $ipvpn
#Si la variable $ipipred est vide on ajoute directement les nouvelles routes
if [ -z $!$ipipred ]
then
#up
ip route add default dev ppp0 table IPRED
ip rule add from 192.168.0.1/32 table IPRED
ip rule add from $ipvpn/32 table IPRED
#Si l’adresse IP du vpn changer on supprime les anciennes routes et on ajoute les nouvelles
elif [ $ipvpn != $ipipred ]
then
#down
ip rule del from 192.168.0.1/32 table IPRED
ip rule del from $ipipred/32 table IPRED
ip route del default dev ppp0 table IPRED
#up
ip route add default dev ppp0 table IPRED
ip rule add from 192.168.0.1/32 table IPRED
ip rule add from $ipvpn/32 table IPRED
fi
done
[/sh]
Copiez/collez ou téléchargez le script dans un nouveau fichier /root/configuration_vpn sur votre serveur et rendez le exécutable avec un petit chmod ^^ ».
[sh]vi /root/configuration_vpn.sh[/sh]
[sh]chmod 755 /root/configuration_vpn.sh[/sh]
Le script est configuré pour s’exécuter toutes les minutes, il est donc nécessairement de le lancer une seule fois en tache de fond à chaque redémarrage du serveur.
/root/./configuration_vpn.sh &
Attention : Ne pas lancer automatiquement ce script au boot du serveur
Créez maintenant un nouveau fichier appelé nat contenant les règles ci-dessous et placez le dans le dossier /etc/init.d/.
[sh]touch /etc/init.d/nat[/sh]
[sh]
iptables -A PREROUTING -t nat -i ppp0 -p tcp –dport 6891:6899 -j DNAT –to 192.168.0.1
iptables -A PREROUTING -t nat -i ppp0 -p udp –dport 6890 -j DNAT –to 192.168.0.1
iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE
iptables -A INPUT -i ppp0 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp –dport 6891:6899 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp –dport 6890 -j ACCEPT
iptables -A FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
[/sh]
On va rendre le script exécutable automatiquement à chaque démarrage de votre serveur.
[sh]chmod 755 /etc/init.d/nat
update-rc.d nat defaults[/sh]
On active le routage :
echo 1 > /proc/sys/net/ipv4/ip_forward
On ajoute au passage la nouvelle table de routage nécessaire au fonctionnement du script nat:
echo 1 IPRED >> /etc/iproute2/rt_tables
On exécute le tout une première fois.
[sh]./configuration_vpn
./nat[/sh]
Vous pouvez tester le routage de votre interface de loopback vers votre interface vpn en éxécutant un ping :
ping -I 192.168.0.1 http://www.google.fr
-I : Indique l’interface source, ici l’interface de loopback que nous avons créé.
Etape 3 : Installation et configuration de transmission
Transmission est une interface web gérant les protocoles peer to peer et vous permettant de télécharger des liens torrents ou magnet.
Un petit aperçu de l’interface web de transmission :
[sh]apt-get install transmission-cli transmission-common transmission-daemon[/sh]
Le fichier de configuration se trouve dans /etc/transmission-daemon/settings.json
Copier/coller dans le fichier le code suivant :
Avant de modifier la configuration il faut arrêter transmission
[sh]/etc/init.d/transmission-daemon stop[/sh]
[sh]
{
« alt-speed-down »: 50,
« alt-speed-enabled »: false,
« alt-speed-time-begin »: 540,
« alt-speed-time-day »: 127,
« alt-speed-time-enabled »: false,
« alt-speed-time-end »: 1020,
« alt-speed-up »: 50,
« bind-address-ipv4 »: « 192.168.0.1 »,
« bind-address-ipv6 »: « :: »,
« blocklist-enabled »: false,
« dht-enabled »: true,
« download-dir »: « /var/lib/transmission-daemon/downloads »,
« download-limit »: 100,
« download-limit-enabled »: 0,
« encryption »: 1,
« incomplete-dir »: « /root/Downloads »,
« incomplete-dir-enabled »: false,
« lazy-bitfield-enabled »: true,
« lpd-enabled »: false,
« max-peers-global »: 200,
« message-level »: 2,
« open-file-limit »: 32,
« peer-limit-global »: 240,
« peer-limit-per-torrent »: 60,
« peer-port »: 51413,
« peer-port-random-high »: 65535,
« peer-port-random-low »: 49152,
« peer-port-random-on-start »: false,
« peer-socket-tos »: 0,
« pex-enabled »: true,
« port-forwarding-enabled »: false,
« preallocation »: 1,
« proxy »: « »,
« proxy-auth-enabled »: false,
« proxy-auth-password »: « »,
« proxy-auth-username »: « »,
« proxy-enabled »: false,
« proxy-port »: 80,
« proxy-type »: 0,
« ratio-limit »: 2.0000,
« ratio-limit-enabled »: false,
« rename-partial-files »: true,
« rpc-authentication-required »: true,
« rpc-bind-address »: « 0.0.0.0 »,
« rpc-enabled »: true,
« rpc-password »: « votre_mot_de_passe »,
« rpc-port »: 9091,
« rpc-username »: « votre_pseudo_de_connexion »,
« rpc-whitelist »: « »,
« rpc-whitelist-enabled »: false,
« script-torrent-done-enabled »: false,
« script-torrent-done-filename »: « »,
« speed-limit-down »: 75,
« speed-limit-down-enabled »: false,
« speed-limit-up »: 100,
« speed-limit-up-enabled »: false,
« start-added-torrents »: true,
« trash-original-torrent-files »: false,
« umask »: 18,
« upload-limit »: 100,
« upload-limit-enabled »: 0,
« upload-slots-per-torrent »: 14
}
[/sh]
Attention ces deux lignes sont à modifier à votre sauce :
« rpc-password »: « votre_mot_de_passe »,
« rpc-username »: « votre_pseudo_de_connexion »,
On valide la configuration :
[sh]/etc/init.d/transmission-daemon reload
/etc/init.d/transmission-daemon restart[/sh]
Ci-dessous les règles à rajouter dans votre firewall si vous utilisez le même fichier de configuration que moi.
[sh]#Transmission
iptables -A INPUT -m state –state NEW -i eth0 -p tcp –dport 9091 –syn -j ACCEPT
iptables -A INPUT -m state –state NEW -i ppp0 -p tcp –dport 51423:65535 -j ACCEPT
iptables -A INPUT -p udp –dport 51423:65535 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 51423:65535 -j ACCEPT
iptables -A OUTPUT -p udp –dport 51423:65535 -j ACCEPT[/sh]
Pour vous connecter à l’interface web de transmission : http://votre_domaine:9091
Etape 4 : Rappel des règles firewall à rajouter
Si vous avez un firewall rajoutez ces quelques règles dans votre fichier de configuration.
[sh]#VPN
iptables -A OUTPUT -m state –state NEW -o eth0 -p tcp –dport 1723 –syn -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT
#Transmission
iptables -A INPUT -m state –state NEW -i eth0 -p tcp –dport 9091 –syn -j ACCEPT
iptables -A INPUT -m state –state NEW -i ppp0 -p tcp –dport 51423:65535 -j ACCEPT
iptables -A INPUT -p udp –dport 51423:65535 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 51423:65535 -j ACCEPT
iptables -A OUTPUT -p udp –dport 51423:65535 -j ACCEPT[/sh]
Bonus : Transdroid
Pour ceux qui possèdent une tablette ou un téléphone Android j’ai trouvé une petite application permettant la gestion de votre serveur Transmission directement sur votre Téléphone/Tablette.
Voici le lien : http://code.google.com/p/transdroid/
Une fois l’application installée sur votre système android, lancez là et cliquez sur ajouter un nouveau serveur.
Type de serveur : Sélectionnez dans la liste déroulante « Transmission ».
IP ou nom de domaine : L’ip de votre serveur ou nom de domaine sans « http » ni « numéro de port ».
Utiliser l’authentification : Cochez la case.
Nom d’utilisateur : Votre nom d’utilisateur définit dans le fichier de configuration de transmission (setting.json).
Mot de passe : Votre mot de passe définit dans le fichier de configuration de transmission (setting.json).
Pour ajouter des torrents sur votre serveur directement à partir de votre système mobile Android, il vous suffit pour cela d’ouvrir votre gestionnaire de fichiers android préféré et de cliquer sur le .torrent préalablement téléchargé pour l’ajouter à votre serveur de torrent !
Personnellement, j’utilise ES Explorer comme gestionnaire de fichiers.
Voilà ce que ça donne une fois un torrent ajouté :
Merci à benji1000 pour son article !
Bonjour,
j’ai un petit probleme avec la comma pppd call …
j’ai utilisé pon ipredator nodetach
et ça fonctionne !
Bonjour,
Merci beaucoup pour l’information ! C’est vrai que dans le tuto je parle de la commande pppd call cependant le script fonctionne avec la commande pon donc tu devrais pas avoir de soucis avec ça :-)
Ophyde
Bonjour,
J’ai suivi ton, tutaux à la lettre mais quand je lance :
/home/wolverine# /root/./configuration_vpn.sh
J’ai ce genre de messages :
lundi 14 mars 2016, 14:45:02 (UTC+0100)
ppp0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trouvé
ppp0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trouvé
/usr/bin/poff: No pppd is running. None stopped.
141.255.XXX.XXX
Error: argument "IPRED" is wrong: "table" value is invalid
Error: argument "IPRED" is wrong: invalid table ID
Error: argument "IPRED" is wrong: invalid table ID
lundi 14 mars 2016, 14:45:52 (UTC+0100)
/usr/bin/poff: I could not find a pppd process for provider 'ipredator'. None stopped.
ppp0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trou
/root/./configuration_vpn.sh: ligne 51 : [: != : opérateur unaire attendu
lundi 14 mars 2016, 14:46:43 (UTC+0100)
ppp0: erreur lors de la recherche d'infos sur l'interface: Périphérique non trouve
Pourtant j’ai bien une connexion ppp0 quand je lance
pon ipredator
Salut !
Peux-tu lancer le script en mode debug ?
/root/./configuration_vpn.sh -x
Laisse le tourner un peu plus 1 minute et copie le résultat ici :)
Merci,
Ophyde
As-tu bien ajouté la nouvelle table de routage ?
echo 1 IPRED >> /etc/iproute2/rt_tables
Ophyde
Désolé de t’avoir dérangé.
J’ai crut qu’il fallait le lancer juste après l’avoir créé.
Le fait de terminer ton tuto a débloqué la situation.
Merci beaucoup.
Re-bonjour,
Finalement j’ai bien toujours quelques soucis.
J’ai bien ajouté la nouvelle table de routage…
Voilà ce que donne « ifconfig » :
ens18 Link encap:Ethernet HWaddr 66:66:35:30:33:32
inet adr:192.168.1.103 Bcast:192.168.1.255 Masque:255.255.255.0
adr inet6: fe80::6466:35ff:fe30:3332/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:1456573 erreurs:0 :0 overruns:0 frame:0
TX packets:798452 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:1544245803 (1.5 GB) Octets transmis:209303217 (209.3 MB)
lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:65536 Metric:1
Packets reçus:1462 erreurs:0 :0 overruns:0 frame:0
TX packets:1462 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
Octets reçus:239896 (239.8 KB) Octets transmis:239896 (239.8 KB)
lo:1 Link encap:Boucle locale
inet adr:192.168.0.1 Masque:255.255.255.255
UP LOOPBACK RUNNING MTU:65536 Metric:1
ppp0 Link encap:Protocole Point-à-Point
inet adr:141.255.152.114 P-t-P:188.121.241.249 Masque:255.255.255.25 5
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 Metric:1
Packets reçus:7 erreurs:0 :0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:3
Octets reçus:70 (70.0 B) Octets transmis:70 (70.0 B)
ET le mode debug « /root/./configuration_vpn.sh -x »
mardi 15 mars 2016, 18:03:22 (UTC+0100)
ppp0: erreur lors de la recherche d’infos sur l’interface: Périphérique non trouvé
ppp0: erreur lors de la recherche d’infos sur l’interface: Périphérique non trouvé
/usr/bin/poff: No pppd is running. None stopped.
RTNETLINK answers: Network is down
Error: an inet prefix is expected rather than « /32 ».
mardi 15 mars 2016, 18:04:12 (UTC+0100)
Salut !
Combien de temps laisses-tu tourner le script ? Car au premier lancement il tente de démonter automatiquement l’interface ppp0 qu’elle soit présente ou non d’où je pense les erreurs.
Tu es sur quelle version de debian ? Le script que tu utilises est bien celui-ci : configuration_vpn_v3.1.sh ?
https://www.ophyde.com/wp-content/uploads/2015/04/configuration_vpn_v3.1.sh
Ophyde
Oui j’utilise bien ton script 3.1
Et j’ai tenté de laisser tourner le script toute la nuit sans véritable succès…
J’ai tenté de simplifier les chose pour le routage et il semble que ça tienne. Vue qu’il s’agit d’un serveur dédié j’ai utilisé :
route add -net 192.168.0.0 netmask 255.255.255.0 dev ppp0
pour router toutes les connexions vers ppp0.
Peut-être que le script n’est pas compatible avec ton OS, tu fonctionnes sur quoi ? Debian 6 – 7 – 8 ? Ubuntu ?
Ophyde.
J’ai pris la dernière version d’Ubuntu, j’ai laissé le script fonctionner pendant toute la nuit et il semble avoir fonctionné.
J’ai désormais ce genre de messages qui apparaissent :
141.255.150.XXX
mercredi 16 mars 2016, 16:26:51 (UTC+0100)
141.255.150.XXX
mercredi 16 mars 2016, 16:27:21 (UTC+0100)
141.255.150.XXX
mercredi 16 mars 2016, 16:27:51 (UTC+0100)
141.255.150.XXX
mercredi 16 mars 2016, 16:28:21 (UTC+0100)
141.255.150.XXX
(j’utilise ipjetable)
Ok tant mieux ! A la base j’avais fait ce script sous Debian il y a peut être quelques différences sous Ubuntu …
Tiens moi au courant si tu rencontres des soucis !
Ophyde
Merci.
Pour l’instant tout semble opérationnel à part un Low ID sous aMule que je tente de résoudre.
Bonjour,
Afin d’utiliser aMule sur le même serveur, j’ai fait quelques modif du fichier NAT et il semble que celà fonction :
iptables -A PREROUTING -t nat -i ppp0 -p tcp –dport 6891:6899 -j DNAT –to 192.168.0.1
iptables -A PREROUTING -t nat -i ppp0 -p tcp –dport 4662 -j DNAT –to 192.168.0.1
iptables -A PREROUTING -t nat -i ppp0 -p udp –dport 6890 -j DNAT –to 192.168.0.1
iptables -A PREROUTING -t nat -i ppp0 -p udp –dport 4672 -j DNAT –to 192.168.0.1
iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE
iptables -A INPUT -i ppp0 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp –dport 6891:6899 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp –dport 4662 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp –dport 6890 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp –dport 4672 -j ACCEPT
Voilà, je partage pour ceux que ça pourrait intéresser.
Merci pour les infos :-)