Демон передачи по OpenVPN

Я недавно приобрел Черный BeagleBone, на который я установил Ubuntu с помощью этого метода. Это все работало до сих пор. Я хочу использовать свой BeagleBone в качестве поля потока, но я не хочу делать это непосредственно по моему Интернет-соединению (я не думаю, что моему ISP понравится он) - таким образом, я купил подписку VPN у европейского сервера. Я вручную подключил свой ноутбук к этой VPN прежде и Передача выполнения. Я знаю, что работы соединения VPN в Ubuntu и хост предоставляют информацию об установке для OpenVPN. Раздражающе, динамический характер присвоенного IP-адреса означает, что изменялся бы часто, поэтому когда я использовал свой ноутбук с VPN, я вручную установлю адрес слушания в Передаче к необходимому значению.

Идеально я хотел бы следующую установку:

  • Передача работает только по VPN и мешается выполнить потоки по нормальному соединению WAN
  • Только трафик, направленный к Передаче, будет принят или отправлен через VPN, весь другой нежелательный трафик будет отброшен
  • Передача использует соответствующий порт для слушания на, на основе присвоенного IP-адреса
  • OpenVPN запускается автоматически на начальной загрузке, которая затем впоследствии запускает Передачу
  • К веб-GUI передачи можно получить доступ по LAN, и возможно по Интернету от моего соединения WAN (т.е. не назад через VPN)
20
задан 2 March 2016 в 04:44

4 ответа


Примечание: (2016-02-22) я понял, что эта конфигурация пропускает запросы DNS средствам отслеживания потока через нормальную WAN, вместо того, чтобы отправить его через VPN. Я занимаюсь расследованиями, как зафиксировать это. Я собираюсь продолжать управлять своей конфигурацией, хотя, так как само соединение использует VPN правильно.


Обновление: я заметил, что, когда я установил Передачу для загрузки в течение ночи на Beaglebone, использование ЦП переходит к 100% через некоторое время. Этого, кажется, не происходит после того же количества времени иногда это прекрасно всю ночь, другие времена, это борется после 10 минут. Это может также восстановиться путем приостановки всех потоков и ожидания загрузки ЦП для возврата к нормальному, затем запуска снова. Я все еще занимаюсь расследованиями. Обходное решение могло бы быть должно приостановить и возобновить потоки периодически, хотя это не очень хорошее обходное решение. Обратите внимание, что эта проблема только относится к Beaglebone и вероятно другим устройствам ARM. У меня никогда не было этой проблемы о x86 ЦП.


Введение

Я разработал и протестировал это решение на Ubuntu 14.04, работая на Черном BeagleBone. Поставщика VPN, которого я использую, называют ibVPN. Это должно работать с любым поддерживаемым оборудованием, хотя (т.е. на "нормальном" x86 компьютере), с любым OpenVPN совместимый поставщик VPN - и должен, вероятно, работать на 14,10 или позже. В какой-то момент я полагаю, что Ubuntu будет использовать SystemD для начальной загрузки, которая будет означать, что Новомодные сценарии, используемые здесь, должны будут быть перемещены. Обновление: у Jonas Kalderstam есть ответ ниже для использования SystemD. Я также предполагаю, что ufw используется в качестве брандмауэра при использовании чего-то другого затем, что команды ufw здесь должны будут быть изменены.

Я предполагаю, что вся работа сделана по соединению SSH к системе, хотя это работало бы точно также, если выведено в физический терминал.

Это - вполне длинное учебное руководство, считайте все это сначала и удостоверьтесь, что Вы довольны тем, что Вы будете делать.

Я также заметил, что Передача правильно не связывает с IP-адресом для отправки данных UPnP/NAT-PMP - т.е. данные потока правильно проходят VPN, но если перенаправлению портов UPnP включат, то Передача запросит порт вперед от локального маршрутизатора, не через VPN с сервера VPN. Следовательно я заставил Новомодный сценарий отключить перенаправление портов, так как могло бы появиться, как будто это работало, но это не имеет. Должно быть возможно использовать iptables и iproute для принуждения всего трафика от пользователя debian-передачи через VPN, но я все еще изучаю это. Это должно также работать, если бы маршрут по умолчанию был изменен для отправки всех интернет-данных через VPN, но я не хотел делать это, потому что я использую этот сервер для других вещей также, и это также заставило бы все системные обновления проникать через VPN. Эффект этого состоит в том, что Передача, вероятно, загрузит потоки медленнее, чем она могла, если бы перенаправление портов работало - но я нашел, что разумные скорости могут быть достигнуты для большинства потоков без перенаправления портов. Этот вопрос имеет дополнительную информацию, если Вы действительно хотите получить UPnP, работающий по VPN. Обновление: falk0069 имеет фантастическую подсказку ниже для помощи поощрить UPnP по VPN.

Установка и настройка OpenVPN

Я рекомендовал бы попытаться заставить соединение VPN работать с помощью Ubuntu прежде, чем попытаться заставить это работать здесь - т.е. от рабочего стола. Это подтвердит, что Вы имеете корректную конфигурацию и уменьшаете потраченную отладку времени.

Во-первых, установите необходимые пакеты

sudo apt-get install openvpn

Затем, сделайте каталог для хранения конфигурационных файлов в. Я использую/opt/ibVPN, так как это - поставщик, которого я использую. Измените его на то, что Вы любите.

sudo mkdir /opt/ibVPN

Первое, что нужно сделать в этом новом каталоге состоит в том, чтобы создать файл конфигурации для выполнения клиента VPN. ibVPN предоставляет файл основной конфигурации пользователям Linux, которых я главным образом только что скопировал и вставил.

cd /opt/ibVPN
sudo vim config.ovpn

Скопируйте и вставьте свою отредактированную версию в энергию, с помощью настроек для поставщика VPN. (К вашему сведению вставка в терминале Ubuntu Ctrl+Shift+V) Необходимо смочь получить это от поставщика VPN.

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"

Для незнакомых с энергией, нажать Insert чтобы ввести или вставить текст, затем нажмите Escape и введите :wq сохранить и выйти. Конечно, Вы не должны использовать энергию - любой текстовый редактор будет работать.

Я быстро объясню этот файл конфигурации: первые 18 строк указывают определенные настройки для использования с сервером, они прибыли из ibVPN - Ваш будет, вероятно, немного отличаться, если у Вас будет другой поставщик. Следующие строки являются измененными опциями, которые я указал.

  • Если Ваш файл настроек имел какие-либо строки с auth-user*, прокомментируйте их. Чтобы эта установка работала автоматически, у нас должен быть файл с именем пользователя и паролем в нем - поэтому удостоверьтесь пароль, который Вы выбрали для поставщика VPN, сильно, случаен, и уникален.

  • auth-user-pass pass говорит OpenVPN искать названный файл pass считать пользователя и пароль от.

  • auth-nocache удаляет пароль из памяти, который мог бы немного увеличить безопасность, если Вы волнуетесь по поводу этого.

  • persist-tun попытается сохранить тот же IP-адрес от сервера, если Ваше соединение выбудет, который должен, надо надеяться, означать менее стартовый и останавливающийся из демона Передачи.

  • route-noexec говорит клиенту OpenVPN не автоматически использовать маршруты, обеспеченные сервером - который вытянул бы весь сетевой трафик по VPN. Мы просто хотим отправить трафик потока, таким образом, мы должны будем использовать различные настройки маршрутизации.

  • lport 1195 говорит клиенту OpenVPN использовать порт 1195 вместо 1194 - в моем случае, я также хочу выполнить сервер OpenVPN на том же устройстве, и сервер должен будет использовать порт 1194. Даже если Вы не выполняете сервер OpenVPN, не повреждает вносить это изменение.

  • Я изменил строку dev tap кому: dev tap1, вынудить виртуальное устройство быть tap1 вместо того, чтобы быть присвоенным OpenVPN, снова из-за выполнения отдельного сервера OpenVPN. Даже если Вы не выполняете сервер VPN, это изменение не должно иметь значения. Сценарии брандмауэра были записаны для использования tap1, таким образом, если Вы использовали бы другое устройство, затем не забывают изменять те сценарии в соответствующих случаях.

  • lladdr 00:FF:11:AA:BB:CC говорит OpenVPN присваивать интерфейс касания, чтобы иметь этот MAC-адрес, который может быть полезен для iptables правил брандмауэра.

  • route-up и down запустите скрипты, чтобы запустить и остановить демона Передачи как требуется - они необходимы здесь, потому что они работают с переменными среды, содержащими информацию о соединении, которое необходимо для корректной привязки Передачи с правильным IP-адресом и портом.

В моем случае у меня был сертификат сервера от поставщика VPN - который также должен быть в том же каталоге как файл конфигурации.

sudo vim /opt/ibVPN/ibvpn.com.crt

Скопируйте и вставьте это или переместите его через SCP или 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-----

Очевидно, если Вы не будете использовать учетную запись ibVPN, то Ваш сертификат будет отличаться.

Давайте теперь сделаем файл паролей:

sudo vim /opt/ibVPN/pass

Первая строка должна быть полным именем пользователя, затем вторая строка должна быть паролем. Это должно быть единственным содержанием этого файла.

you@address.com
myBIGstrongpassword1234567890

Мы также должны защитить полномочия на этом файле, или OpenVPN не запустится.

sudo chmod 400 pass

Это сделает файл только для чтения, и только для владельца (т.е. никакой другой пользователь не может считать его вообще),

Эти команды создадут файлы, чтобы работать при запуске и установить их, чтобы быть исполняемым файлом только корнем.

sudo touch route-up.sh
sudo touch down.sh
sudo chmod 700 route-up.sh
sudo chmod 700 down.sh

На данном этапе это - вероятно, хорошая идея протестировать, если соединение VPN на самом деле работает. Запустите соединение с:

sudo openvpn --cd /opt/ibVPN --config config.ovpn

Вы будете видеть предупреждения, которые вверх и вниз по внешним командам не могли быть выполнены, но не волнуются об этом. Если это будет работать, то Вы будете видеть Initialization Sequence Completed на терминале.Пресса Control+C закончить соединение. Если это не работает, необходимо будет заняться расследованиями, почему не и фиксируют его перед продолжением. Я нашел, что это иногда требовалось несколько движений, чтобы начать работать. Удостоверьтесь, что Ваш файл паролей корректен. Существует много больших ресурсов в Интернете о OpenVPN, поэтому взгляните вокруг.

На данном этапе является, вероятно, самым легким идти дальше к подъему Передачи и выполнению. После того как Вы уверены, что и VPN и Передача могут работать отдельно, они могут быть объединены.

Передача установки и настройки

Установите необходимые пакеты:

sudo apt-get install transmission-daemon

По умолчанию Передача будет работать автоматически на начальной загрузке. Так как мы будем в конечном счете использовать OpenVPN для запуска Передачи, мы хотим отключить это. Для этого отредактируйте файл конфигурации для демона Передачи

sudo vim /etc/default/transmission-daemon

И измените следующую строку для чтения:

ENABLE_DAEMON=0

Теперь Передача не запустится на начальной загрузке.

Давайте теперь создадим каталог для настроек Transmission для нахождения в, и чтобы загруженные потоки вошли. Это предполагает, что Вы уже настроили какой-то диск, и он смонтирован в/media/arm-disk/. В целях безопасности демон будет выполнен ее собственным пользователем, а не как корень или как "человечность". Новый пользователь создается установщиком для демона передачи, "debian-передачи". Этот пользователь должен владеть папкой, которую мы создаем и имеем доступ для чтения и доступ для записи к месту хранения для загружаемых потоков.

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

Теперь мы должны запустить передачу, лишь кратко, так, чтобы она создала файл настроек, в котором мы нуждаемся:

sudo -u debian-transmission -g debian-transmission /usr/bin/transmission-daemon --config-dir /opt/transmission --foreground

Эта команда запускает демона передачи как пользователя debian-передачи, говорит этому использовать/opt/transmission каталог для файлов настроек и говорит этому продолжать бежать на переднем плане. После того как это работало в течение нескольких секунд, нажать Control+C закончить его. Мы можем теперь отредактировать файл настроек.

sudo -u debian-transmission vim /opt/transmission/settings.json

Мы теперь должны измениться на следующие строки от их значений по умолчанию для чтения:

"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.*",

Сохраните и выйдите (Escape, введите: wq и нажимают Enter),

Средние два редактирования включат использование "неполного" каталога, разделяя Ваши законченные потоки от незаконченных. Это не абсолютно необходимо, но я лично нахожу это чрезвычайно полезным. Последнее редактирование позволяет веб-GUI быть полученным доступ любым компьютером на LAN (предполагающий, что Ваша подсеть ЛВС 192.168.1.0, измените это, если это отличается).

Это - теперь хорошая идея выполнить Передачу снова, видеть, работает ли это и может на самом деле загрузить поток. Мы будем использовать окно веб-браузера, чтобы получить доступ к GUI и добавить поток. Во-первых, давайте предоставим доступ к веб-GUI через брандмауэр от LAN, затем выполним демона передачи снова.

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

Посетите этот URL в Firefox (или какой бы ни браузер Вы предпочитаете): http://XXX.XXX.XXX.XXX:9091, где XXX заменяется адресом Вашего сервера на LAN (т.е. 192.168.1.10). Найдите, что поток загружает, например, Большой Кролик Маркера в 1080p60 Гц. Это - бесплатный короткометражный фильм, юридически доступный для бесплатной загрузки. В Передаче GUI нажмите кнопку "Open Torrent" и вставьте эту ссылку (или любой другой поток, который Вы любите) в первое поле. Затем нажмите "Upload". Если Передача будет работать правильно, то поток начнет загружать. Если это не сделает, то необходимо будет удаться почему перед продолжением. Существует много ресурсов, доступных в Интернете для использования демона передачи. Это мог также быть поток, который Вы выбрали, не работает, попробуйте немногих других сначала.

После того как загрузка закончена, нажать Control+C в окне терминала для остановки демона передачи.

Настройте обязательную Передачу к интерфейсу VPN

Теперь давайте сделаем Новомодный сценарий, который будет использоваться для запуска Передачи, когда VPN будет готова.

sudo mv /etc/init/transmission-daemon.conf /etc/init/transmission-daemon.conf.bak

Не волнуйтесь, жалуется ли это, это должно только сделать резервное копирование Новомодного файла, если один существовал - это не могло бы иметь. Давайте откроем энергию для редактирования новой:

sudo vim /etc/init/transmission-daemon.conf

Вставьте это в редактора:

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

Сохраните и закройте энергию. (Escape, затем введите :wq). Снова, открытая энергия:

sudo vim /etc/init/transmission-up.conf

И вставьте это:

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

Снова, сохраните и закройте энергию. (Escape, затем введите :wq). Наконец:

sudo vim /etc/init/transmission-down.conf

Вставьте это:

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

Эти сценарии говорят Выскочке прислушиваться к сигналу "transmission-vpn-up". Сценарий "передачи-up.conf" затем настраивает необходимые правила маршрутизации для посылания трафика с локального адреса VPN через интерфейс VPN и устанавливает брандмауэр для разрешения в трафике от VPN до порта прослушивания для Передачи. Трафик, направленный к порту прослушивания Передачи от нормального интерфейса LAN, заблокирован. Сценарий "передачи-daemon.conf" затем запускает демона передачи с необходимых настроек для привязки его с IP-адресом VPN. Обратите внимание, что эта команда также гарантирует, что UPnP/NAT-PMP отключен - см. мое примечание наверху о перенаправлении портов. "Хорошие-15" Передач наборов, чтобы иметь более низкий приоритет, который я нашел полезным при использовании более низкого spec'd BeagleBone - иногда Передача, могут ресурсы пожирателя ресурсов, который замедляет систему. По крайней мере, с низким приоритетом, более важные системные задачи могут все еще работать. Сценарий "передачи-down.conf" удалит правила брандмауэра, когда VPN будет остановлена. Три различных сценария используются так, чтобы демон передачи мог быть выполнен как непривилегированный пользователь, но правила брандмауэра могут быть выполнены как корень.

Теперь давайте вернемся к настройкам OpenVPN и отредактируем "маршрут" и "вниз" сценарии для инициирования запуска и остановки нашего сценария Передачи.

sudo vim /opt/ibVPN/route-up.sh

Вставьте это в энергию:

#! /bin/bash

/sbin/initctl emit transmission-vpn-up VPN_GATEWAY=$route_vpn_gateway LOCAL_IP=$ifconfig_local

Весь этот сценарий делает, говорят Выскочке, что демон передачи должен запустить и дает ему информацию, которую он должен присоединить к соединению VPN.

sudo vim /opt/ibVPN/down.sh

Снова, больше вставки:

#! /bin/bash

/sbin/initctl emit transmission-vpn-down

Этот сценарий еще более прост - он сигнализирует, чтобы демон передачи остановился.

На данном этапе это - вероятно, хорошая идея удостовериться, что владелец всей папки конфигурации VPN является пользователем root - начиная с этих скриптов, запущенных как корень, любой, кто мог изменить их, мог выполнить что-либо, что они хотели как пользователь root.

sudo chown root:root -R /opt/ibVPN
sudo chmod 700 -R /opt/ibVPN
sudo chmod 400 /opt/ibVPN/pass

Это теперь означает, что только пользователь root может изменить или просмотреть настройки соединения VPN.

Хорошо, мы почти сделаны! Давайте протестируем, если наша установка работает до сих пор:

sudo openvpn --cd /opt/ibVPN --config config.ovpn

Подключите снова к сети Передачи GUI, и возобновите существующий поток или добавьте новый. Это должно смочь загрузить, возможно, после нескольких минут ожидания коллег. Изящным путем я нашел тестирования, работает ли оно, должен посмотреть на iftop. Установите iftop и работайте:

sudo apt-get install iftop
sudo iftop -i tap1

Этот экран будет показывать все соединения, пробегающие VPN. Если Ваш поток загрузит и будет правильно использовать VPN, то будет много IP-адресов и имен хостов здесь. Также взгляд iftop для соединения LAN:

sudo iftop -i eth0

Здесь необходимо видеть большой объем трафика к единственному IP-адресу, будучи сервером VPN и затем только минимальным трафиком к другим устройствам локальной сети - предполагающий, что Вы не выполняете другие сервисы на свой BeagleBone.

Можно подтвердить, что VPN работает путем следования этим инструкциям.
Этот сайт позволяет Вам загрузить поток для наблюдения IP-адреса, который другие коллеги используют для соединения с Вами - если все будет работать, то это будет IP-адресом VPN и не Вашим собственным IP-адресом WAN.

При испытании проблем Вы видите Новомодный журнал ошибок путем выполнения:

sudo tail -f /var/log/upstart/transmission-daemon.log

В отдельном terminal/SSH окне попытайтесь выполнить команду хвоста при запуске соединения VPN как выше и ищите любые сообщения об ошибках. Надо надеяться, можно решить вопрос от наблюдения сообщений об ошибках, если не имеют рыть вокруг в Интернете или добавляют комментарий.

Настройте все это для запуска автоматически

Если Вы довольны ручной выдачей команды для запуска туннеля OpenVPN, или Вы хотите сделать это со своим собственным сценарием, то Вы сделаны. Но я хотел, чтобы это запустилось на начальной загрузке, таким образом, я сделал другой Новомодный сценарий для запуска OpenVPN.

sudo vim /etc/init/openvpn-transmission.conf

Это - последняя вещь, которую мы должны вставить!

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

Все это делает ожидание системы, чтобы сигнализировать, что сеть готова, и затем это запустит туннель OpenVPN - который в свою очередь запустит Передачу. Когда система выключена, или если сети будут закрыты по некоторым причинам, то Выскочка удалит правила брандмауэра и закроет демона передачи. Простой! Это продолжит работать после перезагрузки также, поэтому теперь Вы все установлены.

Для взаимодействия с Передачей используйте веб-GUI, как мы сделали во время фазы установки. Также возможно сделать GUI доступным по Интернету путем установки перенаправления портов. Существует много учебных руководств о том, как сделать это, таким образом, я не повторю его здесь.

Что касается получения завершенных загрузок от BeagleBone, я использую NFS. Я могу получить скорости приблизительно 8 МБ/с, копирующих по LAN с BeagleBone на мой настольный компьютер - который довольно хорош для такого маломощного устройства. Ubuntu предоставляет некоторую удобную информацию для установки этого.

22
ответ дан 23 November 2019 в 01:50

Я заметил, что Вы упомянули, что Передача не делает проходит VPN для UPnP/NAT-PMP. Я заметил это также и создал патч для Передачи, таким образом, она соблюдает bind-address-ipv4, устанавливающий для UPnP. NAT-PMP немного более трудно реализовать, так как необходимо определить шлюз по умолчанию. UPnP является основным, который используется эти дни, тем не менее, таким образом, это, вероятно, достаточно хорошо. Я зарегистрировал это как ошибку на trac.transmissionbt сайте и обеспечил патч. Надо надеяться, это будет включено в будущий выпуск. https://trac.transmissionbt.com/ticket/5990

Другая опция для прямо сейчас, если Вы не хотите перекомпилировать, состоит в том, чтобы вручную выполнить upnpc от miniupnpc пакета. Например,

sudo apt-get install miniupnpc
upnpc -m 10.10.10.51 -a 10.10.10.51 51515 51515 TCP
upnpc -m 10.10.10.51 -a 10.10.10.51 51515 51515 UDP

то, Где 10.10.10.51 Ваш IP VPN и 51515, является Вашим требуемым портом TCP/UDP.

я не уверен, сколько времени передача хороша для. Также Вы могли бы хотеть использовать '-d' опция удалить Ваш порт при разъединении. Я нашел, что, если я не делаю, я не могу получить меня тот же порт снова, если я повторно вхожу в систему в VPN.

Аплодисменты

3
ответ дан 23 November 2019 в 01:50

Просто получил это использование работы SystemD, таким образом, я думал, что совместно использую. Я поместил все свои сценарии, конфигурации и сертификаты в том же каталоге, к которому я обращусь как /etc/openvpn/myprovider

Конфигурация OpenVPN

Это зависит от Вашей определенной VPN, но одно различие от конфигурации @seanlano - то, что я только использую a route-up сценарий. Так вещи Вам нужно в дополнение к Вашей работе, обеспеченной конфигурацию, эти строки:

route-noexec
route-up "/etc/openvpn/myprovider/transmission-route-up.sh"

Куда Вы помещаете transmission-route-up.sh сценарий везде, где Вам нравится. Отметьте отсутствие a down сценарий. (Моя VPN уже использовала пользовательское вниз сценарий, таким образом, это будет конфликтовать так или иначе).

/etc/openvpn/myprovider/transmission-route-up.sh:

#!/bin/sh

# Print environment variables for transmission's benefit
printenv > /etc/openvpn/myprovider/vpn.env


# Set up VPN routes
ip route add default via $route_vpn_gateway dev $dev table 10

ip rule add from $ifconfig_local/32 table 10
ip rule add to $route_vpn_gateway/32 table 10

ip route flush cache


# Add firewall rules
iptables -A INPUT -i $dev -p udp --dport 24328 -j ACCEPT
iptables -A INPUT -i $dev -p tcp --dport 24328 -j ACCEPT

iptables -A OUTPUT -o $dev -p udp --sport 24328 -j ACCEPT
iptables -A OUTPUT -o $dev -p tcp --sport 24328 -j ACCEPT

Первая строка, printenv, важно. Поместите его везде, где Вам нравится, это используется в услугах SystemD позже. Я помещаю его в тот же каталог как моя конфигурация vpn.

Замените 24328 любым портом, на котором должен послушать Ваш демон передачи. Я использую iptables (использующий Debian), таким образом, можно, вероятно, заменить те строки ufw строками от конфигурации @seanlano.

Сервис SystemD VPN

Это - сервис который автоматические запуски VPN для нас. Проверьте, что путь к openvpn корректен на Вашей машине, и что путь к файлу конфигурации корректен также. Необходимо указать полные пути в услугах SystemD.

/etc/systemd/system/my-vpn.service:

[Unit]
Description=VPN connection
After=network.target

[Service]
Type=forking
PIDFile=/var/run/openvpn/vpn.pid
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/myprovider --config /etc/openvpn/myprovider/myconfig.ovpn --daemon --writepid /var/run/openvpn/vpn.pid

[Install]
WantedBy=multi-user.target

Включите сервис VPN с:

systemctl enable my-vpn.service

И протестируйте его с:

systemctl start my-vpn.service
systemctl status my-vpn.service

Если это запускается/выполняется, Вы хороши.

Передача-daemon.service SystemD

Этот сценарий требует vpn-сервиса, поэтому если vpn понижается, демон передачи также спускается. Это удобно, если vpn перезапущен, и Вы получаете новый IP-адрес, потому что передача должна будет перезапустить и снова переплести затем, который должен быть обработан автоматически. Обратите внимание, что мы используем переменные среды, которые мы распечатали в route-up сценарий ранее.

/etc/systemd/system/transmission-daemon.service:

[Unit]
Description=Transmission BitTorrent Daemon Under VPN
After=network.target my-vpn.service
Requires=my-vpn.service

[Service]
User=debian-transmission
Type=notify
EnvironmentFile=/etc/openvpn/vpn.env
ExecStart=/usr/bin/transmission-daemon -f --log-error --bind-address-ipv4 $ifconfig_local --rpc-bind-address 0.0.0.0 --no-portmap
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target

Включите его

systemctl enable transmission-daemon.service

И запустите его

systemctl start transmission-daemon.service

Когда Вы перезагружаете, это должно все запускаться автоматически (в порядке!). Отметьте то использование Type=simple в vpn сервисных причинах некоторые проблемы для синхронизации упорядочивания сценария следовательно я рекомендую использовать forking вместо этого.

Можно указать фактический IP-адрес для rpc-bind-address если Вы хотите быть более строгими (это - веб-GUI, слушая адрес, который не должен быть Вашим IP VPN). И если Вы хотите выполнить передачу с хорошим, просто измениться ExecStart строка и добавляет /usr/bin/nice -n15 к началу.

Обработка изменений адреса

Одна вещь, которую я отмечал со временем, состоит в том, что, если соединение VPN по некоторым причинам получает новый IP-адрес, передача будет все еще связана со старым адресом и работой остановки. И просто выполнение systemctl restart transmission-daemon.serviceне сокращает его. Это должно остановиться полностью и затем запуститься новый.

Никакая идея, почему, но по этой причине я добавил следующие строки к своему корню crontab (sudo crontab -e):

# m h  dom mon dow   command
0 6 * * * /bin/systemctl stop my-vpn.service; /bin/systemctl start my-vpn.service
1 6 * * * /bin/systemctl stop transmission-daemon.service; /bin/systemctl start transmission-daemon.service
7
ответ дан 23 November 2019 в 01:50

Вдобавок к тому, что уже написано относительно сервиса SystemD... было бы более разумно связать VPN-сервис с передачей serivce - поэтому, когда Вы перезапустите VPN, передача также должна быть перезапущена ... Для этого Вам необходимо отредактировать файл VPN serice

vi /etc/systemd/system/my-vpn.service

и добавить эти строки:

PartOf=transmission-daemon
ExecStartPost=/bin/sleep 30

В раздел [Сервис].

PartOf сделает зависимость в одном направлении - Если VPN будет перезапущен, то перезапустите и эти службы. (документация)

В моем случае - VPN потребовалось еще несколько секунд для настройки, и немедленный запуск Передачи привел к тому, что демон передачи использовал "старый" env-файл - поэтому я добавил дополнительное время "ожидания" 30s (ExecStartPost=/bin/sleep 30) после запуска VPN, просто чтобы убедиться.

Я нахожусь на этапе тестирования прямо сейчас - так что это еще не "домашний производственный сервер" да - поэтому я часто все еще кладу в спящий режим свой ПК. после этого мое VPN-соединение не работает.Так что я еще не сделал этого, но было бы неплохо иметь какую-то сторожевую функциональность, чтобы проверить, если VPN-соединение все еще живо - но это еще в моем списке дел ...

Кроме того, чтобы проверить, действительно ли Ваша настройка работает, Вы можете использовать эту услугу torguard.net, где Вы можете «скачать» торрент-файл и открыть его в Вашей удаленной передаче и проверить, какая ошибка / комментарий возвращается из Tracker - он должен вернуть Ваш VPN / замаскированный IP-адрес и на той же странице Вы можете отслеживать текущие соединения, чтобы проверить, работает ли это вообще.

0
ответ дан 6 April 2020 в 08:04

Другие вопросы по тегам:

Похожие вопросы: