有一个 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