2つのethインターフェイスと1つのwlanインターフェイスを持つコンピュータがあります。 VPN(openvpn)にも接続されており、tun0インターフェースも持っています。これで、すべてのVPNトラフィックがイーサネットではなくWLANインターフェイスを使用して送信されていることを確認したいと思います。デフォルトでは、実行が示すように、eth1を介して送信されますiftop
。私のルーティングテーブルは次のとおりです。
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default Teltonika.lan 0.0.0.0 UG 100 0 0 eth1
default 192.168.222.1 0.0.0.0 UG 600 0 0 wlan0
link-local * 255.255.0.0 U 1000 0 0 eth0
172.89.0.0 * 255.255.255.0 U 0 0 0 tun0
192.0.2.1 192.168.222.1 255.255.255.255 UGH 600 0 0 wlan0
192.168.0.0 * 255.255.0.0 U 100 0 0 eth1
192.168.3.0 * 255.255.255.0 U 100 0 0 eth0
192.168.222.0 * 255.255.255.0 U 600 0 0 wlan0
答え1
ip rule
Linuxでは、コマンドを使用してルーティングルールを調整できますip route
。後者のコマンドは、route
このコマンドと同等の上位レベルのコマンドです。
あなたの場合は、wlan0
インターフェイスのデフォルトゲートウェイが存在する唯一の(または優先)デフォルトゲートウェイである別のルーティングテーブルを使用してから、そのテーブルからのすべての着信トラフィックを指定するtun0
ルーティングルールを設定することで、必要な動作を取得できます。インターフェイスこの別のルーティングテーブルが使用されます。
たとえば、次の2つのコマンドを使用して取得できます。
ip route add default via 192.168.222.1 table 100 # <-- 100 is an arbitrary number for the separate routing table
ip rule add iif tun0 table 100
これを消去するには、次のようにします。
ip rule del iif tun0 table 100
ip route flush table 100
VPNを設定したら、リアルタイムでコマンドをテストし、すべてが期待どおりに機能していることを確認できます。
openvpn
その後、必要に応じてこれらのコマンド(または全体の設定に最適な同等のコマンド)を実行できます。これを行う最も簡単な方法は、これらのコマンドを(別々に)2つのスクリプトに配置し、OpenVPNとroute-up
フックroute-pre-down
を介して呼び出すことです。
openvpn
--route-up script-that-adjusts-routing.sh
実際には、OpenVPNの使用方法に応じて、コマンドラインで指定された--route-pre-down script-that-undoes-routing.sh
(そして可能であれば)実行するか、これらの設定をトンネルの--script-security 2
OpenVPNファイルに追加する必要があります。.conf
route-up
すでにスクリプトがある場合は、route-pre-down
既存のスクリプトに調整コマンドを追加する必要があり、そのスクリプトの機能によっては追加の注意が必要になる場合があります。