如何将所有 HTTP 流量从 eth1 路由到 Squid 代理?Iptable 规则?

如何将所有 HTTP 流量从 eth1 路由到 Squid 代理?Iptable 规则?

我刚刚设置了一个 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

相关内容