![如何将所有 HTTP 流量从 eth1 路由到 Squid 代理?Iptable 规则?](https://linux22.com/image/603646/%E5%A6%82%E4%BD%95%E5%B0%86%E6%89%80%E6%9C%89%20HTTP%20%E6%B5%81%E9%87%8F%E4%BB%8E%20eth1%20%E8%B7%AF%E7%94%B1%E5%88%B0%20Squid%20%E4%BB%A3%E7%90%86%EF%BC%9FIptable%20%E8%A7%84%E5%88%99%EF%BC%9F.png)
我刚刚设置了一个 squid 代理服务器。该服务器有两个接口。eth0 连接到路由器,eth1 连接到所有其他机器连接的交换机。该服务器还有一个 DHCP 服务器。我在机器上设置了 Squid3,当我将浏览器配置为使用该代理时(如果我设置了 IP 和端口,则为网络设置),一切正常。但我需要它作为透明代理,这样我就不必设置浏览器,所有请求都将通过代理。
只需设置 IPtable 规则就可以完成,对吗?有些文章谈到了更改 sysctl.conf。我尝试了很多教程中的 Iptable 规则,但都不起作用。请给我一个可以添加的有效规则。谢谢。
PS:服务器是Ubuntu 12.10
PS2:如果可以的话,请告诉我如何为 ufw 添加这些规则
答案1
您应该更改以下内容以匹配您的配置:
eth1:LAN 接口
eth0:WAN 接口
Squid 端口:8028
以下是 Squid 在透明模式下的设置。
# NAT
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT
# Redirect
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 8028 -j REDIRECT --to-port 80
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to IPaddress:8028
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8028