Tomate, Transmission, OpenVPN et redirection de port


0

Ma configuration réseau:

  1. Je lance la transmission sur mon routeur Netgear R7000, il exécute un fork (v2017.2) de [Tomato shibby de Kille72] [1].
  2. Mon routeur n'est pas une passerelle, il est configuré en tant que point d'accès derrière un routeur / modem dédié et se trouve sur le même sous-réseau. Ce n'est même pas un serveur DHCP.
  3. Mon routeur est configuré avec une adresse IP de 192.168.1.251.

Mes objectifs:

  1. Je souhaite acheminer tout mon trafic de transmission via le client OpenVPN de mon routeur sans fuite de DNS.

  2. Je souhaite utiliser la redirection de port de mon VPN avec transmission pour transférer correctement le port attribué lors de la transmission au client. Je cherche à établir un lien entre le port attribué en transmission et le changement de port effectué par mon VPN.

Ce que je sais jusqu'à présent:

  1. Les limitations liées à l’exécution d’un système linx réduit dans Tomato semblent me poser des problèmes lors de l’exécution de scripts que d’autres personnes ont créés en ligne.
  2. J'ai réussi à [exécuter ce script] [2] pour demander mon port à privateinterentaccess.com mais je n'arrive pas à trouver un script qui fonctionne pour envoyer ce port automatiquement à la transmission. Dans le lien (ou le script), vous pouvez voir que l’API a créé un accès Internet privé pour demander le port.
  3. J'ai trouvé divers autres scripts, y compris [un autre dans le lien ci-dessus] [3] qui ne fonctionne pas, je reçois des erreurs d'expression régulière lors de l'exécution du script.
  4. J'ai aussi essayé [ce script] [4] qui a l'air adapté à mon utilisation, mais cela ne fonctionne pas. Après avoir modifié le script, je reçois:

awk: cmd. ligne: 1: jeton inattendu awk: cmd. ligne: 1: jeton inattendu   awk: cmd. ligne: 1: Ping token inattendu: adresse incorrecte '' '' '' awk: cmd.   ligne: 1: jeton inattendu

  1. J'ai très peu de connaissances sur Linux, mais je suis désireux d'apprendre et j'ai trouvé cela très intéressant.
  2. La plupart des informations en ligne semblent indiquer que les personnes utilisant la transmission sur un réseau client fonctionnant derrière un routeur (probablement un NAS). Cela semble rendre la tâche plus difficile, car je dois transférer le trafic uniquement à partir du serveur sur lequel je suis en train de lancer la transmission et openVPN.

Quelques notes

  1. J'ai remarqué que, parce que Tomato n'exécutait pas bash ou sha256sum, je devais trouver un moyen de les installer pour que le script demande à un port de fonctionner. Je les ai téléchargés à partir du référentiel Optware.
  2. Il existe un onglet de stratégie de routage dans la section OpenVPN de tomato, mais il semble que ce soit très bogué et je ne peux pas comprendre comment l'utiliser sans fuite de DNS. La seule façon pour moi de ne pas fuir est si je choisis l'option: rediriger le trafic internet. [Voici les bogues qui ont été trouvés] [5] dans la politique de routage et voici des captures d'écran des options que j'ai dans VPN ouvert + ma configuration personnalisée actuelle:

Quelqu'un a-t-il des suggestions sur la meilleure façon d'atteindre mes objectifs?

Merci d'avoir pris le temps de lire!

J'ai dû supprimer mes liens car je n'ai pas une réputation assez élevée pour en publier plus de deux. Vous pouvez les voir ici: https://pastebin.com/UzdM0fjj

Réponses:


0

Succès! Script de travail ci-dessous:

Les dépendances: transmission-remote - vous pouvez installer le paquet transmission-remote-openssl via optware. sha256sum - paquet optware 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{r=1;FS="[{}\":]+"} /port/{r=0; print $3} END{exit r}')
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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.