Systemd openvpn up script não funciona

0

meu openvpn client.conf inclui uma opção "--up /home/averagejoey2000/bin/port_forward.sh" mas sempre que executo systemctl [email protected] , o processo falha porque openvpn anexou argumentos ao script, quando o script não aceita argumentos.

 openvpn-client@CA_Toronto.service - OpenVPN tunnel for CA_Toronto
   Loaded: loaded (/usr/lib/systemd/system/[email protected]; 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'.'

Eu não sei o que acrescentar de modo que tun0 1500 1558 10.11.10.6 10.11.10.5 init não seja passado como um argumento para ~/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

de link

EDIT2 Comentários Max-P Max-P Postado em 1 de Fevereiro Mensagens: 90 Nota adicional: a porta deve ser solicitada dentro de 2 minutos após conectar-se à VPN. Passado esse ponto, a API não está mais disponível e apenas recusará a conexão. Citar OpenVPN OpenVPN Postado em 1 de Fevereiro de mensagens: 81 Como esta nova API é melhor que a antiga? Qual é a diferença? Por favor explique. Citar Max-P Max-P Postado em 1 de Fevereiro Mensagens: 90 @ OpenVPN: Muito mais fácil de usar e mais seguro, principalmente. A API anterior precisava ligar para o website, o que tinha que ser feito na VPN para que a API pudesse ver em qual servidor você estava. Você também tinha que passar seu endereço local também, o que geralmente envolvia a análise de ifconfig ou ip addr , e você precisava chamá-lo uma vez a cada hora para manter sua porta. No geral, foi necessário um pouco de esforço. Agora você pode simplesmente dar um tapa em seu script --up no estoque OpenVPN e acabar com isso :) Citação

    
por averagejoey2000 14.02.2017 / 18:19

1 resposta

0

Por que você acha que esse script deve ser executado quando o OpenVPN for iniciado? A página da Web a que você se refere never menciona isso; Além disso, o script up / down no OpenVPN é usado para executar a configuração personalizada de roteamento (por exemplo, se as novas rotas pertencem a uma tabela de roteamento diferente da padrão), e é por isso que elas são passadas no bevvy de variáveis que você vê seus logs.

Além disso, seu script não precisa de nenhuma variável para ser passado a ele, e é por isso que você pode transformar as duas linhas com segurança

error_and_usage "Unrecognized option: $1"
    ;;

em

    ;;

e seu script deve funcionar. Apenas tenha em mente que sua saída ( echo $ json ) irá para o log do sistema; Se você deseja encontrá-lo em outro lugar, certifique-se de modificar a linha echo $ json como

echo $json >> /path/to/some/convenient/file
    
por 16.02.2017 / 19:34

Tags