我正在尝试使用 squid 的 Splash 页面功能,但我尝试让它只在特定子网上使用。我无法找到使用两个 ACL 来实现这一点的方法。
我有以下内容squid3.conf文件
external_acl_type sessions ttl=60 concurrency=100 %SRC /usr/lib/squid3/squid_session -t 7200 -b /tmp/squidcache/sessions.db
acl guests external sessions src 192.168.200.0/24
acl trusted 192.168.1.0/24
deny_info http://192.168.200.5/splash.html guests
http_access deny !guests
这确实会显示启动页面,但是针对两个网络。
有人遇到过这种情况吗?
干杯,
吉姆
答案1
您无法通过acl guests
这种方式添加额外的条件 — 每个 squid ACL 只能有一个类型(您可以acl
为同一个 ACL 使用多行实现“或”逻辑,但不能使用“和”)。acl NAME external TYPE ...
行上的额外参数实际上附加到外部帮助程序的命令行。
另外,下一行有一个语法错误(src
缺少关键字),但是trusted
无论如何,acl 未在您的配置片段中使用。
编写这些规则的正确方法是为 IP 范围添加单独的 ACL,并在行中使用多个 ACL http_access
:
external_acl_type sessions ttl=60 concurrency=100 %SRC /usr/lib/squid3/squid_session -t 7200 -b /tmp/squidcache/sessions.db
acl guests_ip src 192.168.200.0/24
# can add more "acl guests_ip src ..." here
acl guests_sessions external sessions
deny_info http://192.168.200.5/splash.html guests_sessions
http_access deny guests_ip !guests_sessions