tun0がシステムのデフォルトパスではない場合にbr0からtun0にトラフィックをルーティングする方法

tun0がシステムのデフォルトパスではない場合にbr0からtun0にトラフィックをルーティングする方法

ブリッジされたネットワークがあります。br0IPで10.0.0.1/24、そのIPに接続されたクライアントがあります10.0.0.2それに。 VPN接続もあります(Tun0)にはDHCPによって割り当てられたIPがあるため、IPが異なる場合があります。 VPN接続はシステムのデフォルトルートではないため、デバイスのすべてのトラフィックは通常のルートを通過します。イーサネット0ルーティング(VPNルーティングではありません)。 (ホストでIPv4転送が有効になっています)

私が達成したいのは、接続されているすべてのクライアントです。br0(私の場合はLXCコンテナ)ゲートウェイは次のように設定されます。10.0.0.1そのトラフィックはNATで接続され、VPN接続を介してルーティングする必要があります。

すぐに貼り付けることはできません。Tun0機器到着br0、次を使用してトラフィックを転送しようとしています。iptables

だから私が取るべきアクションは、流れを強制することです。br0変装した後Tun0次のコマンドを使用して:

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i br0 -o tun0 -j ACCEPT

ステータス追跡も追加しましたが、機能しません。

iptables -A INPUT -i br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

セカンダリプライマリパスを追加するには、「/etc/iproute2/rt_tables」ファイルに「1 vpnout」エントリを追加し、プライマリパスを追加しました。

ip route add default dev vpn-out table vpnout

これはうまくいかず、次のコマンドと同じ結果を持ちます。

ip route add default via dev vpn-out table vpnout
ip rule add from 10.0.0.0/24 table vpnout
ip rule add to 10.0.0.0/24 table vpnout

しかし、その後もまだpingできません8.8.8.8接続クライアントでbr0。私は何を逃したことがありませんか?

ベストアンサー1

だから私はついに@Fiischの提案で最終的に欠けている設定を見つけました。

これを動作させる最後のコマンドは次のとおりです。

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i br0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o br0 -j ACCEPT

iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

ip route add default dev tun0 table vpnout
ip route add 10.0.0.0/24 dev br0 table vpnout

ip rule add from 10.0.0.0/24 table vpnout
ip rule add to 10.0.0.0/24 table vpnout

おすすめ記事