編集する

編集する

背景: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。トンネルが完全に設定された後に実行されるスクリプトに対して機能します。それでも停止している場合は、サブプロセス&スタイルを開始する必要があります。

おすすめ記事