ブリッジされたネットワークがあります。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