由于我对 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 上的服务出现无限循环),您可以这样做(以有效组运行的服务为例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