Linux

iptables 預路由本地主機

  • April 17, 2012

我想使用 iptables 將來自某個埠的所有傳入流量轉發到另一個埠。問題是預路由不適用於來自本地主機的流量。本主題提出了一個解決方案:

iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 443 -j REDIRECT --to-ports 8080

此解決方案適用於大多數情況。但是,當我連接到http://myserver:443時,myserver 解析為託管在本地電腦上的 IP 地址,但不是 127.0.0.1,它似乎繞過了這兩個規則。

有沒有辦法也擷取從本地機器到 eth0 ip 地址的轉發請求?

-d 127.0.0.1您可以執行 OUTPUT 規則,而不是執行OUTPUT 規則-o lo。這將匹配通過環回介面的任何流量,無論目的地是什麼。

附帶說明一下,即使您發送到“ http://myserver:443 ”,流量仍然是本地的,因此它仍然通過環回介面,即使它沒有解析為“127.0.0.1”。

引用自:https://serverfault.com/questions/380447