転送されたパケットのパスが発信するパケットのパスとは異なります。

転送されたパケットのパスが発信するパケットのパスとは異なります。

私は特定のソースからSRCNAT(具体的にMASQUERADE)パケットを転送するためにiptablesを使用しています。発信パケット(このコンピュータで開始)を転送されたパケット(別のデフォルトパス)とは異なる方法でルーティングしたいと思います。どうすればいいですか?

答え1

1つの方法は、iptablesにトラフィックを表示し、ポリシールーティングを使用してアウトバウンドパスを一致させることです。

あなたが持っていると仮定ゲートウェイ1そしてゲートウェイ2同じLAN上...

ip route flush table 3
ip route add table 3 <lan net>
ip route add default via <gateway1>

ip route flush table 4
ip route add table 4 <lan net>
ip route add default via <gateway2>

iptables にトラフィックを表示します。

iptables -t mangle -A PREROUTING   -s 10.0.0.0/24 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING   -s 10.1.0.0/24 -j MARK --set-mark 4

送信元アドレス、宛先アドレス、ポートなど、必要なものを一致させることができます。

ダイナミック ゲートウェイ IP に依存せずに iptables からソース IP を明示的に書き換えるので、MASQUERADE の代わりに SNAT を使用できます。バラよりSNATとMASQUERADEの違い

答え2

/etc/sysctl.confを編集し、 "net.ipv4.ip_forward"オプションを追加/編集します。

net.ipv4.ip_forward=1

すぐに変更するには:

sysctl net.ipv4.ip_forward=1

iptablesルール:

iptables -A FORWARD -i input_dev -j ACCEPT
iptables -t nat -A POSTROUTING -o output_dev --src src_ip -j MASQUERADE

関連情報