我已经部署了 squid 3.4.8。它的主要目的是将用户重定向到内部登录页面,因为此网络不允许或启用 Internet 访问。我们不想让浏览器超时,而是想立即通知用户。我可以毫无问题地将 HTTP 重定向到登录页面 (stop.html)。squid 代理监听 8888。登录页面监听 10.5.5.100:8000
如何重定向所有出站 HTTPS 请求并将其重定向到登录页面?我的 squid access.log 显示 HTTPS 请求出现以下错误:
TCP_DENIED/302 321 连接
相关的squid.conf文件如下:
acl internaltraffic dst 10.0.0.0/8 #internal traffic only
acl CONNECT method CONNECT
http_access deny CONNECT all
http_access allow internaltraffic
http_access allow localhost
deny_info http://10.5.5.100:8000/stop.html all
deny_info 302:http://10.5.5.100:8000/stop.html CONNECT
http_access deny all
http_port 8888
答案1
这可能不会像你想象的那样起作用。你不能只是重定向 HTTPS 网站 - 你需要“中间人”来做这件事。这意味着要么在每个系统上安装根证书(并在一定程度上损害其安全性,以便你可以读取流量),要么你的用户会收到一个警告,他们不应该被教导忽略它。
看http://wiki.squid-cache.org/Features/SslBump了解具体如何操作。(但请不要这么做)。
此外,除非您将 SQUID 配置为代理(即您没有使用透明代理,这似乎是更合乎逻辑的解决方案),否则您将需要您的路由器额外拦截端口 443 上的流量并将其重定向到 squid 服务器 - 您会发现端口 80 流量也有类似的规则。
答案2
最好的方法是在安装了 squid 的本地主机上创建错误页面,然后编辑主机文件以将您想要阻止的域指向本地主机。