事实上我的问题在于那些在我的网络中从互联网下载大文件的用户。
我的网络中有一个 Squid 缓存/代理服务器,位于我的网络和 Internet 之间。
我认为终止长时间处于活动状态的连接可能有助于防止用户下载大文件。所以在 SO 中询问在这篇文章中但没有得到明确的答案。看来 Squid 不可能做到这一点。:-/
现在,该帖子中还建议的一个解决方案是限制每个用户的带宽:我们只需为每个用户提供合适的带宽,用户就可以做任何事情(甚至下载)而不会打扰其他人。
但据我所知,Squid 只能为用户分配一些静态带宽。因此,每个用户都有一个特定的静态带宽,并且无法更改。我认为这既不公平也不理想,因为在空闲情况下(当很少用户请求时),我们应该为他们提供比繁忙情况下他们所占份额更多的带宽。
因此,在公平系统中,带宽应按优先级在可用用户之间分配(某些用户应比其他用户拥有更多份额)。任何用户的份额取决于所有可用用户。用户越多,份额越少。如下所示:
UserBandwidth = (OverallAllBandWidth / NumberOfCurrentUsers)
如果某一时刻我们只有一个用户,我们就应该将所有带宽分配给他。
所以:
使用 Squid 可以解决这个问题吗?
用其他软件可以实现吗?Linux 本身呢?我听说 Linux 内核有一些流量整形功能。
如果不切实际,您会建议什么其他解决方案以便:
- 阻止用户下载(特别是 HTTP 下载)
或者
- 实施公平且动态的带宽限制
谢谢!
答案1
你可以使用
acl aclname rep_mime_type mime 类型
阻止某些 mime 类型的下载(例如 iso)
和
回复主体最大大小
设置可下载的最大文件大小上限
您还可以使用 free-sa 分析日志,查看带宽流向何处
http://free-sa.sourceforge.net/
编辑:实际上,Squid 延迟池将完全满足您的需要。
阅读这篇文章:http://www.howtoforge.com/squid-delay-pools-bandwidth-management
答案2
延迟池是可行的方法,它将限制带宽使用,并且仍可下载小文件。mime 类型的一个问题是,用户以 https 连接时您无法看到请求的内容,在某些情况下甚至使用非法代理。我建议使用 calamaris 来生成您的 squid 流量的统计数据,这将向您清楚地展示哪些调整会有所帮助。 https://topnetworkguide.com/calamaris-an-external-logfile-analyzer-for-squid-proxies/