OpenVPNトンネルを介した特定のクライアントルーティング

OpenVPNトンネルを介した特定のクライアントルーティング

内部ネットワークのルーターとして使用するcentosボックスでopenvpnクライアントを実行しています。外部世界への2つのインターフェースがあります。

eth0 - normal internet 
tun0 - openvpn tunnel 

"route-noexec"オプションを入れてopenvpn自動パスインポートを無効にし、すべてのパスを手動で処理します。 openvpnトンネルを開くと、ルーティングテーブルは次のようになります。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.80.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.8.0.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
192.168.44.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.11.0    0.0.0.0         255.255.255.0   U     0      0        0 dummy0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
0.0.0.0         192.168.44.1    0.0.0.0         UG    0      0        0 eth0

これで、Centosシステムのインターフェイス192.168.80.0に内部ホストが接続されました。

192.168.80.50

このユーザーのすべてのトラフィックはインターフェイスtun0を介してルーティングし、他のすべてのトラフィックはeth0を介してルーティングする必要があります。

このようなPOSTROUTINGルールを追加してみました。

iptables -t nat -A POSTROUTING -s 192.168.80.50 -o tun0 -j MASQUERADE
iptables -t nat -A POSTROUTING  -o eth0 -j MASQUERADE

ただし、すべてのクライアントは192.168.80.50を含むeth0のみを通過します。どうすればいいですか?

ベストアンサー1

に基づいてスーパーユーザーへの答えです。:

一部のIP用のルーティングテーブルを作成します。

ip rule add from <sourceIP>/<mask> table <name>

次に、ルーティングテーブルに一致する新しいパスを宣言します<name>

ip route add default via <router> dev tun0 table <name> 

VPNを使用する必要がある場合、この構成ではテーブル内のすべてのIPを指定する必要があるため、サブネットを持つ方が簡単です。<name>

おすすめ記事