Squid:如何阻止 plus.google.com,允许访问 google.com

use*_*035 1 squid domain

1.我在squid中有以下block.acl文件:

.*
Run Code Online (Sandbox Code Playgroud)

默认情况下,它不允许访问所有内容。

2.white.acl 允许访问谷歌:

google\..*
Run Code Online (Sandbox Code Playgroud)

我想plus.google.com通过将其添加到 block.acl来禁止访问:

plus\.google\.com
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

坏在好之后包括在内。

但我仍然可以访问plus.google.com. 我怎样才能阻止它,保持对主要谷歌域的访问?

Mat*_*att 6

你允许google\..*每相匹配的URLgoogle.它。允许首先匹配,因此允许访问。

您的规则还将允许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
Run Code Online (Sandbox Code Playgroud)

然后将以下内容包含在错误列表中:

(.+\.)?plus\.google\..+$
Run Code Online (Sandbox Code Playgroud)

在好名单中:

(.+\.)?google\.
Run Code Online (Sandbox Code Playgroud)

这并不完美,因为您仍将允许google.在其名称中包含其他一些域(google.blah.com)。这(.+\.)?只是任何子域的特定匹配。如果您想更具体地了解允许,这篇关于 google 域的 wiki 文章应该会有所帮助。