Hinweis: (22.02.2016) Ich habe festgestellt, dass diese Konfiguration DNS-Anfragen über das normale WAN an die Torrent-Tracker weiterleitet, anstatt sie über das VPN zu senden. Ich untersuche, wie ich das beheben kann. Ich werde meine Konfiguration jedoch weiterhin ausführen, da die Verbindung selbst das VPN ordnungsgemäß verwendet.
Update: Mir ist aufgefallen, dass die CPU-Auslastung nach einer Weile auf 100% sinkt, wenn ich Transmission so einstelle, dass sie über Nacht auf den Beaglebone heruntergeladen wird. Es scheint nicht nach der gleichen Zeitspanne zu passieren, manchmal ist es die ganze Nacht über in Ordnung, manchmal tut es sich nach 10 Minuten schwer. Es kann auch wiederhergestellt werden, indem alle Torrents angehalten werden und gewartet wird, bis die CPU-Last wieder normal ist, und dann erneut gestartet wird. Ich recherchiere noch. Eine Problemumgehung könnte darin bestehen, Torrents in regelmäßigen Abständen anzuhalten und fortzusetzen, obwohl dies keine sehr gute Problemumgehung ist.
Beachten Sie, dass dieses Problem nur bei Beaglebone und wahrscheinlich auch bei anderen ARM-Geräten auftritt. Ich hatte dieses Problem noch nie bei einer x86-CPU.
Einführung
Ich habe diese Lösung für Ubuntu 14.04 auf einem BeagleBone Black entwickelt und getestet. Der von mir verwendete VPN-Anbieter heißt ibVPN . Es sollte jedoch mit jeder unterstützten Hardware (dh auf einem "normalen" x86-Computer) und mit jedem OpenVPN-kompatiblen VPN-Anbieter funktionieren - und sollte wahrscheinlich für 14.10 oder höher funktionieren. Ich glaube, dass Ubuntu irgendwann SystemD zum Booten verwenden wird, was bedeutet, dass die hier verwendeten Upstart-Skripte migriert werden müssen. Update: Jonas Kalderstam hat unten eine Antwort für die Verwendung von SystemD. Ich gehe auch davon aus, dass ufw als Firewall verwendet wird. Wenn Sie etwas anderes verwenden, müssen die ufw-Befehle hier geändert werden.
Ich gehe davon aus, dass die gesamte Arbeit über eine SSH-Verbindung mit dem System erledigt wird, obwohl es genauso gut funktionieren würde , wenn es in ein physisches Terminal eingegeben würde.
Dies ist ein ziemlich langes Tutorial. Bitte lesen Sie zuerst alles durch und vergewissern Sie sich, dass Sie mit dem, was Sie tun, vertraut sind.
Ich habe auch bemerkt, dass die Übertragung nicht richtig an eine IP-Adresse gebunden ist, um UPnP / NAT-PMP-Daten zu senden - dh Torrent-Daten werden korrekt über das VPN übertragen, aber wenn die UPnP-Portweiterleitung aktiviert ist, fordert die Übertragung die Portweiterleitung vom lokalen Router an , nicht über das VPN vom VPN-Server. Daher habe ich das Upstart-Skript dazu gebracht, die Portweiterleitung zu deaktivieren, da es so aussieht, als hätte es funktioniert, aber nicht. Es sollte möglich sein, iptables und iproute zu verwenden, um den gesamten Datenverkehr vom Debian-Übertragungsbenutzer über das VPN zu erzwingen, aber ich prüfe dies noch. Es sollte auch funktionieren, wenn die Standardroute geändert wurde, um alle Internetdaten über das VPN zu senden, aber ich wollte das nicht, weil ich diesen Server auch für andere Dinge verwende, und dies würde auch dazu führen, dass alle Systemaktualisierungen über das Internet gesendet werden VPN.Diese Frage enthält weitere Informationen, wenn Sie wirklich möchten, dass UPnP über das VPN funktioniert .
Update: falk0069 hat unten einen fantastischen Tipp , um UPnP über das VPN zu fördern.
OpenVPN installieren und konfigurieren
Ich würde empfehlen, dass Sie versuchen, Ihre VPN-Verbindung mit Ubuntu zum Laufen zu bringen, bevor Sie versuchen, sie hier zum Laufen zu bringen - dh von einem Desktop aus. Dadurch wird bestätigt, dass Sie die richtige Konfiguration haben, und der Zeitaufwand für das Debuggen wird verringert.
Installieren Sie zunächst die erforderlichen Pakete
sudo apt-get install openvpn
Erstellen Sie als Nächstes ein Verzeichnis zum Speichern der Konfigurationsdateien. Ich verwende / opt / ibVPN, da dies der Anbieter ist, den ich verwende. Ändern Sie es nach Belieben.
sudo mkdir /opt/ibVPN
In diesem neuen Verzeichnis müssen Sie zunächst die Konfigurationsdatei für den VPN-Client erstellen. ibVPN bietet eine grundlegende Konfigurationsdatei für Linux-Benutzer, die ich meistens nur kopiert und eingefügt habe.
cd /opt/ibVPN
sudo vim config.ovpn
Kopieren Sie die bearbeitete Version und fügen Sie sie mit den Einstellungen Ihres VPN-Anbieters in vim ein. (FYI, Einfügen in das Ubuntu-Terminal ist Ctrl+Shift+V
) Sie sollten dies von Ihrem VPN-Anbieter erhalten können.
remote 888.888.888.888 1194 udp #This address will be different for you
client
dev tap1
resolv-retry infinite
script-security 3 system
explicit-exit-notify 3
persist-key
mute-replay-warnings
ca ibvpn.com.crt
comp-lzo
verb 3
mute 20
ns-cert-type server
fragment 1300
route-delay 2
reneg-sec 0
max-routes 5000
link-mtu 1578
auth-user-pass pass
auth-nocache
persist-tun
route-noexec
lport 1195
lladdr 00:FF:11:AA:BB:CC
route-up "/opt/home/openvpn/route-up.sh"
down "/opt/home/openvpn/down.sh"
Wenn Sie mit vim nicht vertraut sind, drücken Sie, Insert
um Text einzugeben oder einzufügen, und drücken Sie dann Escape
und :wq
, um zu speichern und zu beenden. Natürlich müssen Sie nicht vim verwenden - jeder Texteditor wird funktionieren.
Ich werde diese Konfigurationsdatei schnell erklären: Die ersten 18 Zeilen geben die spezifischen Einstellungen an, die mit dem Server verwendet werden sollen. Diese stammen von ibVPN - Ihre Einstellungen unterscheiden sich wahrscheinlich geringfügig, wenn Sie einen anderen Anbieter haben. Die nächsten Zeilen sind geänderte Optionen, die ich angegeben habe.
Wenn Ihre Einstellungsdatei Zeilen mit hatte auth-user*
, kommentieren Sie diese aus. Damit dieses Setup automatisch funktioniert, muss eine Datei mit dem Benutzernamen und dem Kennwort enthalten sein. Stellen Sie daher sicher, dass das Kennwort, das Sie für den VPN-Anbieter ausgewählt haben, sicher, zufällig und eindeutig ist.
Das auth-user-pass pass
weist OpenVPN an, nach einer Datei zu suchen, die aufgerufen wird pass
, um den Benutzer und das Kennwort zu lesen.
auth-nocache
Entfernt das Kennwort aus dem Speicher. Dies kann die Sicherheit geringfügig erhöhen, wenn Sie sich darüber Sorgen machen.
persist-tun
wird versuchen, die gleiche IP-Adresse vom Server zu behalten, wenn Ihre Verbindung ausfällt, was hoffentlich weniger Starten und Stoppen des Transmission-Daemons bedeuten sollte.
route-noexec
Weist den OpenVPN-Client an, die vom Server bereitgestellten Routen nicht automatisch zu verwenden. Dadurch wird der gesamte Netzwerkverkehr über das VPN abgerufen. Wir möchten nur Torrent-Verkehr senden, daher müssen wir unterschiedliche Routing-Einstellungen verwenden.
lport 1195
Weist den OpenVPN-Client an, Port 1195 anstelle von 1194 zu verwenden. In meinem Fall möchte ich auch einen OpenVPN-Server auf demselben Gerät ausführen, und der Server muss Port 1194 verwenden. Auch wenn Sie keinen OpenVPN-Server ausführen tut nicht weh, diese Änderung vorzunehmen.
Ich habe die Leitung dev tap
in geändert dev tap1
, um zu erzwingen, dass das virtuelle Gerät tap1 ist, anstatt von OpenVPN zugewiesen zu werden, und zwar erneut, weil ein separater OpenVPN-Server ausgeführt wird. Auch wenn Sie keinen VPN-Server betreiben, sollte diese Änderung keine Rolle spielen. Die Firewall-Skripte wurden für die Verwendung tap1
entwickelt. Wenn Sie also lieber ein anderes Gerät verwenden möchten, müssen Sie diese Skripte gegebenenfalls ändern.
lladdr 00:FF:11:AA:BB:CC
Weist OpenVPN an, der Tap-Schnittstelle diese MAC-Adresse zuzuweisen, was für iptables-Firewallregeln hilfreich sein kann.
route-up
und down
führen Sie Skripte aus, um Transmission-Daemon nach Bedarf zu starten und zu stoppen. Diese werden hier benötigt, weil sie mit Umgebungsvariablen ausgeführt werden, die Informationen über die Verbindung enthalten, die erforderlich sind, um Transmission an die richtige IP-Adresse und den richtigen Port zu binden.
In meinem Fall hatte ich ein Serverzertifikat vom VPN-Anbieter - das sich ebenfalls im selben Verzeichnis wie die Konfigurationsdatei befinden muss.
sudo vim /opt/ibVPN/ibvpn.com.crt
Kopieren Sie diese und fügen Sie sie ein oder verschieben Sie sie über SCP oder SSHFS.
-----BEGIN CERTIFICATE-----
MIIDeDCCAuGgAwIBAgIJAMVKgpjMPUfxMA0GCSqGSIb3DQEBBQUAMIGFMQswCQYD
VQQGEwJVUzELMAkGA1UECBMCQ0ExFTATBgNVBAcTDFNhbkZyYW5jaXNjbzEVMBMG
A1UEChMMRm9ydC1GdW5zdG9uMRgwFgYDVQQDEw9Gb3J0LUZ1bnN0b24gQ0ExITAf
BgkqhkiG9w0BCQEWEm1lQG15aG9zdC5teWRvbWFpbjAeFw0xMDA3MjExOTU5MzVa
Fw0yMDA3MTgxOTU5MzVaMIGFMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFTAT
BgNVBAcTDFNhbkZyYW5jaXNjbzEVMBMGA1UEChMMRm9ydC1GdW5zdG9uMRgwFgYD
VQQDEw9Gb3J0LUZ1bnN0b24gQ0ExITAfBgkqhkiG9w0BCQEWEm1lQG15aG9zdC5t
eWRvbWFpbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAz23m3BXY5Asiw8Dx
T4F6feqsp+pIx6ivftTniyUCbSAxI1J1s1x75DzxmUpIwPu5xavzgPXgZr8FT81X
JGqF9km4AE95iddJawKx0wNgdTo7GximQq9rw0dsQIB5hZZQ9TJwHC3VOnmEic5A
OawKOCybMcRs8saLakZOgh7Xc+UCAwEAAaOB7TCB6jAdBgNVHQ4EFgQUeRhE2N4l
XwL4H1dbjkZ4ou6fj3AwgboGA1UdIwSBsjCBr4AUeRhE2N4lXwL4H1dbjkZ4ou6f
j3ChgYukgYgwgYUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEVMBMGA1UEBxMM
U2FuRnJhbmNpc2NvMRUwEwYDVQQKEwxGb3J0LUZ1bnN0b24xGDAWBgNVBAMTD0Zv
cnQtRnVuc3RvbiBDQTEhMB8GCSqGSIb3DQEJARYSbWVAbXlob3N0Lm15ZG9tYWlu
ggkAxUqCmMw9R/EwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQASt0pl
WzVseQLTNM8Mlgw4ZnGAv/x2xnijmMqrkE+F7pnaOicGpxgCfMKzjZuJu0TNJqF2
fibE7GhMdomD4dLFgIu8Wb5E7iQ1CSBEOGumRhK8qCsDzjr7WXUdhqA6Xvo+ylU6
DMzy0Wn3NNvfGC+qxOgybYCJwDnVPi0CEDSbzQ==
-----END CERTIFICATE-----
Wenn Sie kein ibVPN-Konto verwenden, ist Ihr Zertifikat natürlich anders.
Machen wir jetzt die Passwortdatei:
sudo vim /opt/ibVPN/pass
Die erste Zeile muss der vollständige Benutzername sein, die zweite Zeile muss das Passwort sein. Dies muss der einzige Inhalt dieser Datei sein.
you@address.com
myBIGstrongpassword1234567890
Wir müssen auch die Berechtigungen für diese Datei sichern, sonst startet OpenVPN nicht.
sudo chmod 400 pass
Dadurch wird die Datei schreibgeschützt und nur für den Eigentümer (dh kein anderer Benutzer kann sie überhaupt lesen).
Diese Befehle erstellen die Dateien, die beim Start ausgeführt werden sollen, und legen fest, dass sie nur von root ausgeführt werden können.
sudo touch route-up.sh
sudo touch down.sh
sudo chmod 700 route-up.sh
sudo chmod 700 down.sh
An diesem Punkt ist es wahrscheinlich eine gute Idee, zu testen, ob die VPN-Verbindung tatsächlich funktioniert. Starten Sie die Verbindung mit:
sudo openvpn --cd /opt/ibVPN --config config.ovpn
Es werden Warnungen angezeigt, dass die externen Befehle up und down nicht ausgeführt werden konnten, aber machen Sie sich darüber keine Sorgen. Wenn es funktioniert, werden Sie Initialization Sequence Completed
auf dem Terminal sehen. Drücken Sie Control+C
, um die Verbindung zu beenden. Wenn es nicht funktioniert, müssen Sie nachforschen, warum dies nicht der Fall ist, und es beheben, bevor Sie fortfahren. Ich stellte fest, dass es manchmal ein paar Mal dauerte, bis ich anfing zu arbeiten. Stellen Sie sicher, dass Ihre Kennwortdatei korrekt ist. Im Internet gibt es viele großartige Ressourcen zu OpenVPN. Schauen Sie sich also um.
Zu diesem Zeitpunkt ist es wahrscheinlich am einfachsten, Transmission zum Laufen zu bringen. Sobald Sie sicher sind, dass VPN und Übertragung getrennt ausgeführt werden können, können sie kombiniert werden.
Übertragung installieren und konfigurieren
Installieren Sie die erforderlichen Pakete:
sudo apt-get install transmission-daemon
Standardmäßig wird die Übertragung beim Booten automatisch ausgeführt. Da wir irgendwann OpenVPN verwenden werden, um die Übertragung zu starten, möchten wir dies deaktivieren. Bearbeiten Sie dazu die Konfigurationsdatei für Transmission-Daemon
sudo vim /etc/default/transmission-daemon
Und ändern Sie die folgende Zeile zu lesen:
ENABLE_DAEMON=0
Jetzt wird die Übertragung beim Booten nicht gestartet.
Erstellen wir nun ein Verzeichnis für die Übertragungseinstellungen und für die heruntergeladenen Torrents. Dies setzt voraus, dass Sie bereits eine Festplatte eingerichtet haben und diese unter / media / arm-disk / eingehängt ist. Aus Sicherheitsgründen wird der Daemon von seinem eigenen Benutzer anstatt als root oder als "Ubuntu" ausgeführt. Ein neuer Benutzer wird vom Installationsprogramm für den Übertragungsdämon "debian-transmission" erstellt. Dieser Benutzer muss den von uns erstellten Ordner besitzen und Lese- und Schreibzugriff auf den Speicherort für die heruntergeladenen Torrents haben.
sudo mkdir /opt/transmission
sudo chown debian-transmission:debian-transmission /opt/transmission
sudo mkdir /media/arm-disk/torrents-complete
sudo chown debian-transmission:debian-transmission /media/arm-disk/torrents-complete
sudo mkdir /media/arm-disk/torrents-incomplete
sudo chown debian-transmission:debian-transmission /media/arm-disk/torrents-incomplete
Jetzt müssen wir nur kurz mit der Übertragung beginnen, damit die von uns benötigte Einstellungsdatei erstellt wird:
sudo -u debian-transmission -g debian-transmission /usr/bin/transmission-daemon --config-dir /opt/transmission --foreground
Dieser Befehl startet den Transmission-Daemon als Debian-Transmission-Benutzer, weist ihn an, das Verzeichnis / opt / transmission für die Einstellungsdateien zu verwenden und weiterhin im Vordergrund zu laufen. Nach einigen Sekunden drücken, um den Vorgang Control+C
zu beenden. Wir können jetzt die Einstellungsdatei bearbeiten.
sudo -u debian-transmission vim /opt/transmission/settings.json
Wir müssen jetzt die folgenden Zeilen aus ihren Standardeinstellungen ändern, um zu lesen:
"download-dir": "/media/arm-disk/torrents-complete",
"incomplete-dir": "/media/arm-disk/torrents-incomplete",
"incomplete-dir-enabled": true,
"rpc-whitelist": "127.0.0.1,192.168.1.*",
Speichern und beenden (Escape, tippe: wq und drücke Enter)
Die beiden mittleren Änderungen ermöglichen die Verwendung des Verzeichnisses "Incomplete", wodurch die fertigen Torrents von den unfertigen getrennt werden. Das ist nicht unbedingt notwendig, aber ich persönlich finde es äußerst nützlich. Mit der letzten Änderung kann von jedem Computer im LAN auf die Web-GUI zugegriffen werden (vorausgesetzt, Ihr LAN-Subnetz ist 192.168.1.0, ändern Sie dies, falls es anders ist).
Es ist jetzt eine gute Idee, Transmission erneut auszuführen, um zu prüfen, ob es funktioniert und tatsächlich einen Torrent herunterladen kann. Wir werden ein Webbrowser-Fenster verwenden, um auf die GUI zuzugreifen und einen Torrent hinzuzufügen. Lassen Sie uns zunächst den Zugriff auf die Web-GUI über die Firewall vom LAN aus zulassen und dann den Übertragungsdämon erneut ausführen.
sudo ufw allow in from 192.168.0.0/16 to any port 9091
sudo -u debian-transmission -g debian-transmission /usr/bin/transmission-daemon --config-dir /opt/transmission --foreground
Besuchen Sie diese URL in Firefox (oder in einem von Ihnen bevorzugten Browser): http://XXX.XXX.XXX.XXX:9091 , wobei XXX durch die Adresse Ihres Servers im LAN ersetzt wird (z. B. 192.168.1.10). Finden Sie einen Torrent zum Herunterladen, zum Beispiel Big Buck Bunny in 1080p60hz. Dies ist ein kostenloser Kurzfilm, der legal zum kostenlosen Download zur Verfügung steht. Klicken Sie in der Übertragungs-GUI auf die Schaltfläche "Open Torrent" (Torrent öffnen) und fügen Sie diesen Link (oder einen beliebigen anderen Torrent) in das erste Feld ein. Dann drücke "Upload". Wenn die Übertragung korrekt funktioniert, beginnt der Download des Torrents. Wenn dies nicht der Fall ist, müssen Sie herausfinden, warum dies so ist, bevor Sie fortfahren. Im Internet stehen viele Ressourcen zur Verfügung, um den Übertragungsdämon zu verwenden. Es könnte auch sein, dass der von Ihnen gewählte Strom nicht funktioniert. Probieren Sie zuerst einige andere aus.
Sobald der Download abgeschlossen ist, drücken Sie Control+C
im Terminalfenster, um den Übertragungsdämon zu stoppen.
Konfigurieren Sie die Bindungsübertragung an die VPN-Schnittstelle
Jetzt erstellen wir ein Upstart-Skript, mit dem die Übertragung gestartet wird, wenn das VPN bereit ist.
sudo mv /etc/init/transmission-daemon.conf /etc/init/transmission-daemon.conf.bak
Machen Sie sich keine Sorgen, wenn dies beanstandet wird, sondern nur, um eine Sicherungskopie der Upstart-Datei zu erstellen, falls eine vorhanden ist - möglicherweise nicht. Lassen Sie uns vim öffnen, um das neue zu bearbeiten:
sudo vim /etc/init/transmission-daemon.conf
Fügen Sie dies in den Editor ein:
description "transmission-daemon, attached to OpenVPN tunnel tap1"
start on transmission-daemon-start
stop on runlevel [!2345] or transmission-vpn-down
# This includes the information from OpenVPN into this environment
export LOCAL_IP
env PORT=51413
# give time to send info to trackers
kill timeout 30
# Run as unprivileged user
setuid debian-transmission
setgid debian-transmission
# Start transmission again if it stops for some reason
respawn
# If transmission stops 5 times in a minute, give up trying to respawn it
respawn limit 5 60
exec /usr/bin/nice -15 /usr/bin/transmission-daemon --config-dir /opt/transmission --bind-address-ipv4 $LOCAL_IP --peerport $PORT --no-portmap --foreground
Speichern und schließen Sie vim. ( Escape
, dann tippe :wq
). Wieder offene vim:
sudo vim /etc/init/transmission-up.conf
Und fügen Sie dies ein:
description "Script to create firewall and routing rules for transmission-daemon"
start on transmission-vpn-up
# This includes the information from OpenVPN into this environment
export VPN_GATEWAY
export LOCAL_IP
env PORT=51413
task
script
# Set up IP route, firewall rules
# It doesn't matter if they already exist, they will be skipped
/sbin/ip route add default via $VPN_GATEWAY dev tap1 table 200
/sbin/ip rule add from $LOCAL_IP table 200
/sbin/ip route flush cache
/usr/sbin/ufw insert 1 reject out on eth0 from any port $PORT
/usr/sbin/ufw insert 1 reject in on eth0 to any port $PORT
/usr/sbin/ufw insert 1 deny in on tap1 to any
/usr/sbin/ufw insert 1 allow in on tap1 to any port $PORT proto udp
# Start the actual transmission-daemon process, in a separate task so that unprivileged user/group can be set
/sbin/initctl emit transmission-daemon-start LOCAL_IP=$LOCAL_IP
end script
Speichern und schließen Sie vim erneut. ( Escape
, dann tippe :wq
). Endlich:
sudo vim /etc/init/transmission-down.conf
Fügen Sie dies ein:
description "Script to remove firewall rules for transmission-daemon"
start on runlevel [!2345] or stopping openvpn-transmission
env PORT=51413
task
script
# Take down IP route, firewall rules
# It doesn't really matter if they don't get taken down, but this will be cleaner
/usr/sbin/ufw delete reject out on eth0 from any port $PORT
/usr/sbin/ufw delete reject in on eth0 to any port $PORT
/usr/sbin/ufw delete deny in on tap1 to any
/usr/sbin/ufw delete allow in on tap1 to any port $PORT proto udp
/sbin/ip route flush cache
end script
Diese Skripte weisen Upstart an, auf das Signal "transmission-vpn-up" zu warten. Das Skript "transmission-up.conf" richtet dann die erforderlichen Routing-Regeln ein, um Datenverkehr von der lokalen VPN-Adresse über die VPN-Schnittstelle zu senden, und legt fest, dass die Firewall Datenverkehr vom VPN zum Empfangsport für die Übertragung zulässt. Der Datenverkehr, der von der normalen LAN-Schnittstelle zum Abhörport von Transmission geleitet wird, ist blockiert. Das Skript "transmission-daemon.conf" startet dann transmission-daemon mit den erforderlichen Einstellungen, um es an die VPN-IP-Adresse zu binden. Beachten Sie, dass mit diesem Befehl auch sichergestellt wird, dass UPnP / NAT-PMP deaktiviert ist - siehe meinen Hinweis zur Portweiterleitung oben. Das "nice -15" setzt Transmission auf eine niedrigere Priorität, was ich nützlich fand, wenn ich das BeagleBone mit niedrigerer Spezifikation verwendete - manchmal kann Transmission Ressourcen verschlingen, was das System verlangsamt. Zumindest mit einer niedrigen Priorität können noch wichtigere Systemtasks ausgeführt werden. Das Skript "transmission-down.conf" entfernt die Firewall-Regeln, wenn das VPN gestoppt wird. Es werden drei verschiedene Skripte verwendet, damit der Übertragungsdämon als nichtprivilegierter Benutzer ausgeführt werden kann, die Firewall-Regeln können jedoch als Root ausgeführt werden.
Kehren wir nun zu den OpenVPN-Einstellungen zurück und bearbeiten Sie die Skripte "route-up" und "down", um das Starten und Stoppen unseres Übertragungsskripts auszulösen.
sudo vim /opt/ibVPN/route-up.sh
Fügen Sie dies in vim ein:
#! /bin/bash
/sbin/initctl emit transmission-vpn-up VPN_GATEWAY=$route_vpn_gateway LOCAL_IP=$ifconfig_local
Dieses Skript sagt Upstart lediglich, dass der Übertragungsdämon gestartet werden soll, und gibt ihm die Informationen, die er zum Anhängen an die VPN-Verbindung benötigt.
sudo vim /opt/ibVPN/down.sh
Wieder mehr Einfügen:
#! /bin/bash
/sbin/initctl emit transmission-vpn-down
Dieses Skript ist noch einfacher - es signalisiert, dass der Übertragungsdämon anhält.
Zu diesem Zeitpunkt ist es wahrscheinlich eine gute Idee, sicherzustellen, dass der Besitzer des gesamten VPN-Konfigurationsordners der Root-Benutzer ist. Da diese Skripts als Root ausgeführt werden, kann jeder, der sie ändern kann, alles ausführen, was er als Root-Benutzer möchte.
sudo chown root:root -R /opt/ibVPN
sudo chmod 700 -R /opt/ibVPN
sudo chmod 400 /opt/ibVPN/pass
Dies bedeutet jetzt, dass nur der Root-Benutzer die VPN-Verbindungseinstellungen ändern oder anzeigen kann.
OK, wir sind fast fertig! Lassen Sie uns testen, ob unser Setup bisher funktioniert:
sudo openvpn --cd /opt/ibVPN --config config.ovpn
Stellen Sie erneut eine Verbindung zur Web-GUI von Transmission her und setzen Sie den vorhandenen Torrent fort oder fügen Sie einen neuen hinzu. Es sollte heruntergeladen werden können, möglicherweise nach ein paar Minuten Warten auf Gleichaltrige. Ein geschickter Weg, um zu testen, ob es funktioniert oder nicht, ist es, auf iftop zu schauen. Installieren Sie iftop und führen Sie Folgendes aus:
sudo apt-get install iftop
sudo iftop -i tap1
Dieser Bildschirm zeigt alle Verbindungen an, die über das VPN laufen. Wenn Ihr Torrent heruntergeladen wird und das VPN korrekt verwendet, werden hier viele IP-Adressen und Hostnamen angezeigt. Schauen Sie sich auch das iftop für die LAN-Verbindung an:
sudo iftop -i eth0
Hier sollten Sie eine große Menge an Datenverkehr zu einer einzelnen IP-Adresse sehen, da es sich um den VPN-Server handelt, und dann nur minimalen Datenverkehr zu anderen LAN-Geräten - vorausgesetzt, Sie führen keine anderen Dienste auf Ihrem BeagleBone aus.
Sie können bestätigen, dass das VPN funktioniert, indem Sie diese Anweisungen befolgen .
Auf dieser Site können Sie einen Torrent herunterladen, um die IP-Adresse anzuzeigen, die andere Peers für die Verbindung zu Ihnen verwenden. Wenn alles funktioniert, ist dies die VPN-IP-Adresse und nicht Ihre eigene WAN-IP-Adresse.
Wenn Probleme auftreten, können Sie das Upstart-Fehlerprotokoll folgendermaßen anzeigen:
sudo tail -f /var/log/upstart/transmission-daemon.log
Führen Sie in einem separaten Terminal- / SSH-Fenster den Befehl tail aus, während Sie die VPN-Verbindung wie oben beschrieben starten, und suchen Sie nach Fehlermeldungen. Hoffentlich können Sie das Problem beheben, indem Sie die Fehlermeldungen anzeigen, nicht im Internet stöbern oder einen Kommentar veröffentlichen.
Konfigurieren Sie alles so, dass es automatisch startet
Wenn Sie mit der manuellen Ausgabe des Befehls zum Starten des OpenVPN-Tunnels zufrieden sind oder mit Ihrem eigenen Skript arbeiten möchten, sind Sie fertig. Aber ich wollte, dass es beim Booten startet, also habe ich ein weiteres Upstart-Skript erstellt, um OpenVPN zu starten.
sudo vim /etc/init/openvpn-transmission.conf
Dies ist das Letzte, was wir einfügen müssen!
description "OpenVPN client, with attached transmission-daemon"
start on started networking
stop on runlevel [!2345] or stopped networking
# Give time for Transmission to send info to trackers, wait for graceful close
kill timeout 45
# Start the OpenVPN tunnel again if it stops for some reason
respawn
# If it stops 5 times in a minute, give up trying to respawn it
respawn limit 5 60
exec openvpn --cd /opt/ibVPN --config config.ovpn
post-stop script
# Pause for a few seconds, before exiting
/bin/sleep 3s
end script
Warten Sie nur, bis das System signalisiert, dass das Netzwerk bereit ist, und starten Sie dann den OpenVPN-Tunnel, der wiederum die Übertragung startet. Wenn das System ausgeschaltet ist oder das Netzwerk aus irgendeinem Grund heruntergefahren wird, entfernt Upstart die Firewall-Regeln und schließt den Übertragungsdämon. Einfach! Dies funktioniert auch nach einem Neustart weiter. Jetzt sind Sie bereit.
Verwenden Sie für die Interaktion mit Transmission die Web-GUI wie in der Setup-Phase. Sie können die GUI auch über das Internet zugänglich machen, indem Sie die Portweiterleitung einrichten. Es gibt viele Tutorials, wie man das macht, deshalb werde ich es hier nicht wiederholen.
Um die fertigen Downloads vom BeagleBone zu bekommen, verwende ich NFS. Ich kann Geschwindigkeiten von ca. 8 MB / s erreichen, wenn ich vom BeagleBone über das LAN auf meinen Desktop-Computer kopiere - was für ein so leistungsschwaches Gerät ziemlich gut ist. Ubuntu bietet einige nützliche Informationen zum Einrichten.