使用 squid 和 iptables 设置 https 代理

使用 squid 和 iptables 设置 https 代理

有一个 Linux 作为路由器,eth0(192.168.0.60)连接到 LAN,eth1(10.100.33.239)连接到 Internet。squid 运行良好,我可以在 Web 浏览器中将 10.100.33.239:3128 或 192.168.0.60:3128 设置为代理,并访问 http 和 https 网站。

现在,我想使用 iptables 来设置透明代理,这意味着我无需在 Web 浏览器中设置代理即可访问网站。

现在,http 可以正常使用,但 https 失败了。有人能帮帮我吗?谢谢!

iptables 配置

iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 10.100.33.239
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.60:3128
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

答案1

您还需要将端口 443 上的 eth0 收入转发到 squid 监听端口 3128,以便能够对 https 请求使用透明代理。

尝试将其添加到你的 iptable 中:

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.0.60:3128
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128

相关内容