Transmission à travers un VPN | Babash
L’idée de cet article est de sécuriser mes téléchargements à travers un VPN, tout en laissant le reste de mes applications de mon NAS Synology accessible depuis l’IP de mon FAI.
Actuellement, j’utilise mon NAS Synology pour télécharger des torrents tout à fait légaux. Je rappelle que ce n’est pas bien de télécharger des oeuvres cinématographiques notamment soumis aux droits d’auteur et tout et tout… Sinon Hadopi vous le rappellera…
Je souhaite donc sécuriser ces téléchargements et pour cela, la solution est d’utiliser un VPN.
Sous DSM, vous pouvez facilement ajouter une connexion VPN dans Panneau de configuration – Réseau. Seulement en faisant cela, tout le trafic de votre NAS passe sur le VPN. Moi, je veux pas….
Après avoir tenté différentes méthodes tordues d’IPtables sur les ports, sur le user ( qui n’est pas possible sous Synology ), je me voyais dans l’impasse jusqu’à ce que je pense à Docker : Docker, disponible dans DSM5, permet de virtualiser des applications très simplement depuis l’interface graphique.
Il me fallait trouver ensuite le moyen de faire tourner Transmission via VPN et comme il s’agit d’un container, tout le trafic pouvait être envoyé sur le VPN, je m’en fiche, il n’y aurait que Transmission qui tournerai !
J’ai donc trouvé mon bonheur rapidement sur github : « haugene/transmission-openvpn »
Choix du fournisseur VPN
Avant d’aller plus loin, il faut souscrire à un fournisseur de VPN compatible avec « haugene/transmission-openvpn« .
Je vous laisse donc choisir le votre ici : https://github.com/haugene/docker-transmission-openvpn#transmission-with-webui-and-openvpn
Pour ma part, j’ai pris 1 mois chez FrootVPN à 4 $ pour essayer. Si cela fonctionne correctement, j’achèterai 12 mois ( 3$/mois ).
Installation
- Désinstaller Transmission s’il est actuellement sur votre NAS,
- Installer Docker depuis le Centre de paquets et le lancer,
- Dans registre, chercher : « transmission vpn »,
- Télécharger le container « haugene/transmission-openvpn« ,
- Dans Image, sélectionnez l’image que vous venez de télécharger et cliquez sur Lancé avec l’exécution de Docker,
- Entrez cette ligne de commande en personnalisant les informations :
docker run --privileged -d -v /your/storage/path/:/data -e "OPENVPN_PROVIDER=PIA" -e "OPENVPN_USERNAME=user" -e "OPENVPN_PASSWORD=pass" -p 9092:9091 haugene/transmission-openvpn
A vous de renseigner les champs suivants :
- /your/storage/path/ : le répertoire où vous allez stocker vos téléchargements : /volume1/Downloads très certainement,
- OPENVPN_PROVIDER : le fournisseur VPN chez lequel vous avez souscrit,
- OPENVPN_USERNAME : l’identifiant,
- OPENVPN_PASSWORD : le mot de passe.
La liste complète des paramètres est disponible ici : https://github.com/haugene/docker-transmission-openvpn#run-container-from-docker-registry
L’accès à l’interface web de Transmission n’est pas possible car vous passez par un VPN dont vous ne connaissez pas l’IP publique. Nous allons corriger cela.
Interface WEB
- Dans registre, chercher : « nginx »,
- Télécharger le container « nginx »,
- Dans Image, sélectionnez l’image que vous venez de télécharger et cliquez sur Lancé avec l’exécution de Docker,
- Entrez cette ligne de commande en personnalisant les informations :
docker run -d -v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro -p 9091:8080 nginx
- Changer la valeur de /path/to/ pour indiquer le chemin complet pour accéder au fichier. Par exemple : /volume1/docker/
- Créer le ficher nginx.conf à l’endroit où vous l’avez indiqué avec ceci :
events { worker_connections 1024; } http { server { listen 8080; location / { proxy_pass http://ip_de_votre_NAS:9092; } } }
Petit récapitulatif
Votre Nas fait tourner Transmission connecté en VPN ayant comme ports d’écoute 9091 sur l’IP publique dont on ne connait pas et 9092 sur votre réseau local.
Votre NAS fait tourner Nginx sur le port d’écoute 9091 ( port par défaut de Transmission ) et redirige toute les requêtes sur le container Transmission qui écoute en 9092.
Résultat :
Transmission ne sera actif que sur le VPN et si le VPN est out, pas de Transmission. Donc, on est secure.
Pour le souci d’interface Web, c’est corrigé par Nginx qui écoute sur le port par défaut 9091.
Vérification
Pour être sûr que tout cela fonctionne, télécharger ce torrent depuis Transmission. Il va vous retourner une adresse IP qui n’est pas la votre.
Allons plus loin
A chaque redémarrage du container Transmission, vous perdrez la configuration du mode « tortue », des limites de débits etc…
Pour corriger cela, il faut ajouter des variables d’environnement au container.
Les variables reconnues par Transmission sont listées sur la page wiki de Transmission.
Il faut donc légèrement les renommer pour les utiliser. Par exemple : speed-limit-up sera renommée en : TRANSMISSION_SPEED_LIMIT_UP
A vous de jouer à présent !