Transmission à travers un VPN

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 :

 

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 !

francois

Passionné par les nouvelles technologies depuis ma jeunesse, je continue aujourd'hui par mon métier cette passion. Toujours curieux, je tiens ce blog comme mémo de mes découvertes et profite de cet espace pour vous les faire partager.

Vous aimerez aussi...

5 réponses

  1. Raphaël dit :

    salut François,

    Merci pour ton article qui m’a bien aidé, comme promis voici ma contribution. Il n’est plus utile de passer par un autre container avec un proxy http (ici, nginx). En effet on peut tout simplement passer un argument à docker pour lui demander de résoudre tout seul la correspondance des ports sur un réseau local :

    d’une manière plus détaillée tout est expliqué sur le github du développeur.

    Bien à toi,

    Raphaël

    • THIEBAUT dit :

      Bonjour Raphaël.

      J’aimerai me passer du reverse proxy, et utilisé l’option LOCAL_NETWORK. Or je dois mal m’y prendre car je n’arrive pas à accéder à la WEB UI de Transmission.

      L’IP du LOCAL_NETWORK est bien celle du NAS ? Cela avait il était concluant pour vous ? Merci d’avance

  2. gerem dit :

    Hello,

    J’ai suivi ton tuto avec un abonnement Frootvpn.

    Le dl n’est pas hyper rapide, et l’upload est quasiment inexistant…

    J’ai changé de région vpn, sans succès.

    Tu rencontres les mêmes problèmes?

  3. gerem dit :

    Ok, j’ai compris!

    https://torrentfreak.com/review/frootvpn-review/

    frootvpn ca ne vaut rien!

    • francois dit :

      Bonjour,
      Merci pour votre retour, je regardais justement ce qui n’allait pas ! De mon côté, mon abonnement s’est terminé en décembre, du coup je ne pouvais pas tester :/

      Donc, effectivement, froot n’est peut être pas terrible ces derniers temps…

      Une astuce a prendre en compte du coup lors des tests : prendre un abonnement de 1 mois uniquement comme cela, si ce n’est pas bon, on peut changer sans se ruiner.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *