![限制每个用户的总带宽使用量](https://linux22.com/image/482389/%E9%99%90%E5%88%B6%E6%AF%8F%E4%B8%AA%E7%94%A8%E6%88%B7%E7%9A%84%E6%80%BB%E5%B8%A6%E5%AE%BD%E4%BD%BF%E7%94%A8%E9%87%8F.png)
我正在运行一个可供广大用户访问的 Linux 服务器,并且(由于我的上游互联网提供商制定了一些政策)我需要将用户可以传输的数据总量限制为给定量。Linux 机器是我提供商的网关。有办法做到这一点吗?
如果有帮助的话,我iptables
已经在盒子上设置了可用的设置,并且我有一些配置 HTB 之类的东西的经验。我过去所做的设置的问题在于它们将用户限制在特定的比特率(例如 20kbps),而不是在较长的时间段内限制总传输量(例如 100MB/天)。
答案1
@WerkkreW 让我走上了正确的道路。我将采用的解决方案是使用 squid 及其 delay_pools 功能。
基本概念是在 中设置每个主机(第 3 类)延迟池squid.conf
,然后将每个延迟池设置为我希望允许每个用户每天使用的最大带宽量。然后,将“填充”率设置为最大带宽量除以一天的时间,这样每个延迟池将在一天内完全填满。
最后,iptables
我将使用透明的方式将来自我的 LAN 的端口 80 上的传入请求重定向到 squid,而不是直接对它们进行 DNATing,以便内部网络上的用户受到带宽限制。
再次感谢 WerkkreW 为我指明了正确的方向。