Como executar um script após a inicialização do OpenVPN ser concluída?

1

Plano de fundo : desejo verificar a velocidade dos vários servidores do meu provedor de VPN e escrevi um script que executa iperf3 para cada um dos servidores. O script não modifica a configuração de rede de forma alguma.

O problema : enquanto um comando openvpn simples traz um túnel funcional, adicionando o script quebra a comunicação.

Por favor, veja meu EDIT no final da pergunta, que pode indicar o que está acontecendo. Eu também modifiquei o título da pergunta por esse motivo

Caso 0: sem openvpn - rede OK

A tabela de roteamento é

default via 10.0.3.1 dev eth0
10.0.3.0/24 dev eth0  proto kernel  scope link  src 10.0.3.46

Caso 1: simples openvpn - rede OK

O comando

# openvpn --config at3.nordvpn.com.tcp443.ovpn --auth-user-pass auth.txt

(...)
Sat Mar  5 19:06:17 2016 /sbin/ip link set dev tun0 up mtu 1500
Sat Mar  5 19:06:17 2016 /sbin/ip addr add dev tun0 local 10.7.7.210 peer 10.7.7.209
Sat Mar  5 19:06:17 2016 /sbin/ip route add 37.252.190.165/32 via 10.0.3.1
Sat Mar  5 19:06:17 2016 /sbin/ip route add 0.0.0.0/1 via 10.7.7.209
Sat Mar  5 19:06:17 2016 /sbin/ip route add 128.0.0.0/1 via 10.7.7.209
Sat Mar  5 19:06:17 2016 /sbin/ip route add 10.7.7.1/32 via 10.7.7.209
Sat Mar  5 19:06:17 2016 Initialization Sequence Completed

traz um túnel com as rotas associadas

0.0.0.0/1 via 10.7.7.209 dev tun0
default via 10.0.3.1 dev eth0
10.0.3.0/24 dev eth0  proto kernel  scope link  src 10.0.3.46
10.7.7.1 via 10.7.7.209 dev tun0
10.7.7.209 dev tun0  proto kernel  scope link  src 10.7.7.210
37.252.190.165 via 10.0.3.1 dev eth0
128.0.0.0/1 via 10.7.7.209 dev tun0

Traceroute para www.google.com é OK

# traceroute 66.102.1.103
traceroute to 66.102.1.103 (66.102.1.103), 30 hops max, 60 byte packets
 1  10.7.7.1 (10.7.7.1)  32.933 ms  65.328 ms  65.332 ms
 2  37-252-190-129.rev.ipax.at (37.252.190.129)  65.341 ms  65.337 ms  65.335 ms
(...)

Caso 2: openvpn com um script - a rede falha

OpenVPN começou com

# openvpn --config at3.nordvpn.com.tcp443.ovpn --auth-user-pass auth.txt --script-security 2 --route-delay 5 --route-up "./testlink.sh at3.nordvpn.com.tcp443.ovpn"

(...)
Sat Mar  5 19:11:20 2016 /sbin/ip link set dev tun0 up mtu 1500
Sat Mar  5 19:11:20 2016 /sbin/ip addr add dev tun0 local 10.7.7.210 peer 10.7.7.209
Sat Mar  5 19:11:25 2016 /sbin/ip route add 37.252.190.165/32 via 10.0.3.1
Sat Mar  5 19:11:25 2016 /sbin/ip route add 0.0.0.0/1 via 10.7.7.209
Sat Mar  5 19:11:25 2016 /sbin/ip route add 128.0.0.0/1 via 10.7.7.209
Sat Mar  5 19:11:25 2016 /sbin/ip route add 10.7.7.1/32 via 10.7.7.209
+ server=at3.nordvpn.com.tcp443.ovpn
+ iperf3 -J -c ping.online.net

As últimas duas linhas são o começo do meu script. iperf3 trava porque não pode alcançar o servidor iperf3 .

A tabela de roteamento parece boa (= é a mesma que a anterior com% normalopenvpn, eu até fiz um diff nas saídas para ter certeza):

0.0.0.0/1 via 10.7.7.209 dev tun0
default via 10.0.3.1 dev eth0
10.0.3.0/24 dev eth0  proto kernel  scope link  src 10.0.3.46
10.7.7.1 via 10.7.7.209 dev tun0
10.7.7.209 dev tun0  proto kernel  scope link  src 10.7.7.210
37.252.190.165 via 10.0.3.1 dev eth0
128.0.0.0/1 via 10.7.7.209 dev tun0

Mas o mesmo traceroute para www.google.com falha:

# traceroute 66.102.1.103
traceroute to 66.102.1.103 (66.102.1.103), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 (...)

Por quê?

EDITAR

Eu fiz mais um teste: ter um script simples e sem bloqueio que ecoa "olá" e sai.

Para minha surpresa, o traceroute agora funciona, depois que a linha Initialization Sequence Completed foi registrada.

Parece que mais etapas de inicialização estão sendo feitas entre a inicialização do script e essa entrada de log. Como, nesse caso, posso executar um script de bloqueio? (bloqueio no sentido de fazer algumas ações dependentes da rede) ou, em outras palavras, após a conclusão da inicialização?

    
por WoJ 05.03.2016 / 20:24

1 resposta

-1

Não use --route-up , pois isso é para adicionar rotas quando o túnel aparecer.

Você pode tentar usar --up , que é destinado a scripts que devem ser executados depois que o encapsulamento estiver totalmente estabelecido. Se isso ainda trava, você precisa iniciar um subprocesso & -style

    
por 05.03.2016 / 20:56