• Serveurs
  • [Discussion] Faire passer le trafic bitTorrent dans un tunnel VPN

un mois plus tard

Bonjour lowfab, es-tu parvenu à faire fonctionner rtorrent (installé avec le script d'ex_rat) via openvpn avec ce tuto ? Personnellement je galère pas mal, je pense que le routage y est pour beaucoup...

Par exemple:

ping -I 192.168.0.123 -c 1 www.google.com

(issu du checkVPN.sh) me renvoie systématiquement

bind: Cannot assign requested address

192.168.0.123 étant l'adresse que j'ai choisi pour le bind de rtorrent

Si quelqu’un peut me donner une piste, merci 🙂

edit : après un reboot je n'ai plus ce problème de bind... Mon seul souci restant est plutot lié à openvpn : si je lance avec un

openvpn /etc/openvpn/<fichier de conf>.ovpn

cela fonctionne. Par contre, dans le tuto il est indiqué

service openvpn start

et là ça ne fait absolument rien... J'ai l'impression que c'est mon fichier en .ovpn qui lui pose problème...

7 mois plus tard

Merci pour ce tuto !!
🙂

un mois plus tard

Salut,

Super tutoriel !
Pour ma part je me pose la question suivante: du moment que nous activons le VPN, rutorrent n'arrive plus à communiquer avec rtorrent, est-ce normal ? Est-ce qu'il y a quelque chose à faire de particulier ?
Je ne sais pas si j'obtiendrais des réponses vu qu'il n'y a pas eu d'activité ces derniers temps mais je tente quand même.
Merci par avance,

Thib

9 mois plus tard

Merci pour ton tutoriel.

Etant donné que je ne veux pas gérer rTorrent depuis le terminal, j'aimerai savoir si ce setup est compatible avec l'installation RuTorrent décrite dans le dernier tuto du site.

Ensuite, j'utilise APF firewall.
Précédemment, j'ai essayé d'installer un serveur VPN sur mon dédié mais le firewall bloquait le surf une fois la liaison VPN établie.
Client --vpn--> Dédié X --internet--> site web x

Même en whitelistant tun0 ça bloquait. Je soupçonne qu'il n'apprécie pas le MASQUERADE
J'ai peur que cela se reproduise avec ce tuto, est-ce quelqu'un sait quelle option activer/désactiver pour que ça marche ?

Enfin, mon fournisseur VPN (PIA) n'autorise qu'un port pour le forwarding et il faut le récupérer via un appel sur leur API.
Est-ce que quelqu'un a réussit à faire fonctionner leur script ou ce script ?
(l'idée est d'ensuite éditer le fichier de config de rTorrent avant le lancement)

Au passage, l'auteur de rTorrent à posté un tuto expliquant le traffic splitting appliqué à son logiciel.
(il n'y a pas de règles de firewall à ajouter)

Merci d'avance,

En effet, j'avais vu ce conteneur.
Mais rien que Docker CE (Community Edition) n'a pas l'air de se lancer, le système de fichier overlay n'est pas présent mon Kimsufi.
C'est certainement lié au kernel monolithique de OVH.

J'avais du coup essayé d'installer Virtualbox ou Proxmox, mais ils requiert un kernel standard que je n'ai également pas réussit à installer.

Entre temps, j'ai réussit à faire fonctionner le traffic splitting et le script de PIA.

"Il ne me reste plus qu'à me motiver" pour écrire un script qui lance tout dans le bon ordre.
(ça va être un enfer rien qu'à cause des droits utilisateurs)

Salut !

Moi je voulais plutôt faire passer toute ma connexion par mon vpn, et en cas de déconnexion du vpn, arrêter automatiquement rtorrent.

Un petit script trouvé ici permettant de ping l'ip du VPN avait été écrit pour Transmission.

J'ai modifié pour rtorrent et refait un petit tuto.

TUTO :

On installe OpenVPN :

apt-get update && apt-get install openvpn -y

On copie notre fichier OpenVPN (.ovpn) dans son répertoire /etc/openvpn.
On renomme notre fichier OpenVPN de "MON_VPN_ULTRA_SECRET.ovpn" en "client.conf".
On ce retrouve donc avec un fichier client.conf dans /etc/openvpn.
On lance automatiquement ce fichier au démarrage de notre machine :

systemctl enable openvpn@client.service

On stop aussi le démarrage automatique de notre session rtorrent :

systemctl disable USER-rtorrent.service

On prends en compte notre modification :

update-rc.d -f USER-rtorrent remove

On créer un script de lancement :

nano /etc/openvpn/script_start_stop_rtorrent_USER.sh

On y colle :

#!/bin/sh

#while true, creation d'une bloucle sans fin
#CHANGER :   IP_ATTRIBUÉ_PAR_VPN  &  USER-rtorrent

while true
do
    sleep 5
	
#Ping IP_ATTRIBUÉ_PAR_VPN, si pas de réponse, on lance l’arrêt de rtorrent + restart du vpn.

TRANS=$(pgrep rtorrent)
ping -q -c2 IP_ATTRIBUÉ_PAR_VPN > /dev/null
if [ $? -ne 0 ] || [ -z  "$TRANS" ]
then
    /etc/init.d/USER-rtorrent stop
    /etc/init.d/openvpn restart
    sleep 20
	
#Si le ping revient alors on restart rtorrent.

ping -q -c1 IP_ATTRIBUÉ_PAR_VPN > /dev/null && /etc/init.d/USER-rtorrent start
fi
done

**On remplace "USER" par le nom d'utilisateur rtorrent (2fois)
**On remplace "IP_ATTRIBUÉ_PAR_VPN" par l'ip que nous attribue OpenVPN (2fois)

On rend exécutable notre script :

cd /etc/openvpn && chmod 777 script_start_stop_rtorrent_USER.sh

On exécute automatiquement notre script au démarrage de notre machine :

nano /etc/rc.local

On ajoute entre "fi" et "exit0" le chemin de notre script avec "&" à la fin de la ligne :

/etc/openvpn/script_start_stop_rtorrent_USER.sh &

On reboot notre machine et le tour est joué !

Quand notre machine est connectée au VPN (controle avec le ping), la session rtorrent reste active.
Des que notre machine ce déconnecte du VPN (pour n'importe quel raison), la session rtorrent ce stop et le service openvpn ce relance en boucle jusqu’à avoir un connexion validée sur le VPN (encore une fois, grâce au test du ping sur l'ip VPN attribué) puis relance automatiquement la session rtorrent.

Fonctionne parfaitement chez moi :=)

5 mois plus tard

Salut, il y a quelques années j'ai utilisé ce tuto qui fonctionnait bien, mais depuis quelques temps, j'ai des arrets totals de download, sa commence a download, sa stop pendant 30 min, sa reprend un peu et je remet un peu en cause le tuto qui à surement fait son temps 🙂

Une personne à possibilité de proposer une version à jour de ce tuto ?
Merci @CLusmi pour ta maj, mais dans mon cas je souhaite qu'uniquement rtorrent passe par le vpn et non le serveur complet.

    10 mois plus tard

    Hello !

    J'ai sorti la pelle en cette belle journée de confinement pour apporter ma petite pierre.

    De mon côté, j'ai réinstallé mon serveur à la mano sur une Debian 10.3 et j'ai remarqué, tout comme vous, que les scripts up et down avaient bien vécu 😄

    Les modifications sont mineures mais voilà ce que j'ai:

    Script up.sh

    #! /bin/sh
    # This script enables policy routing after the tunnel interface is brought up
    # Policy routing is used to make sure response packets go through the tunnel interface
    # This is mandatory when your ISP has setup anti-spoofing filters
    
    #Créer une chaine iptables nommée SERVICES, renverra un warning sans conséquences si déjà crée. Pour la propreté de la conf. vous pouvez éventuellement supprimer$
    
    /sbin/iptables -N SERVICES
    
    
    #Obtenir l'adresse IP donne par le VPN tun0, supposer que votre vpn cre une interface de ce nom.
    NET_DEV="tun0"
    NET_IP="$(command /sbin/ifconfig "${NET_DEV}" \
        | command grep 'inet ' \
        | command cut -d' ' -f10)"
    
    
    # Add a default route via <tun0> into the VPN routing table
    ip route add default dev tun0 table VPN
    
    # Pass traffic from lo:1 (192.168.0.1) to the VPN routing table, using policy routing ("ip rule" commands)
    ip rule add from 192.168.0.1/32 table VPN
    
    # Pass traffic from tun0 IP address to the VPN routing table
    ip rule add from "$NET_IP"/32 table VPN
    
    #On ajoute les regles iptables pour faire le NAT
    
    #Source NAT and destination NAT rules
    /sbin/iptables -A PREROUTING -t nat -i tun0 -p tcp --dport 45000:65000 -j DNAT --to 192.168.0.1
    /sbin/iptables -A PREROUTING -t nat -i tun0 -p udp --dport 6881 -j DNAT --to 192.168.0.1
    /sbin/iptables -A POSTROUTING -t nat -o tun0 -j MASQUERADE
    
    # Allow session continuation traffic
    /sbin/iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    # Allow Bittorrent traffic via tun0
    /sbin/iptables -A SERVICES -p tcp --dport 45000:65000 -j ACCEPT 	# rTorrent random range
    /sbin/iptables -A SERVICES -p udp --dport 6881 -j ACCEPT			# DHT
    
    # Disallow Torrent traffic via enp0s3
    /sbin/iptables -A FORWARD -s 192.168.0.1/32 -o enp0s3 -j DROP	# ATTENTION au nom de l'interface
    
    #Demarrage de rtorrent
    /etc/init.d/<user1>-rtorrent start
    /etc/init.d/<user2>-rtorrent start
    # etc etc...
    
    #Démarrage du script vérifiant que le VPN est toujours actif
    killall checkVPN
    /usr/bin/checkVPN &
    

    Script down.sh

    #! /bin/sh
    # This script disables policy routing before the tunnel interface is brought down
    
    #Trouver l'adresse IP affectée à tun0 par le VPN
    NET_DEV="tun0"
    NET_IP="$(command /sbin/ifconfig "${NET_DEV}" \
        | command grep 'inet ' \
        | command cut -d' ' -f10)"
    
    #On arrête le script qui va vérifier l'existence du tunnel VPN
    killall checkVPN
    
    #On stoppe rtorrent
    /etc/init.d/<user1>-rtorrent stop
    /etc/init.d/<user2>-rtorrent stop
    # etc etc...
    
    #On efface les règles iptables ajoutées
    /sbin/iptables -D FORWARD -s 192.168.0.1/32 -o enp0s3 -j DROP			# ATTENTION au nom de l'interface
    /sbin/iptables -D SERVICES -p udp --dport 6881 -j ACCEPT                # DHT
    /sbin/iptables -D SERVICES -p tcp --dport 45000:65000 -j ACCEPT         # rTorrent random range
    /sbin/iptables -D INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    /sbin/iptables -D POSTROUTING -t nat -o tun0 -j MASQUERADE
    /sbin/iptables -D PREROUTING -t nat -i tun0 -p udp --dport 6881 -j DNAT --to 192.168.0.1
    /sbin/iptables -D PREROUTING -t nat -i tun0 -p tcp --dport 45000:65000 -j DNAT --to 192.168.0.1
    
    
    # Remove rule for the secondary loopback IP address (192.168.0.1)
    ip rule del from 192.168.0.1/32 table VPN
    
    # Remove rule for tun0 IP address
    ip rule del from  "$NET_IP"/32 table VPN
    
    # Remove the default route via tun0 from the IPRED routing table
    ip route del default dev tun0 table VPN
    

    superboki et Whisper40 dites moi si cela fonctionne pour vous (10 mois plus tard) =D

    @+ et surtout, RESTEZ CHEZ VOUS !

    10 jours plus tard

    Bonjour, une question, si j'installe un vpn (pas un serveur) pour faire transiter la data de mon dédié, n'ais-je pas un risque de ne plus arriver à m'y connecter en ssh/Ftp une fois le vpn activé ?

    Merci.

    Salut, aucun risque

    ah bah pourtant... lol.

    J'ai lancé la commande, le vpn c'est connecté, et puis bah... plus aucune réponse du serveur, déconnecté du ssh, ftp et toutes autres interfaces.

    J'ai lancé un reboot.

      9 mois plus tard

      /etc/network/interfaces n'existe plus, quelqu'un pourrait faire une config fonctionnel pour netplan? 🙁)

      Gkide tu as installé un VPN sur ton serveur, et tu as fait transiter le traffic de ce serveur via ce même VPN ?

      Répondre…