Ubuntu 路由器/网关上的 Squid TPROXY

Ubuntu 路由器/网关上的 Squid TPROXY

好的,我有一个 Ubuntu 盒子,用作我的 LAN 的路由器/网关;有 3 个网卡,2 个用于 WAN,1 个用于本地网络。它设置为在需要时在 WAN 和故障转移之间进行负载平衡。哦,我不得不将 squid 添加到等式中。它当前设置为将 http/s 端口 nat 重定向到 squid 端口,如下所示:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3126
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 3127

我相信它运行良好……但我不想就此止步。我想尝试 TPROXY,但似乎无法让它工作。我在 access.log 中没有收到任何流量,客户端访问网站时超时。

三角路由是不可能的,而且我认为我不应该使用桥接?因此,下面是我尝试这样做:

iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j TPROXY --on-ip 0.0.0.0 --on-port 3126 --tproxy-mark 0x1/0x1
iptables -t mangle -A PREROUTING -i eth1 -p tcp --dport 443 -j TPROXY --on-ip 0.0.0.0 --on-port 3127 --tproxy-mark 0x1/0x1

# this is supposed to mark wan traffic going back to lan?
iptables -t mangle -A PREROUTING -i eth2 -p tcp -d 192.168.1.0/24 -j MARK --set-mark 0x1/0x1
iptables -t mangle -A PREROUTING -i eth3 -p tcp -d 192.168.1.0/24 -j MARK --set-mark 0x1/0x1

ip rule add fwmark 0x1/0x1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

好吧,我不确定我的设置是否可以使用 TPROXY。如果不可能,我现在就得放弃了。但如果可以,有人知道怎么做吗?

如果您的网络拓扑使用位于路由器内部的 Squid 盒来将数据包传递给 Squid。那么您将需要明确添加一些其他配置。 比如什么配置?

谢谢。

答案1

我想我已经让它工作了——我使用了 wiki 中的转移链,但明确定义了用于互联网连接的 2 个接口 :)

对于那些感兴趣的人,这是我的最终路由/防火墙规则:点击这里

相关内容