Tomate, Übertragung, OpenVPN und Portweiterleitung

600
Dodgexander

Meine Netzwerkkonfiguration:

  1. Ich führe die Übertragung auf meinem Netgear R7000-Router aus, es wird eine Verzweigung (v2017.2) von [Tomato shibby by Kille72] [1] ausgeführt.
  2. Mein Router ist kein Gateway, er ist als Zugangspunkt hinter einem dedizierten Router / Modem eingerichtet und befindet sich im selben Subnetz. Es ist nicht einmal ein DHCP-Server.
  3. Mein Router ist mit einer IP-Adresse von 192.168.1.251 konfiguriert

Meine Ziele:

  1. Ich möchte meinen gesamten Übertragungsverkehr über den OpenVPN-Client meines Routers ohne DNS-Leck leiten.

  2. Ich möchte die Port-Weiterleitung meines VPN mit Übertragung verwenden, um den zugewiesenen Port bei der Übertragung des Clients erfolgreich weiterzuleiten. Ich freue mich darauf, den zugewiesenen Port mit dem Portwechsel durch mein VPN zu verbinden.

Was ich bisher weiß:

  1. Die Einschränkungen bei der Verwendung eines reduzierten Linx-Systems in Tomato scheinen mich zu Problemen bei der Ausführung von Skripts zu veranlassen, die andere Benutzer online erstellt haben.
  2. Es ist mir gelungen, [dieses Skript auszuführen] [2], um meinen Port erfolgreich von privateinterentaccess.com anzufordern, aber ich kann kein funktionierendes Skript finden, um diesen Port automatisch zur Übertragung zu senden. In dem Link (oder Skript) können Sie sehen, dass die API Private Internet Access erstellt wurde, um den Port anzufordern.
  3. Ich habe verschiedene andere Skripte gefunden, darunter [ein anderes im obigen Link] [3], das nicht funktioniert. Ich bekomme beim Ausführen des Skripts Regex-Fehler.
  4. Ich habe auch [dieses Skript] [4] ausprobiert, das auf meinen Gebrauch zugeschnitten ist, aber es funktioniert nicht. Nach dem Ändern des Skripts bekomme ich:

awk: cmd. Zeile: 1: Unerwartetes Zeichen awk: cmd. Zeile: 1: Unerwartetes Zeichen awk: cmd. Zeile: 1: Unerwarteter Token-Ping: falsche Adresse '' '' awk: cmd. Zeile: 1: Unerwartetes Token

  1. Ich habe sehr wenig Linux-Kenntnisse, aber ich lerne gern und fand das sehr interessant.
  2. Die meisten Online-Informationen deuten darauf hin, dass Personen die Übertragung auf einem Client ausführen, der hinter einem Router (wahrscheinlich einem NAS) läuft . Dies scheint es schwieriger zu machen, da ich den Verkehr nur von dem Server weiterleiten muss, auf dem ich sowohl Übertragung als auch openVPN laufe.

Einige Notizen

  1. Da Tomato weder bash noch sha256sum ausführte, musste ich einen Weg finden, sie zu installieren, damit das Skript einen Port anfordert. Ich habe sie aus dem optware-Repository heruntergeladen.
  2. In der OpenVPN-Sektion von Tomate gibt es eine Registerkarte für Routing-Richtlinien, aber es scheint sehr fehlerhaft zu sein, und ich kann nicht herausfinden, wie ich sie ohne ein DNS-Leck verwenden kann. Der einzige Weg, den ich nicht durchsickere, ist die Option: Internetverkehr umleiten. [Hier sind Fehler, die gefunden wurden] [5] in der Routing-Richtlinie, und hier sind Screenshots der Optionen, die ich in Open VPN + meiner aktuellen benutzerdefinierten Konfiguration habe:

Hat jemand Vorschläge, wie ich meine Ziele am besten erreichen kann?

Vielen Dank, dass Sie sich die Zeit zum Lesen genommen haben!

Ich musste meine Links entfernen, da ich keinen guten Ruf habe, um mehr als zwei zu posten. Sie können sie hier anzeigen: https://pastebin.com/UzdM0fjj

0

1 Antwort auf die Frage

0
Dodgexander

Erfolg! Arbeitsskript unten:

Abhängigkeiten: Transmission-Remote - Sie können das Paket "Transmission-Remote-OpenSL" über optware installieren. sha256sum - optware-Paket 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