IPTables DNAT 規則到本機 Web 伺服器不適用於本機?

IPTables DNAT 規則到本機 Web 伺服器不適用於本機?

我有一個 Linux 盒子作為無線存取點。無線客戶端連線然後瀏覽網頁。我只允許80個端口。

我想阻止某些網站,但不是透過丟棄資料包,而是將它們重新導向到由本地 Web 伺服器提供服務的 blocked.html 頁面。

我有兩個網路卡。 internet端綁定的是10.0.2.15。如果我執行 DNAT 規則以使用網際網路 NIC 將流量重定向到我的 Web 伺服器,則會傳回該頁面。如果我重定向到 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

對於本機,您需要使用 REDIRECT 而不是 DNAT。在你的例子中:

-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正在重新導向客戶端以查看自己的網頁環回位址。

堅持-A block-chain -d 206.190.36.45/32 -p tcp -j DNAT --to-destination 10.0.2.15:80

相關內容