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?