在发布此问题之前,我在网上阅读了几份设置指南,包括 squid 文档、c-icap 文档以及 ICAP RFC (3507)。遗憾的是,SQUID 和 C-ICAP 的文档在 URL 过滤方面没有提供太多示例,只有使用 ClamAv 的简单设置。
因此,我正在尝试弄清楚如何使用 Squid 和 C-ICAP 服务器设置简单的 URL 过滤。具体来说,我开始尝试使用 SquidGuard 数据库(但不是 Squidguard 程序)作为黑名单来源。我已经设置并运行了 Squid(代理),并且 C-ICAP 也设置并运行了(响应选项请求)。但是,我不知道为什么 URL 过滤没有运行,因为我已经尽可能严格地遵循了示例。
我的 squid.conf 针对 ICAP 设置如下:
#Icap Options
icap_enable on
icap_service svcBlocker reqmod_precache icap://127.0.0.1:1344/srv_url_check bypass=off
在 c-icap.conf 文件的底部,我包含了我想要使用的 icap 服务:
# End module: ldap_module
#URL Check Services
Include srv_url_check.conf
我已经按照 c-icap 文档设置了 srv_url_check.conf 文件:
# Default:
#None set
#Example: url_check.LoadSquidGuardDB audio-video /home/dranfu/Downloads/blacklists/audio-video/
当我向 C-ICAP 发送选项请求时,它运行正常:
ICAP server:localhost, ip:127.0.0.1, port:1344
OPTIONS:
Allow 204: Yes
Preview: 1024
Keep alive: Yes
ICAP HEADERS:
ICAP/1.0 200 OK:
Methods:RESPMOD, REQMOD
Service:C-ICAP/0.2.4 server - Echo demo service
ISTag:CI0001-XXXXXXXXX
Transfer-Preview:*
Options-TTL:3600
Date:Tue, 26 Feb 2013 10:57:13 GMT
Preview:1024
Allow:204
X-Include:X-Authenticated-User, X-Authenticated-Groups
Encapsulated:null-body=0
但是,当我向黑名单上的网站发送标准网络请求时,我得到的回应相当空:
/usr/local/c-icap/bin/c-icap-client -p 8080 -req http://mp3.com.au
ICAP server:localhost, ip:127.0.0.1, port:8080
此外,我仍然可以毫无问题地代理到网站。因此,如果有人有使用 URL 过滤设置纯 C-ICAP 的 squid 的经验,那么如果有任何帮助或基本指南来指导如何使其工作,那就太好了。至少对我来说,文档太少了,无法弄清楚出了什么问题。但毫无疑问,这是我所缺少的东西。
答案1
我正在尝试做同样的事情。我成功配置了 c-icap 来阻止请求。
你的srv_url_check.conf
配置似乎不完整。我的配置如下:
Service urlcheck /usr/lib/x86_64-linux-gnu/c_icap/srv_url_check.so
url_check.LookupTableDB denyhosts url hash:/etc/c-icap/denyhosts.txt "Denied Host"
url_check.Profile denyProfile block denyhosts
url_check.ProfileAccess denyProfile all
文件denyhosts.txt是一个简单的文本文件。每行应包含要阻止的主机,例如:
mp3.com.au
xvideos.com
sex.com
最后,您应该取消注释acl all src 0.0.0.0/0.0.0.0
行c-icap.conf
。
启动您的 c-icap 服务器/usr/bin/c-icap -D -N -d 1
(根据需要调整日志级别 (-d))并使用进行测试/usr/bin/c-icap-client -s url_check -req http://sex.com -v -d 1
。
作为回复,您将收到:
ICAP HEADERS:
ICAP/1.0 200 OK
Server: C-ICAP/0.4.2
Connection: keep-alive
ISTag: CI0001-XXXXXXXXX
X-ICAP-Profile: denyProfile
X-Attribute: denyhosts
X-Attribute-Prefix: 7
X-Response-Info: BLOCKED
X-Response-Desc: URL category denyhosts is BLOCKED
Encapsulated: res-hdr=0, res-body=108
RESPMOD HEADERS:
HTTP/1.0 403 Forbidden
Server: C-ICAP
Content-Type: text/html
Connection: close
Content-Language: en
这就是我迄今为止所做的……
答案2
Squid 网站上还有其他专门为 ICAP 网络过滤而设计的解决方案(http://www.squid-cache.org/Misc/icap.html), qlproxy 为例。设置 ICAP 可能比 C-ICAP 更容易。