![如何在同时托管 Squid 代理的网关上设置 iptables?](https://linux22.com/image/659367/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%90%8C%E6%97%B6%E6%89%98%E7%AE%A1%20Squid%20%E4%BB%A3%E7%90%86%E7%9A%84%E7%BD%91%E5%85%B3%E4%B8%8A%E8%AE%BE%E7%BD%AE%20iptables%EF%BC%9F.png)
我有一台计算机,其用途是:
a) 无线网络 (WLAN0) 和连接到互联网的 LAN (ETH0) 之间的网关
b) 仅执行 Web 过滤(无缓存)的 Squid3 代理服务器
我已经像这样设置了 iptables:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
当我配置 WLAN 上的客户端通过代理访问互联网时,它可以按照 Squid 中指定的规则正常工作。
但是,未配置为使用代理的 WLAN 客户端仍然可以访问互联网。现在我想通过在 iptables 中设置正确的规则来拒绝不是来自代理的 WLAN 流量,从而强制这些 WLAN 客户端使用代理。
我尝试了以下方法:
iptables -A INPUT -i wlan0 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i wlan0 -j DROP
但它无法阻止这些不使用代理的 WLAN 客户端。
由于网关和代理位于同一台计算机上,我不知道应该使用哪个 iptables 链来阻止这些客户端。我应该使用 INPUT(如何使用?)还是应该以其他方式执行?
答案1
我认为你应该把规则放在正向下巴而不是输入下巴,因为请求目的地不是服务器而是另一个服务器ip