iptables - 将发往端口 80 的本地和瞬时出站流量重定向至端口 8080

iptables - 将发往端口 80 的本地和瞬时出站流量重定向至端口 8080

由于我对 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

相关内容