本地透明代理

本地透明代理

我有一个不支持代理的应用程序,但我需要将其流量发送到本地代理。我想设置 IPTABLES 以透明地将流量重定向到给定的 IP 和端口 (80),以便拦截并重定向到本地代理。不幸的是,我发现的所有示例都假设透明代理设置在执行 NATTING 的 GW 中。是否可以将流量重定向到透明代理 (SQUID) 而无需 NAT?我希望有一个例子

答案1

是的,这是可能的。您可以在 Linux 机器中使用策略路由将流量重定向到 Squid 代理,如下所示这一页

总结一下步骤:

  1. 在 iptables 中设置 mangle 规则来标记要重定向的流量。
  2. 设置另一个带有指向 squid 机器的默认路由的路由表。
  3. 设置 IP 规则,以便在根据 mangle 规则中使用的值标记数据包时使用新定义的路由表。
  4. 确保 iptables 允许从客户端 IP 到 squid 机器的流量。

答案2

不,这是不可能的。如果你想重定向流量,你必须使用 nat:

 # iptables -A OUTPUT -t nat -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128

答案3

运行以下命令将所有发往(来自本地进程)端口 80 的流量重定向:

sudo iptables -t nat -A OUTPUT -p tcp \
  -m owner ! --uid-owner root --dport 80 \
  -j REDIRECT --to-port 8080

然后确保您的本地代理进程以 root 身份运行。这样代理就不会将其流量重定向到自身。如果您不想以 root 身份运行代理,请以其他用户身份运行它并编辑 iptables 命令以更改root为新用户名。

该命令假定您的代理正在监听端口 8080。

此外,这个问题与另一个问题类似,我回答了

相关内容