すべての VPN トラフィックを特定のハードウェア インターフェイス経由でルーティングするにはどうすればよいですか?

すべての VPN トラフィックを特定のハードウェア インターフェイス経由でルーティングするにはどうすればよいですか?

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 ruleLinux では、 コマンドとコマンドを使用してルーティング ルールを調整できます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 つのスクリプト (それぞれ) に配置し、OpenVPNroute-uproute-pre-downフックを介して呼び出すことです。

OpenVPN を実際にどのように使用するかに応じて、コマンドラインからと(場合によっては も)openvpnを指定してを実行するか、 トンネルの OpenVPN ファイルにこれらの構成を追加する必要があります。--route-up script-that-adjusts-routing.sh--route-pre-down script-that-undoes-routing.sh--script-security 2.conf

すでにスクリプトがある場合はroute-uproute-pre-down既存のスクリプトに調整コマンドを追加する必要があります。これらのスクリプトの機能によっては、追加の注意が必要になる場合があります。

関連情報