ローカルWebサーバーのIPTables DNATルールはlocalhostで機能しませんか?

ローカルWebサーバーのIPTables DNATルールはlocalhostで機能しませんか?

ワイヤレスアクセスポイントとして機能するLinuxボックスがあります。ワイヤレスクライアントがWebに接続してナビゲートします。ポート80のみを許可します。

特定のWebサイトをブロックしたいがパケットを破棄するのではなく、ローカルWebサーバーから提供されているBlocked.htmlページにリダイレクトしてブロックしたいと思います。

ネットワークカードが2枚あります。インターネットの終わりは10.0.2.15にバインドされています。インターネットNICを使用してWebサーバーにトラフィックをリダイレクトするDNATルールを実行すると、このページが返されます。 127.0.0.1にリダイレクトすると、そうではありません。

なぜそんなことですか?

これは私のIPTables設定です。

# iptables -S
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT DROP
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT 
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT 
# iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N block-chain
-A PREROUTING -j block-chain 
-A POSTROUTING -o eth1 -j MASQUERADE 
# THIS WILL NOT RETURN THE PAGE TO THE CLIENT
-A block-chain -d 206.190.36.45/32 -p tcp -j DNAT --to-destination 127.0.0.1:80 
# THIS WILL
-A block-chain -d 206.190.36.45/32 -p tcp -j DNAT --to-destination 10.0.2.15:80 
-A block-chain -j RETURN 

ベストアンサー1

localhostの場合は、DNATの代わりにREDIRECTを使用する必要があります。あなたの例では:

-A block-chain -d 206.190.36.45/32 -p tcp -j REDIRECT --to-ports 80

おすすめ記事