限制每个用户的总带宽使用量

限制每个用户的总带宽使用量

我正在运行一个可供广大用户访问的 Linux 服务器,并且(由于我的上游互联网提供商制定了一些政策)我需要将用户可以传输的数据总量限制为给定量。Linux 机器是我提供商的网关。有办法做到这一点吗?

如果有帮助的话,我iptables已经在盒子上设置了可用的设置,并且我有一些配置 HTB 之类的东西的经验。我过去所做的设置的问题在于它们将用户限制在特定的比特率(例如 20kbps),而不是在较长的时间段内限制总传输量(例如 100MB/天)。

答案1

@WerkkreW 让我走上了正确的道路。我将采用的解决方案是使用 squid 及其 delay_pools 功能。

基本概念是在 中设置每个主机(第 3 类)延迟池squid.conf,然后将每个延迟池设置为我希望允许每个用户每天使用的最大带宽量。然后,将“填充”率设置为最大带宽量除以一天的时间,这样每个延迟池将在一天内完全填满。

最后,iptables我将使用透明的方式将来自我的 LAN 的端口 80 上的传入请求重定向到 squid,而不是直接对它们进行 DNATing,以便内部网络上的用户受到带宽限制。

再次感谢 WerkkreW 为我指明了正确的方向。

答案2

我相信你可以用 iptables 做你想做的事,更恰当地说,乌贼(延迟缓存?),但配置和管理起来可能比较复杂。不过,使用 squid 来限制每个用户的传输绝对是可行的。不过,我个人从未这样做过,所以我无法就设置的具体细节提供任何建议。

您可能还会考虑一些其他工具,但它们中的大多数都会进行很多其他过滤,并且功能非常齐全,如果您想要做的只是限制传输,您可能会认为它们有点臃肿。

相关内容