ホームネットワークのゲートウェイとして機能するLinuxサーバーがあります。 2つのイーサネットデバイスがあります。
p3p1
:WAN、パブリックIPアドレスa.b.c.d
p2p1
:LAN、プライベートIPアドレス10.0.3.1/24
また、ポイントツーポイントOpenVPNトンネルを介してリモートLinuxサーバー(私も管理しています)に接続します。これにより、デバイスが追加されます
tun2
:VPN、プライベートIPアドレス10.2.0.2/32
質問は次のとおりです。LAN上のクライアントからのすべてのトラフィックをOpenVPNトンネル経由でリダイレクトするにはどうすればよいですか?
VPNクライアント構成オプションredirect-gateway def1
を使用して、すべてのトラフィック(ゲートウェイサーバーから発信されたトラフィックを含む)をリダイレクトできます。しかし、それは私が望んでいることではありません。
IPTables NATを使用してこれを行う方法はありますか?
ありがとう!
A. Fendtがコメントで述べたように、私はポリシーベースのIPルーティングを使用してこれを行うことができました。
$ echo "200 vpndef1" | Sudo tee -a /etc/iproute2/rt_tables
$ Sudo ip route add 10.0.3.0/24 via 10.0.3.1 dev p2p1 table vpndef1 $ Sudo ip route add default via 10.2.0.1 dev tun2 table vpndef1
$ Sudo ip rule add from 10.0.3.0/24 lookup vpndef1
実行する必要のある手順は次のとおりです。
10.0.3.1
に構成する必要があります。p2p1
の背後にあるVPNデフォルトゲートウェイにルーティングし、サーバートラフィックをp3p1
の背後にあるデフォルトゲートウェイにルーティングします。MASQUERADE
する必要があります。# enable ip forwarding echo 1 > /proc/sys/net/ipv4/ip_forward # configure iptables iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -d 10.2.0.2/32 -j MASQUERADE iptables -P FORWARD DROP iptables -A FORWARD -i p2p1 -o tun2 -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT