
背景: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
Traceroutewww.google.com
は大丈夫です
# 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
最後の2行は私のスクリプトの始めです。iperf3
サーバーに接続できないためiperf3
中断されます。
ルーティングテーブルは良く見えます(=以前の一般的なルーティングテーブルと同じで、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
。トンネルが完全に設定された後に実行されるスクリプトに対して機能します。それでも停止している場合は、サブプロセス&
スタイルを開始する必要があります。