Недавно я приобрел BeagleBone Black, на который я установил Ubuntu, используя этот метод . До сих пор все работало. Я хочу использовать свой BeagleBone в качестве торрент-бокса, но я не хочу делать это напрямую через свое интернет-соединение (я не думаю, что моему провайдеру это понравится) - поэтому я купил VPN-подписку на европейском сервере , Я вручную подключил свой ноутбук к этому VPN и запустил Transmission. Я знаю, что VPN-соединение работает в Ubuntu, и хост предоставляет информацию о настройке OpenVPN. Досадно, что динамическая природа назначенного IP-адреса означает, что он будет часто меняться, поэтому, когда я использовал свой ноутбук с VPN, я вручную устанавливал адрес прослушивания в Transmission на требуемое значение.
В идеале я хотел бы следующую настройку:
- Передача выполняется только через VPN, и запрещается запускать торренты через обычное WAN-соединение.
- Только трафик, направленный на передачу, будет принят или отправлен через VPN, весь другой незапрошенный трафик будет отброшен
- Передача использует соответствующий порт для прослушивания на основе назначенного IP-адреса
- OpenVPN запускается автоматически при загрузке, которая затем запускает передачу
- Доступ к веб-интерфейсу Transmission можно получить через локальную сеть и, возможно, через Интернет из моего WAN-соединения (т.е. не через VPN).
источник
Ответы:
Примечание: (2016-02-22) Я понял, что эта конфигурация пропускает DNS-запросы к торрент-трекерам через обычную глобальную сеть, а не отправляет их через VPN. Я расследую, как это исправить. Я собираюсь продолжать работать с моей конфигурацией, так как само соединение использует VPN правильно.
Обновление: я заметил, что когда я устанавливаю Transmission для загрузки на Beaglebone в течение ночи, загрузка ЦП через некоторое время достигает 100%. Похоже, что это не происходит через одно и то же время, иногда все хорошо, а иногда - через 10 минут. Он также может восстановиться, приостановив все торренты и подождав, пока загрузка процессора вернется к нормальному состоянию, а затем запустится снова. Я все еще расследую. Обходной путь может состоять в том, чтобы периодически приостанавливать и возобновлять торренты, хотя это не очень хороший обходной путь. Обратите внимание, что эта проблема касается только Beaglebone и, возможно, других устройств ARM. У меня никогда не было этой проблемы на процессоре x86.
Вступление
Я разработал и протестировал это решение для Ubuntu 14.04, работающей на BeagleBone Black. Провайдер VPN, который я использую, называется ibVPN . Он должен работать с любым поддерживаемым оборудованием (например, на «нормальном» компьютере с архитектурой x86), с любым OpenVPN-совместимым провайдером VPN - и, вероятно, должен работать для 14.10 или более поздней версии. В какой-то момент я считаю, что Ubuntu будет использовать SystemD для загрузки, а это означает, что используемые здесь сценарии Upstart необходимо будет перенести. Обновление: Jonas Kalderstam имеет ответ ниже для использования SystemD. Я также предполагаю, что в качестве брандмауэра используется ufw, если вы используете что-то другое, то здесь нужно будет изменить команды ufw.
Я предполагаю, что вся работа выполняется по SSH-соединению с системой, хотя она будет работать так же хорошо, если набрать ее на физическом терминале.
Это довольно длинный урок, пожалуйста, сначала прочитайте все и убедитесь, что вы довольны тем, что будете делать.
Я также заметил, что передача не связывается должным образом с IP-адресом для отправки данных UPnP / NAT-PMP - то есть торрент-данные корректно проходят через VPN, но если включена переадресация порта UPnP, передача будет запрашивать переадресацию порта с локального маршрутизатора. , а не через VPN с сервера VPN. Поэтому я заставил скрипт Upstart отключить переадресацию портов, поскольку он может выглядеть так, как будто он работает, но это не так. Должна быть возможность использовать iptables и iproute для принудительной передачи всего трафика от пользователя передачи debian через VPN, но я все еще изучаю это. Он также должен работать, если маршрут по умолчанию был изменен для отправки всех данных из Интернета через VPN, но я не хотел этого делать, потому что я использую этот сервер и для других целей, и это также приведет к тому, что все обновления системы будут проходить через VPN.Этот вопрос содержит дополнительную информацию, если вы действительно хотите, чтобы UPnP работал через VPN . Обновление: falk0069 имеет фантастический совет ниже, чтобы помочь стимулировать UPnP через VPN.
Установка и настройка OpenVPN
Я бы порекомендовал вам попробовать заставить ваше VPN-соединение работать с использованием Ubuntu, прежде чем пытаться заставить его работать здесь - то есть с рабочего стола. Это подтвердит правильность конфигурации и сократит время, затрачиваемое на отладку.
Во-первых, установите необходимые пакеты
Затем создайте каталог для хранения файлов конфигурации. Я использую / opt / ibVPN, так как это провайдер, которого я использую. Измените это на то, что вам нравится.
Первое, что нужно сделать в этом новом каталоге, это создать файл конфигурации для запуска VPN-клиента. ibVPN предоставляет основной файл конфигурации для пользователей Linux, который я в основном только что скопировал и вставил.
Скопируйте и вставьте отредактированную версию в vim, используя настройки вашего провайдера VPN. (К вашему сведению, вставьте в терминал Ubuntu
Ctrl+Shift+V
). Вы сможете получить это у своего провайдера VPN.Если вы не знакомы с vim, нажмите,
Insert
чтобы ввести или вставить текст, затем нажмитеEscape
и введите,:wq
чтобы сохранить и выйти. Конечно, вам не нужно использовать vim - любой текстовый редактор будет работать.Я быстро объясню этот файл конфигурации: первые 18 строк определяют конкретные настройки для использования с сервером, они взяты из ibVPN - ваши, вероятно, будут немного отличаться, если у вас другой поставщик. Следующие строки представляют собой измененные параметры, которые я указал.
Если в вашем файле настроек есть какие-либо строки
auth-user*
, закомментируйте их. Чтобы эта настройка работала автоматически, нам нужен файл с именем пользователя и паролем, поэтому убедитесь, что пароль, выбранный вами для провайдера VPN, является надежным, случайным и уникальным.Он
auth-user-pass pass
сообщает OpenVPN, что нужно искать файлpass
для вызова пользователя и пароля.auth-nocache
удаляет пароль из памяти, что может немного повысить безопасность, если вы беспокоитесь об этом.persist-tun
будет пытаться сохранить тот же IP-адрес от сервера, если ваше соединение оборвется, что, как мы надеемся, должно означать меньше запуска и остановки Transmission-daemon.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
запускать сценарии для запуска и остановки Transmission-daemon по мере необходимости - они необходимы здесь, потому что они работают с переменными среды, содержащими информацию о соединении, которая необходима для правильной привязки Transmission к нужному IP-адресу и порту.В моем случае у меня был сертификат сервера от провайдера VPN, который также должен находиться в том же каталоге, что и файл конфигурации.
Скопируйте и вставьте это или переместите через SCP или SSHFS.
Очевидно, что если вы не используете учетную запись ibVPN, ваш сертификат будет другим.
Давайте теперь создадим файл паролей:
Первая строка должна быть полным именем пользователя, затем вторая строка должна быть паролем. Это должно быть единственным содержимым этого файла.
Мы также должны защитить разрешения для этого файла, иначе OpenVPN не запустится.
Это сделает файл доступным только для чтения и только для владельца (т.е. никакой другой пользователь не сможет его прочитать)
Эти команды создадут файлы для запуска при запуске и сделают их исполняемыми только пользователем root.
На этом этапе, вероятно, стоит проверить, действительно ли работает VPN-соединение. Начать соединение с:
Вы увидите предупреждения о том, что внешние команды up и down не могут быть запущены, но не беспокойтесь об этом. Если это работает, вы увидите
Initialization Sequence Completed
на терминале. Нажмите,Control+C
чтобы завершить соединение. Если это не сработает, вам придется выяснить, почему нет и исправить это, прежде чем продолжить. Я обнаружил, что иногда требуется несколько ходов, чтобы начать работать. Убедитесь, что ваш файл паролей правильный. В Интернете есть много отличных ресурсов об OpenVPN, так что взгляните вокруг.На данный момент, вероятно, проще всего перейти к настройке и запуску Transmission. Если вы уверены, что VPN и Transmission могут работать раздельно, их можно объединить.
Установка и настройка трансмиссии
Установите необходимые пакеты:
По умолчанию Transmission будет запускаться автоматически при загрузке. Поскольку в конечном итоге мы будем использовать OpenVPN для запуска передачи, мы хотим отключить это. Для этого отредактируйте файл конфигурации для Transmission-daemon
И измените следующую строку, чтобы читать:
Теперь передача не начнется при загрузке.
Теперь давайте создадим каталог для настроек передачи, в которых будут находиться загруженные торренты. Это предполагает, что вы уже настроили какой-то диск, и он смонтирован в / media / arm-disk /. В целях безопасности демон будет запускаться своим собственным пользователем, а не как пользователь root или как «ubuntu». Новый пользователь создается установщиком для демона передачи "debian-transmission". Этот пользователь должен владеть папкой, которую мы создаем, и иметь права на чтение и запись в хранилище для загружаемых торрентов.
Теперь нам нужно кратко начать передачу, чтобы он создал нужный файл настроек:
Эта команда запускает демона передачи в качестве пользователя debian-translation, говорит ему использовать каталог / opt / transmission для файлов настроек и говорит, что он должен работать на переднем плане. Как только он запустится в течение нескольких секунд, нажмите,
Control+C
чтобы завершить его. Теперь мы можем редактировать файл настроек.Теперь нам нужно перейти к следующим строкам по умолчанию:
Сохранить и выйти (Escape, введите: wq и нажмите Enter)
Средние два редактирования позволят использовать «неполный» каталог, отделяя ваши законченные торренты от незаконченных. Это не совсем необходимо, но я лично нахожу это чрезвычайно полезным. Последнее редактирование позволяет получить доступ к веб-интерфейсу с любого компьютера в локальной сети (при условии, что ваша подсеть локальной сети - 192.168.1.0, измените ее, если она отличается).
Теперь хорошей идеей будет снова запустить Transmission, чтобы посмотреть, работает ли она и действительно ли она может загрузить торрент. Мы будем использовать окно веб-браузера для доступа к графическому интерфейсу и добавления торрента. Сначала давайте разрешим доступ к веб-интерфейсу через брандмауэр из локальной сети, затем снова запустим демо-передачу.
Посетите этот URL в Firefox (или любом другом браузере): http://XXX.XXX.XXX.XXX:9091 , где XXX заменяется адресом вашего сервера в локальной сети (т. Е. 192.168.1.10). Найдите торрент для загрузки, например Big Buck Bunny в разрешении 1080p60hz. Это бесплатный короткометражный фильм, легально доступный для бесплатного скачивания. В графическом интерфейсе передачи нажмите кнопку «Открыть торрент » и вставьте эту ссылку (или любой другой понравившийся торрент) в первое поле. Затем нажмите «Загрузить». Если передача работает правильно, торрент начнет загружаться. Если этого не произойдет, то вам нужно выяснить, почему, прежде чем продолжить. В Интернете доступно множество ресурсов для использования демона передачи. Это также может быть тот поток, который вы выбрали, не работает, попробуйте сначала несколько других.
После завершения загрузки нажмите
Control+C
в окне терминала, чтобы остановить передачу-демон.Настроить привязку передачи на интерфейс VPN
Теперь давайте создадим сценарий Upstart, который будет использоваться для запуска передачи, когда VPN будет готова.
Не беспокойтесь, если это будет жаловаться, просто сделайте резервную копию файла Upstart, если он существует - его может и не быть. Давайте откроем vim для редактирования нового:
Вставьте это в редактор:
Сохраните и закройте vim. (
Escape
затем введите:wq
). Снова откройте vim:И вставьте это:
Снова сохраните и закройте vim. (
Escape
затем введите:wq
). В заключение:Вставьте это:
Эти сценарии сообщают Upstart прислушиваться к сигналу «translation-vpn-up». Затем сценарий «translation-up.conf» устанавливает необходимые правила маршрутизации для отправки трафика с локального адреса VPN через интерфейс VPN и настраивает межсетевой экран на пропуск трафика из VPN в порт прослушивания для передачи. Трафик, направляемый на порт прослушивания Transmission из обычного интерфейса LAN, блокируется. Затем сценарий «translation-daemon.conf» запускает демона передачи с необходимыми настройками, чтобы привязать его к IP-адресу VPN. Обратите внимание, что эта команда также обеспечит отключение UPnP / NAT-PMP - см. Мою заметку вверху о переадресации портов. "Nice -15" устанавливает Transmission на более низкий приоритет, что я считаю полезным при использовании BeagleBone с более низкой спецификацией - иногда Transmission может захватывать ресурсы, что замедляет работу системы. По крайней мере, с низким приоритетом, более важные системные задачи могут выполняться. Сценарий «translation-down.conf» удалит правила брандмауэра при остановке VPN. Три различных сценария используются для того, чтобы демон передачи можно было запускать как непривилегированный пользователь, но правила брандмауэра можно запускать как root.
Теперь давайте вернемся к настройкам OpenVPN и отредактируем сценарии «route-up» и «down», чтобы запускать и останавливать наш скрипт Transmission.
Вставьте это в vim:
Все, что делает этот скрипт, говорит Upstart, что демон передачи должен запуститься, и дает ему информацию, необходимую для подключения к VPN-соединению.
Опять же приклеиваем:
Этот скрипт еще более прост - он сигнализирует об остановке демона передачи.
На этом этапе, вероятно, будет хорошей идеей убедиться, что владельцем всей папки конфигурации VPN является пользователь root - поскольку эти сценарии запускаются с правами root, любой, кто может их изменить, может запускать все, что хочет в качестве пользователя root.
Теперь это означает, что только пользователь root может изменять или просматривать настройки VPN-подключения.
ОК, мы почти закончили! Давайте проверим, работает ли наша установка до сих пор:
Снова подключитесь к веб-интерфейсу Transmission и возобновите существующий торрент или добавьте новый. Это должно быть в состоянии загрузить, возможно после нескольких минут ожидания для пиров. Изысканный способ тестирования того, работает ли он, - это посмотреть на iftop. Установите iftop и запустите:
На этом экране будут показаны все соединения, проходящие через VPN. Если ваш торрент загружается и правильно использует VPN, здесь будет много IP-адресов и имен хостов. Также посмотрите на iftop для подключения к локальной сети:
Здесь вы должны увидеть большой объем трафика на один IP-адрес, являющийся сервером VPN, а затем только минимальный трафик на другие устройства локальной сети - при условии, что вы не используете другие сервисы на своей BeagleBone.
Вы можете подтвердить, что VPN работает, следуя этим инструкциям .
Этот сайт позволяет вам скачать торрент, чтобы увидеть IP-адрес, который другие узлы используют для подключения к вам - если все работает, то это будет IP-адрес VPN, а не ваш собственный IP-адрес в глобальной сети.
Если у вас возникли проблемы, вы можете просмотреть журнал ошибок Upstart, выполнив:
В отдельном окне терминала / SSH попробуйте выполнить команду tail при запуске VPN-подключения, как описано выше, и найдите все сообщения об ошибках. Надеюсь, вы сможете решить проблему, увидев сообщения об ошибках, если не покопайтесь в Интернете, или оставьте комментарий.
Настройте все это для автоматического запуска
Если вы довольны ручным вводом команды для запуска туннеля OpenVPN или хотите сделать это с помощью собственного сценария, то все готово. Но я хотел, чтобы он запускался при загрузке, поэтому я сделал еще один скрипт Upstart для запуска OpenVPN.
Это последнее, что мы должны вставить!
Все, что нужно сделать, это дождаться, пока система подаст сигнал о готовности сети, а затем запустит туннель OpenVPN, который, в свою очередь, начнет передачу. Когда система выключена или если по какой-то причине сеть отключена, Upstart удалит правила брандмауэра и закроет демон передачи. Просто! Это продолжит работать и после перезагрузки, так что теперь все готово.
Чтобы взаимодействовать с Transmission, используйте веб-интерфейс, как мы делали на этапе установки. Также возможно сделать графический интерфейс доступным через Интернет, настроив переадресацию портов. Есть много учебников о том, как это сделать, поэтому я не буду повторять это здесь.
Что касается получения завершенных загрузок с BeagleBone, я использую NFS. Я могу получить скорость копирования около 8 МБ / с по локальной сети с BeagleBone на мой настольный компьютер - что очень хорошо для такого маломощного устройства. Ubuntu предоставляет некоторую полезную информацию для настройки этого.
источник
Просто заставил это работать, используя SystemD, поэтому я решил поделиться. Я поместил все свои скрипты, конфиги и сертификаты в один каталог, который я буду называть
/etc/openvpn/myprovider
OpenVPN config
Это зависит от вашего конкретного VPN, но одно отличие от конфигурации @ seanlano заключается в том, что я использую только
route-up
скрипт. Таким образом, в дополнение к вашему рабочему конфигу вам понадобятся следующие строки:Где вы размещаете
transmission-route-up.sh
сценарий, где хотите. Обратите внимание на отсутствиеdown
скрипта. (В моем VPN уже использовался нестандартный сценарий отключения, поэтому в любом случае он конфликтовал бы)./etc/openvpn/myprovider/transmission-route-up.sh:
Первая строка
printenv
важна. Разместите его там, где вам нравится, он будет использован в сервисе SystemD позже. Я помещаю его в тот же каталог, что и мой конфиг vpn.Замените 24328 на любой порт, который должен прослушивать ваш трансмиссионный демон. Я использую iptables (используя Debian), так что вы, вероятно, можете заменить эти строки на строки ufw из конфигурации @ seanlano.
VPN-сервис SystemD
Это сервис, который автоматически запускает VPN для нас. Убедитесь, что на вашем компьютере указан правильный путь к openvpn и правильный путь к файлу конфигурации. Вы должны указать полные пути в службах SystemD.
/etc/systemd/system/my-vpn.service:
Включить службу VPN с помощью:
И проверить это с:
Если он запущен / работает, ты в порядке.
Передача SystemD-daemon.service
Для этого сценария требуется vpn-сервис, поэтому, если vpn выходит из строя, демо-передача также отключается. Это удобно, если vpn перезапускается, и вы получаете новый IP-адрес, потому что тогда необходимо будет перезапустить и повторно связать передачу, что должно быть обработано автоматически. Обратите внимание, что мы используем переменные среды, которые мы напечатали в
route-up
скрипте ранее./etc/systemd/system/transmission-daemon.service:
Включить его
И начни это
При перезагрузке все должно запуститься автоматически (по порядку!). Обратите внимание, что использование
Type=simple
в сервисе vpn вызывает некоторые проблемы для синхронизации порядка сценариев, поэтому я рекомендую использоватьforking
вместо этого.Вы можете указать фактический ip-адрес,
rpc-bind-address
если хотите ограничить его (это адрес прослушивания веб-интерфейса, который не должен быть вашим VPN-ip). И если вы хотите запустить передачу с хорошим, просто изменитеExecStart
строку и добавьте/usr/bin/nice -n15
в начало.Обработка изменений адреса
Со временем я заметил одну вещь: если vpn-соединение по какой-то причине получает новый ip-адрес, передача все равно будет привязана к старому адресу и перестанет работать. И просто занимаюсь
systemctl restart transmission-daemon.service
это не значит. Необходимо полностью остановиться, а затем начать все заново.Не знаю почему, но по этой причине я добавил следующие строки в мой корневой crontab (
sudo crontab -e
):источник
Я заметил, что вы упомянули, что передача не проходит через VPN для UPnP / NAT-PMP. Я также заметил это и создал патч для Transmission, чтобы он учитывал настройку bind-address-ipv4 для UPnP. NAT-PMP немного сложнее реализовать, так как вам нужно определить шлюз по умолчанию. UPnP является основным, который используется в наши дни, поэтому, вероятно, он достаточно хорош. Я зарегистрировал это как ошибку на сайте trac.transmissionbt и предоставил патч. Надеюсь, он будет включен в будущий выпуск. https://trac.transmissionbt.com/ticket/5990
Если вы не хотите перекомпилировать сейчас, вы можете вручную запустить upnpc из пакета miniupnpc. Например
Где 10.10.10.51 - ваш VPN-IP, а 51515 - запрашиваемый порт TCP / UDP.
Я не уверен, как долго будет полезна пересылка. Также вы можете захотеть использовать опцию -d для удаления вашего порта при отключении. Я обнаружил, что если я этого не сделаю, я не смогу снова получить тот же порт, если перейду в VPN.
ура
источник
miniupnpc
! И, надеюсь, патч слился, и эта проблема будет исправлена навсегда. А пока я определенно попытаюсь использовать ваш удобный совет.