
由於我對 iptables 的參與很少,所以我遇到了一個問題。
我有一個 TOR 出口中繼設置,我正在嘗試重定向所有本地和 TOR 流量,以便它在連接埠 8080 上退出我的盒子。
目前我將其設定為:
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
但是,當我充當路由器時,這似乎只會重定向瞬時流量,而不是來自盒子的流量。
答案1
由於我了解不多,所以不對 TOR 發表評論。
但對於 iptables 目標來說,就是這樣。PREROUTING
涉及到路由。當從當地的系統,你沒有路由。您只需使用OUTPUT
代替/附加PREROUTING
.
範圍REDIRECT
:
REDIRECT
此目標僅在 nat 表、PREROUTING 和 OUTPUT 鏈以及僅從這些鏈呼叫的使用者定義鏈中有效。它透過將目標 IP 變更為傳入介面的主位址(本機產生的封包對應到本機位址,對於 IPv4 為 127.0.0.1,對於 IPv6 為 ::1),將封包重新導向至電腦本身。
所以:
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
編輯:
為了避免特定使用者或群組被重定向(例如,避免連接埠 8080 上的服務出現無限循環),您可以這樣做(例如,使用 effective group 運行的服務tor
)而不是上面的操作:
iptables -t nat -N OUTPUT intercept
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j intercept
iptables -t nat -A intercept -m owner --gid-owner tor -j RETURN
iptables -t nat -A intercept -j REDIRECT --to-ports 8080