iptablesでNATフィルタリング動作を設定する

iptablesでNATフィルタリング動作を設定する

SNAT を設定するために次のルールを使用しています:

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 193.49.142.107:4000

セッションを開始した内部アドレスとポート宛てではないパケットをフィルタリングするルールを指定したい。また、特定の外部エンドポイントからパケットを受信するには、内部エンドポイントが最初にその特定の外部エンドポイントの IP アドレスにパケットを送信する必要があります。(NAT アドレス依存フィルタリング)

例:

NAT の背後にある内部 IP とポート (X:x) を持つマシンが、IP Y を持つサーバーへの接続を開きます。したがって、ルールでは、IP アドレス Y から (X:x) 宛ての接続のみを許可する必要があります。その他の接続はすべてドロップされます。

答え1

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -P FORWARD -j DROP
iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT

これらのルールは何をするのでしょうか?

  1. -A POSTROUTING -o eth1 -j MASQUERADEパケットがネットワークから出るときに内部IPを隠します
  2. -P FORWARD -j DROPFORWARDチェーンのデフォルトポリシーをDROPに設定します
  3. -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED -j ACCEPT新規および既存のFORWARD接続を許可する
  4. -A FORWARD -i eth1 -m state --state ESTABLISHED -j ACCEPT確立されたFORWARD接続のみを許可する

上記のルールは、このボックスをeth1WAN に接続し、eth0LAN に接続したゲートウェイ/ファイアウォールとして使用していることを前提としています。

追加の参考資料:ポストルーティングと IP マスカレード

編集

「条件付き」ポート転送を構成するには:

送信元ポート別

iptables -A PREROUTING -t nat -i eth1 -p tcp --sport [trusted_source_port] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT

ソースIP別

iptables -A PREROUTING -t nat -i eth1 -p tcp -s [trusted_source_ip] --dport [external_port] -j DNAT --to [internal_ip]:[internal_port]
iptables -A FORWARD -p tcp -d [internal_ip] --dport [internal_port] -j ACCEPT

関連情報