Iptables フィルタリングとセカンダリ IP アドレスを使用した NAT

Iptables フィルタリングとセカンダリ IP アドレスを使用した NAT

物理 eth インターフェイスに 2 つの IP アドレスがあります。192.168.10.7 (eth0:0) と 192.168.0.7 (eth0) とします。これで動作します。ただし、ポート 12000 でこのアドレスの 1 つだけを扱うアプリケーションを使用しています。このアプリケーションでは、内部的にアドレス 192.168.0.7 で動作するように設定されています。iptables を使用して、次のようにしてアプリケーションをアドレス 192.168.10.7 でも動作するように設定しました。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -d 192.168.10.7 --dport 12000 -j DNAT --to 192.168.0.7:12000

今、ポート 12000 を除く IP アドレス 192.168.10.7 (インターフェース eth0:0) へのすべての着信トラフィックをブロックしたいと考えています。残りのトラフィックはすべて変更しないでください。私は iptables の専門家ではありません。誰か助けてくれませんか?

答え1

iptables ルールがアプリケーションと同じマシンで動作することを前提とすると、アドレスとアプリケーション ポートへの着信パケットと発信パケットを受け入れるルールを定義する必要があります。その後、他のすべてを単純にドロップするだけです。次のようになります。

iptables -A 入力 -p tcp -d 192.168.10.7 --dport 12000 -j 受け入れ
iptables -A 出力 -p tcp -s 192.168.10.7 --sport 12000 -j 受け入れ

iptables -A 入力 -j ドロップ
iptables -A 出力 -j ドロップ

関連情報