iptablesによるパケットの選択的NAT

iptablesによるパケットの選択的NAT

192.168.254.0/24 サブネットからのターゲット アドレスを持つパケットを除くすべてのパケットを iptables NAT にするにはどうすればよいですか?

答え1

私がよく理解しているのなら、-d否定オプションを使用すれば、これはかなり簡単になるはずです。たとえば、次のようなルールです。

$ iptables -A POSTROUTING ! -d 192.168.254.0/24 -j SNAT --to-source new_source_ip

もちろん、必要に応じてルールを変更できます。これにより、指定されたサブネット以外の宛先に送信されるすべてのパケットの送信元 IP が変更されます。

答え2

私の意見では、次の iptables コマンドの順序が機能するはずです。

1. iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j RETURN
2. iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -o eth0 -j MASQUERADE

ルール 1 はネットワークに一致しますが、マスカレードは行われません。ルール 2 はすべてをマスカレードしますが、一般的に 0.0.0.0 ワイルドカードを指定するのは得策ではありません (機能するかどうかさえわかりません)。マスカレードするすべてのネットワークを選択的に追加し、残りはマスカレードされないようにする必要があります。

関連情報