systemd openvpn upスクリプトが機能しない


0

openvpn client.confにはオプション "--up /home/averagejoey2000/bin/port_forward.sh"が含まれていますがsystemctl openvpn-client@client.service、スクリプトが引数を受け入れない場合、openvpnがスクリプトに引数を添付するため、実行するたびにプロセスが失敗します。

 openvpn-client@CA_Toronto.service - OpenVPN tunnel for CA_Toronto
   Loaded: loaded (/usr/lib/systemd/system/openvpn-client@.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2017-02-14 09:16:02 PST; 4s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 28780 ExecStart=/usr/sbin/openvpn --suppress-timestamps --up /home/averagejoey2000/bin/port_forwarding.sh --nobind --config %i.conf (code=exited, status=1/FAILURE)
 Main PID: 28780 (code=exited, status=1/FAILURE)


Feb 14 09:16:02 Mjolnir4 openvpn[28780]: /usr/bin/ip addr add dev tun0 local 10.11.10.6 peer 10.11.10.5
Feb 14 09:16:02 Mjolnir4 openvpn[28780]: /home/averagejoey2000/bin/port_forwarding.sh tun0 1500 1558 10.11.10.6 10.11.10.5 init
Feb 14 09:16:02 Mjolnir4 openvpn[28780]: Unrecognized option: tun0
Feb 14 09:16:02 Mjolnir4 openvpn[28780]: Usage: /home/averagejoey2000/bin/port_forwarding.sh
Feb 14 09:16:02 Mjolnir4 openvpn[28780]: WARNING: Failed running command (--up/--down): external program exited with error status: 1
Feb 14 09:16:02 Mjolnir4 openvpn[28780]: Exiting due to fatal error
Feb 14 09:16:02 Mjolnir4 systemd[1]: openvpn-client@CA_Toronto.service: Main process exited, code=exited, status=1/FAILURE
Feb 14 09:16:02 Mjolnir4 systemd[1]: Failed to start OpenVPN tunnel for CA_Toronto.
Feb 14 09:16:02 Mjolnir4 systemd[1]: openvpn-client@CA_Toronto.service: Unit entered failed state.
Feb 14 09:16:02 Mjolnir4 systemd[1]: openvpn-client@CA_Toronto.service: Failed with result 'exit-code'.`

tun0 1500 1558 10.11.10.6 10.11.10.5 init引数として渡されないようなものを何に追加するのかわかりません~/bin/port_forwarding.sh

EDIT1 port_forwarding.sh

#!/usr/bin/env bash
#
# Enable port forwarding when using Private Internet Access
#
# Usage:
#  ./port_forwarding.sh

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( )
{
  echo 'Loading port forward assignment information...'
  if [ "$(uname)" == "Linux" ]; then
    client_id=`head -n 100 /dev/urandom | sha256sum | tr -d " -"`
  fi
  if [ "$(uname)" == "Darwin" ]; then
    client_id=`head -n 100 /dev/urandom | shasum -a 256 | tr -d " -"`
  fi

  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 $json
}

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

https://www.privateinternetaccess.com/forum/discussion/23431/new-pia-port-forwarding-apiから

EDIT2コメントMax-P Max-P 2月1日に投稿投稿:90追加のメモ:VPNへの接続から2分以内にポートを要求する必要があります。この時点を過ぎると、APIは使用できなくなり、接続を拒否します。OpenVPNを引用OpenVPN 2月1日に投稿投稿:81この新しいAPIは古いAPIよりもどのように優れていますか?違いは何ですか?説明してください。引用Max-P Max-P 2月1日に投稿投稿:90 @OpenVPN:はるかに使いやすく、安全です。以前のAPIはWebサイトを呼び出す必要がありましたが、これはVPN上で実行する必要があったため、APIがどのサーバーに接続しているかを見ることができました。また、通常は解析ifconfigまたはを含むローカルアドレスも渡すip addr必要があり、ポートを維持するために1時間に1回呼び出す必要がありました。全体的には少し努力が必要でした。今、あなたはあなたとしてそれを平手打ちすることができます--upストックOpenVPNでスクリプトを作成し、完了です:) Quote

回答:


0

OpenVPNの起動時にこのスクリプトを実行する必要があると思うのはなぜですか?あなたが参照するWebページは決して言及しません。また、OpenVPNのup / downスクリプトは、ルーティングのカスタム設定を実行するために使用されます(たとえば、新しいルートがデフォルトのルーティングテーブルとは異なるルーティングテーブルに属している場合)。あなたのログ。

また、スクリプトに変数を渡す必要がないため、2行を安全に変換できます。

error_and_usage "Unrecognized option: $1"
    ;;

    ;;

スクリプトが機能するはずです。出力(echo $ json)がシステムログに記録されることに注意してください。他の場所で検索する場合は、echo $ json行を次のように変更してください。

echo $json >> /path/to/some/convenient/file

APIは、VPNが起動してから2分以内にのみポート要求を受け入れます。コメンターは--upに入れることをお勧めします。忘れた場合は、切断して再接続する必要があるため
averagejoey2000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.