Squid-与同一子网上的 NIC 具有透明代理?

Squid-与同一子网上的 NIC 具有透明代理?

我已经设置了一个基本的 Squid + DansGuardian 虚拟机,用于监控和阻止某些网站。目前,网络流量通过设置为网关的路由器 - 该路由器的 IP 地址由 Linux 服务器上的 DHCP 服务提供。我想根据某些客户端的 MAC 地址将其路由到不同的网关(我已经可以做到)。设置如下:

Router (Gateway) - 192.168.0.1
DHCP/DNS Server  - 192.168.0.10
Squid Server     - 192.168.0.254
Client PCs       - 192.168.0.100-199

但是,大多数教程似乎都要求 Squid 在 1 个 NIC 上接受流量,然后通过另一个子网上的另一个 NIC 将其中继到外部世界。

是否可以让 Squid 在其 IP(192.168.0.254)上接受流量并将其转发到网关(192.168.0.1)以正常离开建筑物?如果可以,有人有相关的 iptables 规则可以提供给我吗?

答案1

您不需要为此目的而拥有单独的界面。

只需添加一条规则来重定向 HTTP 流量并适当地对其余流量进行 NAT:

iptables -t nat -A PREROUTING -i eth0 -m iprange --src-range 192.168.0.100-192.168.0.199 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -o eth0 -m iprange --src-range 192.168.0.100-192.168.0.199 -j SNAT --to-source 192.168.0.254

假设所有链的默认策略都设置为接受。此外,您需要在此主机上启用 ipv4 转发,并将其默认网关设置为 192.168.0.1。

相关内容