我有一个乌贼控制我的网络的所有互联网流量的代理服务器。
我需要一种方法来阻止用户在我的网络中下载大文件(例如 >50MB)。我禁止了一些著名端口(例如 torrent),但有些下载可以通过 HTTP 端口进行。显然我不能禁止端口 80!
一个简单的解决方案是限制每个 IP 的最大同时连接数(例如 3 个连接)。在 Squid 中可以使用以下配置来实现:
acl ACCOUNTSDEPT 192.168.5.0/24
acl limitusercon maxconn 3
http_access deny ACCOUNTSDEPT limitusercon
但这种解决方案对网页浏览的影响非常糟糕,因为任何智能浏览器都会通过多个连接同时获取网站的不同部分以加快网页浏览速度。但如果我们的连接数达到最大限度,浏览器将无法获取某些部分,网站将只显示部分,某些部分/图像/框架将无法显示。
那么,我们可以限制最大持久连接数吗?我认为这个策略是可行的:指定 10 秒内活动的最大连接数但每个IP同时连接数无限制
但是当使用 Squid 时,我们如何才能实现此策略?使用哪个配置?
更新:
人工制品和汤姆·牛顿使用带宽限制的方法来对抗下载者。
但是 Squid 中的带宽限制有一个缺点:它是静态的,无法动态更改。因此,无论有多少人使用互联网(可能没有人!),一个人的带宽都是有限的。
此外,这个解决方案无法阻止人们下载。他们仍然可以下载,但速度会较低。
但如果我们找到一种方法来终止持久连接(或任何活动时间超过特定时间的连接),下载大文件将变得几乎不可能(总有办法!)
答案1
这不会以您想要的方式解决问题。但可以用另一种方式,将每个主机限制到特定的带宽(不是每个请求,而是每个主机)
例子取自http://wiki.squid-cache.org/Features/DelayPools
acl only128kusers src 192.168.1.0/24
delay_pools 1
delay_class 1 3
delay_access 1 allow only128kusers
delay_access 1 deny all
delay_parameters 1 64000/64000 -1/-1 16000/64000
这指定所有客户端共享 512kbits,但是单个 IP 只能使用 128kbits。
请注意,上面的 delay_parameters 的值以字节为单位,而不是位数。
答案2
你有没有尝试过:回复主体最大大小?
从文档来看,这听起来就像你要问的:
此选项指定回复正文的最大大小。它可用于防止用户下载非常大的文件,例如 MP3 和电影。
因此,尝试将以下内容添加到 squid.conf:
reply_body_max_size 50 MB