1.我在squid中有以下block.acl文件:
.*
默认情况下它禁止访问所有内容。
2.white.acl允许访问google:
google\..*
我想plus.google.com
通过将其添加到 block.acl 来禁止访问:
plus\.google\.com
3.squid.conf中文件包含的顺序是这样的:
acl good_url url_regex "/etc/squid/white.acl"
http_access allow good_url
acl bad_url url_regex "/etc/squid/block.acl"
http_access deny bad_url
坏的包含在好之后。
但我仍然可以访问plus.google.com
。我怎样才能阻止它,保持对谷歌主域的访问?
答案1
您的允许google\..*
与每个匹配网址与google.
其中。首先匹配允许,以便允许访问。
您的规则还将允许google.
URL 中任意位置的任何请求,例如http://example.com/google.asp
此外,Google 尝试通过 SSL 执行大多数请求,因此拒绝通过url_regex
在这些请求中不起作用(https 中没有 URL)。你可以做一些中间人与鱿鱼的恶作剧解密 SSL 通信以便能够通过 URL 进行过滤。或者,dstdom_regex
可以仅匹配 URL 的域部分,这也会拒绝 SSL 连接到该域。
重组您的配置以明确拒绝,然后明确允许,然后默认拒绝(使用all
而不是列表)
acl bad_domain dstdom_regex "/etc/squid/block.acl"
acl good_domain dstdom_regex "/etc/squid/allow.acl"
http_access deny bad_domain
http_access allow good_domain
http_access deny all
然后将以下内容包含在不良列表中:
(.+\.)?plus\.google\..+$
在好清单中:
(.+\.)?google\.
这并不完美,因为您仍然允许google.
名称中包含一些其他域(google.blah.com)。这(.+\.)?
只是任何子域的特定匹配。如果您想更具体地了解允许这篇关于 google 域的 wiki 文章应该有帮助。