Então, se eu executar manualmente o OpenVPN, a saída é
TUN/TAP device tun0 opened TUN/TAP TX queue length set to 100
do_ifconfig, tt-did_ifconfig_ipv6_setup=0
/sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 10.3.37.189/24 broadcast 10.3.37.255
/etc/openvpn/update_bind.sh tun0 1500 1569 10.3.37.189 255.255.255.0 init
Stopping SOME_SERVICE.
Found tunnel address to IP
Starting SOME_SERVICE.
/sbin/ip route add 31.7.56.130/32 via 192.168.1.1
/sbin/ip route add 0.0.0.0/0 via 10.3.37.254
Initialization Sequence Completed/sbin/ip route del 0.0.0.0/0
Você pode ver o script up funcionando devido ao "Endereço do encapsulamento encontrado para IP". Se eu agora executar o comando
sudo service openvpn start/stop/restart
A saída é idêntica, mas o "Endereço do túnel encontrado para IP" desapareceu, indicando que o script up pode não ser executado corretamente. Aqui está a parte em questão na minha configuração do OpenVPN:
script-security 2
up /etc/openvpn/update_bind.sh
Aqui está o script:
#!/bin/bash
/etc/init.d/transmission-daemon stop
VPNADDR='ifconfig | grep -A 5 "tun" | awk '/t addr:/{gsub(/.*:/,"",$2);print$2}''
if [ -z "$VPNADDR" ]; then
VPNADDR=127.0.0.1
fi
echo "Found tunnel address to $VPNADDR"
cat PATH_TO/settings.json | sed "s/.*bind-address-ipv4.*/ \"bind-address-ipv4\"\: \"$VPNADDR\",/g" > PATH_TO/settings.json.tmp
chmod 600 PATH_TO/settings.json.tmp
chown kriegalex:kriegalex PATH_TO/settings.json.tmp
mv PATH_TO/settings.json.tmp PATH_TO/settings.json
/etc/init.d/transmission-daemon start
O serviço openvpn não tem o mesmo poder (ou mais) que eu para executar scripts? Isso também funcionou no FreeNas, mas não em uma VM do Ubuntu 16.04.
Tags bash openvpn bash-scripting