ワイヤレス アクセス ポイントとして機能する Linux ボックスがあります。ワイヤレス クライアントは接続して Web を閲覧します。ポート 80 のみを許可しています。
ブロックしたいサイトがいくつかありますが、パケットをドロップするのではなく、ローカル Web サーバーによって提供される blocked.html ページにリダイレクトします。
NIC が 2 つあります。インターネット側の NIC は 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
答え2
-j DNAT --to-destination 127.0.0.1:80
クライアントをリダイレクトして、Web ページの独自のループバック アドレスを参照します。
続ける-A block-chain -d 206.190.36.45/32 -p tcp -j DNAT --to-destination 10.0.2.15:80