Помидор, передача, OpenVPN и переадресация портов

516
Dodgexander

Моя конфигурация сети:

  1. Я запускаю передачу на моем маршрутизаторе Netgear R7000, на нем запущена вилка (v2017.2) из ​​[Tomato shibby by Kille72] [1].
  2. Мой маршрутизатор не является шлюзом, он настроен как точка доступа за выделенным маршрутизатором / модемом и находится в той же подсети. Это даже не DHCP-сервер.
  3. Мой маршрутизатор настроен с IP-адресом 192.168.1.251

Мои цели:

  1. Я хочу направить весь мой трафик передачи через клиент OpenVPN моего маршрутизатора без утечки DNS.

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

Что я знаю до сих пор:

  1. Ограничения запуска урезанной системы linx в Tomato, кажется, вызывают у меня проблемы с запуском сценариев, которые другие люди делают онлайн.
  2. Мне удалось [запустить этот сценарий] [2], чтобы успешно запросить мой порт у privateinterentaccess.com, но я не могу найти работающий сценарий для автоматической отправки этого порта на передачу. В ссылке (или скрипте) вы можете видеть, что API-интерфейс Private Internet, созданный для запроса порта.
  3. Я нашел различные другие сценарии, в том числе [другой в ссылке выше] [3], который не работает, я получаю ошибки регулярного выражения при запуске сценария.
  4. Я также попробовал [этот скрипт] [4], который выглядит специально для моего использования, но он не работает. После модификации скрипта я получаю:

awk: cmd. строка: 1: неожиданный токен awk: cmd. строка: 1: неожиданный токен awk: cmd. строка: 1: Неожиданный пинг токена: неверный адрес '””' awk: cmd. строка: 1: неожиданный токен

  1. У меня очень ограниченные знания Linux, но я стремлюсь учиться и нашел это очень интересным.
  2. Большая часть информации в Интернете, кажется, указывает на людей, осуществляющих передачу на клиенте, работающем за маршрутизатором (возможно, NAS). Кажется, это усложняет задачу, поскольку мне нужно перенаправлять трафик только с сервера, на котором запущена передача и openVPN.

Некоторые заметки

  1. Я заметил, что из-за того, что Tomato не запускал bash или sha256sum, мне пришлось искать способ установить их, чтобы скрипт запрашивал порт для работы. Я скачал их из репозитория optware.
  2. В томате OpenVPN есть вкладка «Политика маршрутизации», но она кажется очень глючной, и я не могу понять, как ее использовать без утечки DNS. Единственный способ избежать утечки - это выбрать опцию: перенаправить интернет-трафик. [Вот ошибки, которые были найдены] [5] в политике маршрутизации, и вот скриншоты опций, которые у меня есть в открытом VPN + моя текущая пользовательская конфигурация:

Есть ли у кого-нибудь предложения о том, как лучше всего достичь своих целей?

Спасибо, что нашли время, чтобы прочитать!

Мне пришлось удалить свои ссылки, поскольку у меня недостаточно высокая репутация, чтобы публиковать более двух сообщений. Вы можете просмотреть их здесь: https://pastebin.com/UzdM0fjj

0

1 ответ на вопрос

0
Dodgexander

Успех! Рабочий скрипт ниже:

Зависимости: translation-remote - вы можете установить пакет translation-remote-openssl через optware. sha256sum - пакет программного обеспечения coreutils-sha256sum

#!/usr/bin/env bash # # Enable port forwarding when using Private Internet Access # # Usage: # ./port_forwarding.sh # script must be run within 2 mins of connecting to vpn server. Do not forget to reconnect/connect # fill in your transmission username, password and hostname/ip below:  TRANSUSER=xxxxx TRANSPASS=xxxxx TRANSHOST=localhost #now let the script do the work  Sleep 20 echo pausing to wait for vpn to connect and transmission to start  error( ) { echo "$@" 1>&2 exit 1 }  error_and_usage( ) { echo "$@" 1>&2 usage_and_exit 1 }  usage( ) { echo "Usage: `dirname $0`/$PROGRAM" }  usage_and_exit( ) { usage exit $1 }  version( ) { echo "$PROGRAM version $VERSION" }   port_forward_assignment( ) { client_id_file="/etc/openvpn/pia_client_id" if [ ! -f "$client_id_file" ]; then if hash shasum 2>/dev/null; then head -n 100 /dev/urandom | shasum -a 256 | tr -d " -" > "$client_id_file" elif hash sha256sum 2>/dev/null; then head -n 100 /dev/urandom | sha256sum | tr -d " -" > "$client_id_file" else echo "Please install shasum or sha256sum, and make sure it is visible in your \$PATH" exit 1 fi fi client_id=`cat "$client_id_file"` json=`curl "http://209.222.18.222:2000/?client_id=$client_id" 2>/dev/null` if [ "$json" == "" ]; then json='Port forwarding is already activated on this connection, has expired, or you are not connected to a PIA region that supports port forwarding' fi  echo server returned: $json  #trim VPN forwarded port from JSON PORT=$(echo $json | awk 'BEGIN\":]+"} /port/ END') echo if successful, trimmed port is:$PORT  #change transmission port on the fly  transmission-remote $TRANSHOST --auth $TRANSUSER:$TRANSPASS -p "$PORT" echo here are your transmission credentials: host:$TRANSHOST username:$TRANSUSER password:$TRANSPASS } echo remember to run no longer than 2 mins after reconnecting/connecting to vpn server.  EXITCODE=0 PROGRAM=`basename $0` VERSION=2.1  while test $# -gt 0 do case $1 in --usage | --help | -h ) usage_and_exit 0 ;; --version | -v ) version exit 0 ;; *) error_and_usage "Unrecognized option: $1" ;; esac shift done  port_forward_assignment  exit 0 

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