![Squid-与同一子网上的 NIC 具有透明代理?](https://linux22.com/image/1334872/Squid-%E4%B8%8E%E5%90%8C%E4%B8%80%E5%AD%90%E7%BD%91%E4%B8%8A%E7%9A%84%20NIC%20%E5%85%B7%E6%9C%89%E9%80%8F%E6%98%8E%E4%BB%A3%E7%90%86%EF%BC%9F.png)
我已经设置了一个基本的 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。