编辑

编辑

背景:我想检查 VPN 提供商的各个服务器的速度,并编写了一个iperf3为每个服务器运行的脚本。该脚本不会以任何方式修改网络设置。

问题:虽然简单的openvpn命令会带来功能隧道,但添加脚本会破坏通信。

还请查看我的编辑在问题的末尾,这可能表明发生了什么。为此我还修改了问题的标题

情况 0:否openvpn- 网络正常

路由表是

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

情况 1:普通openvpn- 联网正常

命令

# 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

引入具有关联路线的隧道

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 到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
(...)

案例 2:openvpn使用脚本 - 网络失败

OpenVPN 开始于

# 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

最后两行是我的脚本的开头。iperf3由于无法到达iperf3服务器而挂起。

路由表看起来不错(=它与之前的 plain 路由表相同openvpn,我什至对输出进行了diff确认):

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

但同样的跟踪路由www.google.com失败:

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

为什么?

编辑

我又做了一个测试:有一个简单的、非阻塞的脚本,它会回显“hello”并退出。

令我惊讶的是,在记录线路traceroute后,现在可以工作了。Initialization Sequence Completed

看起来脚本启动和此日志条目之间正在执行进一步的初始化步骤。在这种情况下我如何运行阻塞脚本?(阻塞是指它执行一些依赖于网络启动的操作),或者换句话说 - 在初始化完成之后?

答案1

不要使用--route-up,因为这是在隧道出现时添加路由。

您可以尝试使用--up,它适用于在隧道完全建立后运行的脚本。如果这仍然挂起,您需要启动子流程&样式

相关内容