J'ai récemment acquis un BeagleBone Black, sur lequel j'ai installé Ubuntu en utilisant cette méthode . Tout a fonctionné jusqu'à présent. Je veux utiliser mon BeagleBone comme une boîte torrent, mais je ne veux pas le faire directement via ma connexion Internet (je ne pense pas que mon FAI l'aimera) - j'ai donc acheté un abonnement VPN à partir d'un serveur européen . J'ai déjà connecté manuellement mon ordinateur portable à ce VPN avant d'exécuter la transmission. Je sais que la connexion VPN fonctionne dans Ubuntu et l'hôte fournit des informations de configuration pour OpenVPN. Chose ennuyeuse, la nature dynamique de l'adresse IP attribuée signifie qu'elle changerait fréquemment, donc lorsque j'utilisais mon ordinateur portable avec le VPN, je définissais manuellement l'adresse d'écoute dans Transmission à la valeur requise.
Idéalement, j'aimerais la configuration suivante:
- La transmission ne fonctionne que sur le VPN et il est interdit d'exécuter des torrents sur la connexion WAN normale
- Seul le trafic dirigé vers la transmission sera accepté ou envoyé via le VPN, tout autre trafic non sollicité sera supprimé
- La transmission utilise le port approprié pour écouter, en fonction de l'adresse IP attribuée
- OpenVPN démarre automatiquement au démarrage, qui démarre ensuite la transmission
- L'interface graphique Web de la transmission est accessible via le LAN, et éventuellement via Internet depuis ma connexion WAN (c'est-à-dire sans retour via le VPN)
la source
Réponses:
Remarque: (2016-02-22) J'ai réalisé que cette configuration fuit les requêtes DNS vers les trackers torrent via le WAN normal, au lieu de l'envoyer via le VPN. J'examine comment résoudre ce problème. Je vais continuer à exécuter ma configuration, car la connexion elle-même utilise correctement le VPN.
Mise à jour: j'ai remarqué que lorsque je paramétrais la transmission pour qu'elle télécharge du jour au lendemain sur le Beaglebone, l'utilisation du processeur passait à 100% après un certain temps. Cela ne semble pas se produire après la même période de temps, parfois c'est bien toute la nuit, d'autres fois, il se débat après 10 minutes. Il peut également récupérer en mettant en pause tous les torrents et en attendant que la charge du processeur revienne à la normale, puis en redémarrant. J'enquête toujours. Une solution de contournement pourrait être de faire une pause et de reprendre périodiquement les torrents, bien que ce ne soit pas une très bonne solution de contournement. Notez que ce problème ne s'applique qu'au Beaglebone et probablement aux autres appareils ARM. Je n'ai jamais eu ce problème sur un processeur x86.
introduction
J'ai développé et testé cette solution pour Ubuntu 14.04, fonctionnant sur un BeagleBone Black. Le fournisseur VPN que j'utilise s'appelle ibVPN . Cela devrait fonctionner avec tout matériel pris en charge (c'est-à-dire sur un ordinateur x86 "normal"), avec n'importe quel fournisseur VPN compatible OpenVPN - et devrait probablement fonctionner pour 14.10 ou version ultérieure. À un moment donné, je pense qu'Ubuntu utilisera SystemD pour le démarrage, ce qui signifie que les scripts Upstart utilisés ici devront être migrés. Mise à jour: Jonas Kalderstam a une réponse ci-dessous pour utiliser SystemD. Je suppose également que ufw est utilisé comme pare-feu, si vous utilisez quelque chose de différent, les commandes ufw devront être modifiées.
Je suppose que tout le travail se fait via une connexion SSH au système, bien que cela fonctionnerait aussi bien s'il était tapé dans un terminal physique.
Ceci est un assez long tutoriel, veuillez tout d'abord le lire et assurez-vous que vous êtes à l'aise avec ce que vous allez faire.
J'ai également remarqué que la transmission ne se lie pas correctement à une adresse IP pour envoyer des données UPnP / NAT-PMP - c'est-à-dire que les données du torrent passent correctement par le VPN, mais si la redirection de port UPnP est activée, la transmission demandera la redirection de port du routeur local , pas via le VPN du serveur VPN. Par conséquent, j'ai désactivé le transfert de port par le script Upstart, car il peut sembler avoir fonctionné, mais ce n'est pas le cas. Il devrait être possible d'utiliser iptables et iproute pour forcer tout le trafic provenant de l'utilisateur de la transmission debian via le VPN, mais je suis toujours à la recherche de cela. Cela devrait également fonctionner si la route par défaut a été modifiée pour envoyer toutes les données Internet via le VPN, mais je ne voulais pas le faire car j'utilise également ce serveur pour d'autres choses, et cela entraînerait également toutes les mises à jour du système via le VPN. VPN.Cette question contient des informations supplémentaires si vous voulez vraiment que UPnP fonctionne sur le VPN . Mise à jour: falk0069 a une astuce fantastique ci-dessous pour aider à encourager UPnP sur le VPN.
Installation et configuration d'OpenVPN
Je vous recommande d'essayer de faire fonctionner votre connexion VPN avec Ubuntu avant d'essayer de la faire fonctionner ici - c'est-à-dire à partir d'un bureau. Cela confirmera que vous avez la configuration correcte et réduira le temps passé à déboguer.
Tout d'abord, installez les packages requis
Ensuite, créez un répertoire dans lequel stocker les fichiers de configuration. J'utilise / opt / ibVPN, car c'est le fournisseur que j'utilise. Changez-le en ce que vous voulez.
La première chose à faire dans ce nouveau répertoire est de créer le fichier de configuration pour exécuter le client VPN. ibVPN fournit un fichier de configuration de base pour les utilisateurs Linux, que je viens juste de copier et de coller.
Copiez et collez votre version modifiée dans vim, en utilisant les paramètres de votre fournisseur VPN. (Pour info, collez le terminal Ubuntu est
Ctrl+Shift+V
) Vous devriez pouvoir l'obtenir auprès de votre fournisseur VPN.Pour ceux qui ne connaissent pas vim, appuyez sur
Insert
pour taper ou coller du texte, puis appuyez surEscape
et tapez:wq
pour enregistrer et quitter. Bien sûr, vous n'avez pas besoin d'utiliser vim - n'importe quel éditeur de texte fonctionnera.J'expliquerai rapidement ce fichier de configuration: les 18 premières lignes spécifient les paramètres spécifiques à utiliser avec le serveur, ceux-ci proviennent d'ibVPN - les vôtres seront probablement légèrement différents si vous avez un fournisseur différent. Les lignes suivantes sont des options modifiées que j'ai spécifiées.
Si votre fichier de paramètres contient des lignes
auth-user*
, commentez-les. Pour que cette configuration fonctionne automatiquement, nous devons avoir un fichier avec le nom d'utilisateur et le mot de passe - assurez-vous donc que le mot de passe que vous avez choisi pour le fournisseur VPN est fort, aléatoire et unique.Le
auth-user-pass pass
indique à OpenVPN de rechercher un fichier appelépass
pour lire l'utilisateur et le mot de passe.auth-nocache
supprime le mot de passe de la mémoire, ce qui pourrait légèrement augmenter la sécurité si vous en avez peur.persist-tun
essaiera de garder la même adresse IP du serveur si votre connexion est interrompue, ce qui devrait, espérons-le, signifier moins de démarrage et d'arrêt de Transmission-daemon.route-noexec
indique au client OpenVPN de ne pas utiliser automatiquement les routes fournies par le serveur - ce qui entraînerait tout le trafic réseau sur le VPN. Nous voulons simplement envoyer du trafic torrent, nous aurons donc besoin d'utiliser différents paramètres de routage.lport 1195
indique au client OpenVPN d'utiliser le port 1195 au lieu de 1194 - dans mon cas, je veux également exécuter un serveur OpenVPN sur le même appareil, et le serveur devra utiliser le port 1194. Même si vous n'exécutez pas de serveur OpenVPN, il ne fait pas de mal à faire ce changement.J'ai changé la ligne
dev tap
endev tap1
, pour forcer le périphérique virtuel à être tap1 au lieu d'être attribué par OpenVPN, à nouveau en raison de l'exécution d'un serveur OpenVPN distinct. Même si vous n'exécutez pas de serveur VPN, ce changement ne devrait pas avoir d'importance. Les scripts de pare-feu ont été écrits pour être utiliséstap1
, donc si vous préférez utiliser un autre appareil, n'oubliez pas de modifier ces scripts le cas échéant.lladdr 00:FF:11:AA:BB:CC
indique à OpenVPN d'attribuer l'interface tap pour avoir cette adresse MAC, ce qui peut être utile pour les règles de pare-feu iptables.route-up
etdown
exécutez des scripts pour démarrer et arrêter le démon de transmission selon les besoins - ceux-ci sont nécessaires ici car ils s'exécutent avec des variables d'environnement contenant des informations sur la connexion, qui sont nécessaires pour lier correctement Transmission à la bonne adresse IP et au bon port.Dans mon cas, j'avais un certificat de serveur du fournisseur VPN - qui doit également être dans le même répertoire que le fichier de configuration.
Copiez et collez cela, ou déplacez-le via SCP ou SSHFS.
Évidemment, si vous n'utilisez pas de compte ibVPN, votre certificat sera différent.
Faisons maintenant le fichier de mot de passe:
La première ligne doit être le nom d'utilisateur complet, puis la deuxième ligne doit être le mot de passe. Ce doit être le seul contenu de ce fichier.
Nous devons également sécuriser les autorisations sur ce fichier, sinon OpenVPN ne démarrera pas.
Cela rendra le fichier en lecture seule, et uniquement pour le propriétaire (c'est-à-dire qu'aucun autre utilisateur ne peut le lire du tout)
Ces commandes créeront les fichiers à exécuter au démarrage et les définiront pour être exécutables uniquement par root.
À ce stade, c'est probablement une bonne idée de tester si la connexion VPN fonctionne réellement. Commencez la connexion avec:
Vous verrez des avertissements indiquant que les commandes externes haut et bas n'ont pas pu être exécutées, mais ne vous en faites pas. Si cela fonctionne, vous verrez
Initialization Sequence Completed
sur le terminal. Appuyez surControl+C
pour mettre fin à la connexion. Si cela ne fonctionne pas, vous devrez rechercher pourquoi et le corriger avant de continuer. J'ai trouvé qu'il fallait parfois quelques coups pour commencer à travailler. Assurez-vous que votre fichier de mot de passe est correct. Il existe de nombreuses ressources sur Internet à propos d'OpenVPN, alors jetez un œil.À ce stade, il est probablement plus facile de passer à la transmission opérationnelle. Une fois que vous êtes sûr que le VPN et la transmission peuvent fonctionner séparément, ils peuvent être combinés.
Installation et configuration de Transmission
Installez les packages requis:
Par défaut, la transmission s'exécute automatiquement au démarrage. Étant donné que nous utiliserons finalement OpenVPN pour démarrer la transmission, nous voulons désactiver cela. Pour ce faire, modifiez le fichier de configuration de Transmission-daemon
Et changez la ligne suivante pour lire:
Maintenant, la transmission ne démarre pas au démarrage.
Créons maintenant un répertoire pour que les paramètres de transmission résident et pour que les torrents téléchargés y entrent. Cela suppose que vous avez déjà configuré un disque quelconque et qu'il est monté dans / media / arm-disk /. Pour des raisons de sécurité, le démon sera exécuté par son propre utilisateur plutôt que comme root ou comme "ubuntu". Un nouvel utilisateur est créé par le programme d'installation de transmission-daemon, "debian-transmission". Cet utilisateur doit posséder le dossier que nous créons et avoir un accès en lecture et en écriture à l'emplacement de stockage des torrents en cours de téléchargement.
Maintenant, nous devons commencer la transmission, brièvement, afin qu'il crée le fichier de paramètres dont nous avons besoin:
Cette commande démarre transmission-daemon en tant qu'utilisateur debian-transmission, lui indique d'utiliser le répertoire / opt / transmission pour les fichiers de paramètres et lui dit de continuer à s'exécuter au premier plan. Une fois qu'il a fonctionné pendant quelques secondes, appuyez sur
Control+C
pour le terminer. Nous pouvons maintenant modifier le fichier de paramètres.Nous devons maintenant modifier les lignes suivantes à partir de leurs valeurs par défaut pour lire:
Enregistrez et quittez (Escape, tapez: wq et appuyez sur Entrée)
Les deux modifications du milieu permettront l'utilisation du répertoire "incomplet", séparant vos torrents finis de ceux qui ne sont pas terminés. Ce n'est pas tout à fait nécessaire, mais personnellement, je le trouve extrêmement utile. La dernière modification permet à l'interface graphique Web d'être accessible par n'importe quel ordinateur du réseau local (en supposant que votre sous-réseau LAN soit 192.168.1.0, modifiez-le s'il est différent).
C'est maintenant une bonne idée d'exécuter à nouveau Transmission, pour voir si cela fonctionne et peut réellement télécharger un torrent. Nous utiliserons une fenêtre de navigateur Web pour accéder à l'interface graphique et ajouter un torrent. Tout d'abord, autorisons l'accès à l'interface graphique Web via le pare-feu à partir du LAN, puis réexécutez le démon de transmission.
Visitez cette URL dans Firefox (ou le navigateur que vous préférez): http://XXX.XXX.XXX.XXX:9091 , où XXX est remplacé par l'adresse de votre serveur sur le LAN (c.-à-d. 192.168.1.10). Trouvez un torrent à télécharger, par exemple Big Buck Bunny en 1080p60hz. Il s'agit d'un court métrage gratuit, légalement disponible en téléchargement gratuit. Dans l'interface graphique de transmission, cliquez sur le bouton "Ouvrir torrent" et collez ce lien (ou tout autre torrent que vous aimez) dans la première case. Appuyez ensuite sur "Télécharger". Si la transmission fonctionne correctement, le torrent commencera à se télécharger. Si ce n'est pas le cas, vous devrez déterminer pourquoi avant de continuer. Il existe de nombreuses ressources disponibles sur Internet pour utiliser le démon de transmission. Il se peut également que le torrent que vous avez choisi ne fonctionne pas, essayez d'abord quelques autres.
Une fois le téléchargement terminé, appuyez sur
Control+C
dans la fenêtre du terminal pour arrêter le démon de transmission.Configurer la transmission de liaison à l'interface VPN
Faisons maintenant un script Upstart, qui sera utilisé pour démarrer la transmission lorsque le VPN sera prêt.
Ne vous inquiétez pas si cela se plaint, c'est juste pour faire une sauvegarde du fichier Upstart, s'il en existait un - il pourrait ne pas en avoir. Ouvrons vim pour éditer le nouveau:
Collez-le dans l'éditeur:
Enregistrez et fermez vim. (
Escape
, puis tapez:wq
). Encore une fois, ouvrez vim:Et collez ceci:
Encore une fois, enregistrez et fermez vim. (
Escape
, puis tapez:wq
). Finalement:Collez ceci:
Ces scripts indiquent à Upstart d'écouter le signal "transmission-vpn-up". Le script "transmission-up.conf" configure ensuite les règles de routage requises pour envoyer le trafic depuis l'adresse VPN locale via l'interface VPN, et définit le pare-feu pour autoriser le trafic du VPN vers le port d'écoute pour la transmission. Le trafic dirigé vers le port d'écoute de Transmission depuis l'interface LAN normale est bloqué. Le script "transmission-daemon.conf" démarre alors transmission-daemon avec les paramètres requis pour le lier à l'adresse IP VPN. Notez que cette commande garantira également que UPnP / NAT-PMP est désactivé - voir ma note en haut sur la redirection de port. Le "nice -15" définit la transmission comme ayant une priorité plus faible, ce que j'ai trouvé utile lors de l'utilisation du BeagleBone spécifié plus bas - parfois la transmission peut monopoliser les ressources, ce qui ralentit le système. Au moins avec une faible priorité, des tâches système plus importantes peuvent toujours s'exécuter. Le script "transmission-down.conf" supprimera les règles de pare-feu lorsque le VPN est arrêté. Trois scripts différents sont utilisés pour que le démon de transmission puisse être exécuté en tant qu'utilisateur non privilégié, mais les règles de pare-feu peuvent être exécutées en tant que root.
Revenons maintenant aux paramètres d'OpenVPN et éditons les scripts "route-up" et "down" pour déclencher le démarrage et l'arrêt de notre script de transmission.
Collez-le dans vim:
Tout ce que ce script fait, c'est dire à Upstart que le démon de transmission doit démarrer, et lui donne les informations dont il a besoin pour se connecter à la connexion VPN.
Encore une fois, plus de collage:
Ce script est encore plus simple - il signale l'arrêt du démon de transmission.
À ce stade, c'est probablement une bonne idée de s'assurer que le propriétaire de l'ensemble du dossier de configuration VPN est l'utilisateur root - puisque ces scripts s'exécutent en tant que root, toute personne qui pourrait les modifier pourrait exécuter tout ce qu'ils voulaient en tant qu'utilisateur root.
Cela signifie désormais que seul l'utilisateur root peut modifier ou afficher les paramètres de connexion VPN.
OK, nous avons presque fini! Testons si notre configuration fonctionne jusqu'à présent:
Connectez-vous à nouveau à l'interface graphique Web de transmission et reprenez le torrent existant ou ajoutez-en un nouveau. Il devrait pouvoir être téléchargé, peut-être après quelques minutes d'attente pour les pairs. Une façon astucieuse que j'ai trouvée de tester si cela fonctionne ou non est de regarder iftop. Installez iftop et exécutez:
Cet écran affichera toutes les connexions passant par le VPN. Si votre torrent se télécharge et utilise correctement le VPN, il y aura beaucoup d'adresses IP et de noms d'hôtes ici. Regardez également iftop pour la connexion LAN:
Ici, vous devriez voir une grande quantité de trafic vers une seule adresse IP, étant le serveur VPN, puis seulement un trafic minimal vers d'autres périphériques LAN - en supposant que vous n'exécutez pas d'autres services sur votre BeagleBone.
Vous pouvez confirmer que le VPN fonctionne en suivant ces instructions .
Ce site vous permet de télécharger un torrent pour voir l'adresse IP que les autres pairs utilisent pour vous connecter - si tout fonctionne, ce sera l'adresse IP VPN et non votre propre adresse IP WAN.
Si vous rencontrez des problèmes, vous pouvez voir le journal des erreurs Upstart en procédant comme suit:
Dans une fenêtre de terminal / SSH distincte, essayez d'exécuter la commande tail tout en démarrant la connexion VPN comme ci-dessus et recherchez les messages d'erreur. J'espère que vous pourrez résoudre le problème en voyant les messages d'erreur, si ce n'est pas fouiller sur Internet, ou poster un commentaire.
Configurez tout pour démarrer automatiquement
Si vous êtes satisfait de lancer manuellement la commande pour démarrer le tunnel OpenVPN, ou si vous voulez le faire avec votre propre script, alors vous avez terminé. Mais je voulais qu'il démarre au démarrage, j'ai donc créé un autre script Upstart pour lancer OpenVPN.
C'est la dernière chose que nous devons coller!
Tout cela ne fait qu'attendre que le système signale que le réseau est prêt, puis il démarrera le tunnel OpenVPN - qui à son tour démarrera la transmission. Lorsque le système est éteint ou si le réseau est arrêté pour une raison quelconque, Upstart supprimera les règles de pare-feu et fermera le démon de transmission. Facile! Cela continuera également à fonctionner après un redémarrage, alors maintenant vous êtes prêt.
Pour interagir avec Transmission, utilisez l'interface graphique Web comme nous l'avons fait pendant la phase de configuration. Il est également possible de rendre l'interface graphique accessible sur Internet, en configurant la redirection de port. Il existe de nombreux didacticiels sur la façon de procéder, donc je ne le répéterai pas ici.
Quant à obtenir les téléchargements terminés du BeagleBone, j'utilise NFS. Je peux obtenir des vitesses d'environ 8 Mo / s en copiant sur le LAN du BeagleBone vers mon ordinateur de bureau - ce qui est assez bon pour un appareil aussi peu énergivore. Ubuntu fournit des informations pratiques pour la configuration de cela.
la source
Je viens de faire fonctionner cela avec SystemD, alors j'ai pensé partager. J'ai placé tous mes scripts, configs et certificats dans le même répertoire que j'appellerai
/etc/openvpn/myprovider
Configuration OpenVPN
Cela dépend de votre VPN spécifique, mais une différence avec la configuration de @ seanlano est que je n'utilise qu'un
route-up
script. Donc, les choses dont vous avez besoin en plus de votre configuration de travail fournie , sont ces lignes:Où vous placez le
transmission-route-up.sh
script où vous le souhaitez. Notez l'absence dedown
script. (Mon VPN utilisait déjà un script down personnalisé, il aurait donc été en conflit de toute façon)./etc/openvpn/myprovider/transmission-route-up.sh:
La première ligne, la
printenv
, est importante. Placez-le où vous voulez, il sera utilisé plus tard dans le service SystemD. Je le place dans le même répertoire que ma configuration vpn.Remplacez 24328 par le port que votre démon de transmission doit écouter. J'utilise iptables (en utilisant Debian), vous pouvez donc probablement remplacer ces lignes par les lignes ufw de la configuration de @ seanlano.
Service VPN SystemD
C'est le service qui démarre automatiquement le VPN pour nous. Vérifiez que le chemin d'accès à openvpn est correct sur votre ordinateur et que le chemin d'accès au fichier de configuration est également correct. Vous devez spécifier les chemins d'accès complets dans les services SystemD.
/etc/systemd/system/my-vpn.service:
Activez le service VPN avec:
Et testez-le avec:
Si c'est démarré / en cours d'exécution, vous êtes bon.
SystemD transmission-daemon.service
Ce script nécessite le service vpn, donc si le vpn tombe en panne, le démon de transmission descend également. Ceci est pratique si le vpn est redémarré et que vous obtenez une nouvelle adresse IP, car la transmission devra alors redémarrer et se lier à nouveau, ce qui devrait être géré automatiquement. Notez que nous utilisons les variables d'environnement que nous avons imprimées
route-up
plus tôt dans le script./etc/systemd/system/transmission-daemon.service:
L'activer
Et commencez
Lorsque vous redémarrez, tout devrait démarrer automatiquement (dans l'ordre!). Notez que l'utilisation
Type=simple
dans le service vpn provoque certains problèmes pour le timing de l'ordre des scripts, je recommande donc de l'utiliser à laforking
place.Vous pouvez spécifier une adresse IP réelle pour le
rpc-bind-address
si vous voulez être plus restrictif (il s'agit de l'adresse d'écoute de l'interface graphique Web, qui ne doit pas être votre IP VPN). Et si vous voulez exécuter la transmission avec nice, changez simplement laExecStart
ligne et ajoutez/usr/bin/nice -n15
au début.Gestion des changements d'adresse
Une chose que j'ai notée au fil du temps est que si la connexion VPN pour une raison quelconque obtient une nouvelle adresse IP, la transmission sera toujours liée à l'ancienne adresse et cessera de fonctionner. Et simplement faire
systemctl restart transmission-daemon.service
ne suffit pas. Il doit s'arrêter complètement, puis recommencer à zéro.Je ne sais pas pourquoi, mais pour cette raison, j'ai ajouté les lignes suivantes à ma racine crontab (
sudo crontab -e
):la source
J'ai remarqué que vous avez mentionné que la transmission ne passe pas par le VPN pour UPnP / NAT-PMP. J'ai également remarqué cela et j'ai créé un correctif pour la transmission afin qu'il honore le paramètre bind-address-ipv4 pour UPnP. NAT-PMP est un peu plus difficile à implémenter car vous devez déterminer la passerelle par défaut. L'UPnP est le principal qui est utilisé ces jours-ci, donc il est probablement assez bon. J'ai enregistré cela en tant que bogue sur le site trac.transmissionbt et fourni le correctif. Espérons qu'il sera intégré dans une future version. https://trac.transmissionbt.com/ticket/5990
Une autre option pour le moment si vous ne souhaitez pas recompiler est d'exécuter manuellement upnpc à partir du package miniupnpc. Par exemple
Où 10.10.10.51 est votre IP VPN et 51515 est votre port TCP / UDP demandé.
Je ne sais pas combien de temps le transfert est bon. Vous pouvez également utiliser l'option «-d» pour supprimer votre port lors de la déconnexion. J'ai constaté que si je ne le fais pas, je ne peux plus obtenir le même port si je me reconnecte au VPN.
À votre santé
la source
miniupnpc
! Et j'espère que le patch sera fusionné et ce problème sera résolu pour toujours. En attendant, je vais certainement essayer d'utiliser votre astuce pratique.