gpt4 book ai didi

routing - 使用 Tor 代理作为网络网关的正确 iptables 规则是什么?

转载 作者:行者123 更新时间:2023-12-03 22:10:31 27 4
gpt4 key购买 nike

给定 一台主机(路由器)使用以下 netfilter 规则将传入的 TCP 数据包重定向到它的 Tor 代理服务:

-A PREROUTING -p tcp --syn -j REDIRECT --to-ports 9040

还给出了 第二个主机(客户端)配置为使用 Tor 路由器作为网关:
sudo ip route add 1.2.3.4 via ${TOR_ROUTER_IP}

现在,当我建立到 1.2.3.4 的 TCP 连接 (HTTP) 时,它在最终超时之前会在“TCP_NODELAY 设置”处挂起一段时间:
curl -v https://1.2.3.4
* Trying 1.2.3.4...
* TCP_NODELAY set

当我运行这个命令时,我可以看到相应的计数器 在路由器上 使用以下命令不断增加:
iptables -t nat -L -v -n

这证实了开头提到的规则是实际应用的。然而,显然 没有响应返回给客户端 ( curl 命令)。

因此,我怀疑 iptables 规则中存在错误。但该错误是什么以及如何解决?

(旁注:我怀疑它是否相关,但路由器实际上是一个 docker 容器。)

更新:这是 netstat -tulpen 的输出在路由器上:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9040 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:9050 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.11:36045 0.0.0.0:* LISTEN -
udp 0 0 127.0.0.11:45140 0.0.0.0:* -
udp 0 0 0.0.0.0:5353 0.0.0.0:* -

最佳答案

我需要更多信息来确认您的问题的解决方案。

你在 curl 收集的 1.2.3.4 上运行什么?如果您不托管任何东西,那么您将不会得到任何返回,这应该是显而易见的。

您是否尝试为您期望的数据包禁用 TCP_NODELAY?看起来您的连接正在等待发送数据包,由于没有数据包,它最终会超时。

我认为您的 IP TABLE 规则根本没有错,或者至少您呈现它们的方式似乎是有道理的。

因此,由于我没有更多信息:

  • 我会通过 ping 你认为在你的 docker 上打开的端口来进行故障排除,很可能它们没有或不对外开放,或者它们映射到与你想象的不同的端口,或者 selinux 或类似的东西是块连接。您可能需要在 Docker 和外部明确允许您需要的端口。
  • 我也会尝试提升权限,这意味着以 sudo 的形式运行,尤其是 docker run 命令。使用 docker exec 调查实例并确保它正确打开并运行您期望的服务。
  • 关于routing - 使用 Tor 代理作为网络网关的正确 iptables 规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48602056/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com