Linux squid 代理

Linux squid 代理

我们的办公室有 RHEL 5.0 squid 代理。

我们的 LAN 是 172.20.12.0 /24 n/w。代理 ip 是 172.20.12.4 /24。

我想通过代理共享互联网。

最重要的是:

  1. 我想授予两个 IP 172.20.12.8 和 172.20.12.9 完全访问权限以访问互联网
  2. 所有用户都应该在浏览器中设置代理地址才能上网,如果浏览器中没有代理,互联网就会被阻止。

有人能帮我看看 iptables 里该写些什么吗?

答案1

如果您想强制某些 IP 范围通过代理,基本上您需要阻止端口 80(如果您使用 HTTPS,则为 443)上的传出 TCP 流量,这些流量源自面向 Internet 的接口上的 172.20.12.0/24。这样,如果他们尝试不使用代理,连接就会失败。

你要确保在该规则之前加上三个例外:

  • 一个用于代理本身,应允许来自 172.20.12.4 的流量在 TCP 端口 80/443 上发起流量
  • 但是,对于要在该规则之前跳过代理的 IP 地址,有两个。

以下是您要添加到iptables脚本中的内容,或者您​​可以直接执行的命令。请记住三件事:

  • 您可能需要查看现有规则,以确保先前的规则不会接受您想要阻止的流量
  • 这假设您的OUTPUT策略是DROP(即未明确ACCEPT指定的流量将被DROP过滤)。如果不是,您需要在底部再添加一条规则,以丢弃来自 172.20.12.0/24 并尝试通过 TCP 80/443 传出的所有其他流量。
  • $OUT_IFACE您的互联网或面向上游的接口是

# accepts all traffic outgoing on TCP 80/443 from 172.20.12.8

/sbin/iptables -A OUTPUT --protocol TCP --source 172.20.12.8/24 --match -multi-port --destination-ports 80,443 --out-interface $OUT_IFACE --jump ACCEPT

# accepts all traffic outgoing on TCP 80/443 from 172.20.12.9

/sbin/iptables -A OUTPUT --protocol TCP --source 172.20.12.9/24 --match -multi-port --destination-ports 80,443 --out-interface $OUT_IFACE --jump ACCEPT

# accepts all traffic outgoing on TCP 80/443 NOT going to 172.20.12.4 /sbin/iptables -A OUTPUT --protocol TCP --source 0/0 --destination 172.20.12.4 --match -multi-port --destination-ports 80,443 --out-interface $OUT_IFACE --jump ACCEPT

# assuming a policy of DROP everything not obeying the above rules shoud die. You could add a LOG target here to log any incidents.

顺便说一句,我已经有一段时间没有玩过 Squid 了,但我认为它确实有能力对用户进行身份验证,并可能对此类用户应用不同的规则集(包括不针对某些用户制定规则 - 但我认为你Via:的 HTTP 流中仍然会注入一个标头,表明你正在使用代理)。

相关内容