我想将免费公共客户 WiFi 网络的使用限制在一定数据量内(即不是带宽限制,这似乎很容易设置),比如说 1 GB(或 10 GB 或其他)。管理层希望为客户提供快速的 WiFi,但要防止人们全天下载大量数据,从而影响其他人的性能。
我们还不确定要选择哪种产品,因为似乎没有产品可以开箱即用。
对我来说,这似乎不是 WiFi AP 本身的功能,但可能需要外部框架。
但我确实不知道如何才能实现这一点。
这可以通过 RADIUS 计费来实现吗?但是,在 RADIUS 计费检测到超出配额后,似乎无法断开用户的连接(如果 RADIUS 能够计算流量的话……)
或者这里还有哪些其他可能的机制?
如果您需要参考特定产品,我目前正在使用 Ubiquiti AP 进行测试,但尚未决定使用哪个系统。如果此系统无法实现此功能但其他系统可以,我们可能会选择其他系统之一。只是我还没有找到这样的系统,而且很难在互联网上找到有关该主题的信息(或者我使用了错误的搜索词)。
那么,我们如何才能将 WiFi 站点的每日流量限制在一定范围内呢?(顺便说一句,用户无需进行身份验证。带宽限制可能应该基于每个 MAC 地址进行应用。至少这是我目前正在研究的方向。)
答案1
您可以使用 squid 代理服务器(转发或透明模式,完全取决于您的用户的控制场景)。
- 为每个用户/IP 地址分配一个 cuote,并将数据存储到数据库中。
- 将访问日志存储在数据库中(例如 MySQL/Mariadb),并且每隔一分钟(例如)使用 cron 任务计算每个用户的存储日志的 http_size,来自 perl、bash、Python、PHP 等。例如,不计算缓存命中率和拒绝记录。
- 将每个用户分配的cuote与计算消耗的数据以及那些超额的用户/IP地址进行比较,将其包含在指向拒绝规则的squid文件中。
- 在每个循环中重新配置 squid (重要)。
- 在特定时间(每日、每月等)之后,您必须重置每个人所消耗的数据并解除限制规则。
它将为您提供用户/IP 地址所消耗的近似数据,并可以切断网页浏览。
这个提议很广泛,你必须考虑何时需要计算消耗的数据的具体规则(跨所有 squid 规则)。