Squid 速率限制

Squid 速率限制

我想使用 squid 限制从单个 IP 获得的请求数量(假设我必须出于政治原因使用 squid),阻止那些在规定时间内发出过多请求的请求。

我正在考虑编写一个简短的 Perl 脚本和一个 external_acl_type,带有延迟池,但我不确定可以将哪些参数传递给辅助函数。

就像是:

external_acl_type rate_limit /usr/bin/squid-access-control dst

但我不确定这是否有效?

答案1

因此我想到了一个解决方案,我认为非常值得记录下来,如下所示:

  • Squid 记录它收到的所有请求
  • 对于 CDN 请求,squid 会遵循 X-forwarded-For 标头,将实际的客户端 IP 留在日志中
  • Fail2ban 检查日志,记录客户端每分钟发出了多少个请求等
  • 当客户端发出 X 个请求时,它将被放入蠕动IP 列表,其中重写请求以指向负载均衡器上的 Web 服务器。
  • Squid 发现此问题后,拒绝该请求访问实际的网络服务器,并允许它们访问在负载均衡器上运行的 thttpd 服务器,该服务器托管一个“您被禁止了!”的网页。

相关内容