我们希望限制用户每日通信量,而不是本地networking带宽。 我们的用户在不同的平台上(Windows,Android,IOS),因此不可能通过例如Active Directory强制任何策略,如果可能的话,它会限制整个带宽。 剩下的唯一方法就是在networking边缘对IP进行限制。 这可以使用Mikrotik或其他防火墙。 但问题是,用户可以在达到限制时更改其IP,并且可以继续使用互联网带宽。 所以这个想法是确保用户只有在他们的MAC地址和通过我们的DHCP服务器分配的IP匹配时才能通过。 这在cisco交换机中应该是可能的,并且可以在核心交换机上完成。 我想我已经读了一些关于思科交换机和DHCP服务器之间的连接。
问题是如何实现这一点,还是有其他解决scheme可能更容易,更高效?
我们使用AP,Cisco 2960交换机和Cisco 4500作为核心交换机。 我们的DHCP是FreeBSD,但是如果需要的话,我们愿意改变。 我们的AP的validation方法是802.1x。
编辑:
我们尝试了一个使用RADIUS服务器的解决scheme,它使我们有可能知道每个用户使用了多lessstream量(通过端口1812/1813),但问题是限制用户的唯一方法是不允许他连接限制已经达到。 这意味着,直到用户不重新连接,他可以下载没有任何限制。
我们也认为代理服务器是一个解决scheme,但是我们遇到了两个问题:
你最好在第七层与第二层或第三层做这个。
设备可以改变其MAC和IP地址。 (用户改变MAC地址很难,但仍有可能)如果你有人在改变IP地址以避开限制,那么MAC地址也只是一个时间问题。
有几个解决办法,我可以想到我的头顶。
强制门户要求用户使用每个用户的凭证进行身份validation(例如,将RADIUS返回到Active Directory)可以为您提供每个用户的问责制。 那里有各种各样的产品,无论是商业和自由/开源,可以做到这一点。
强制用户使用每个用户的凭证连接到VPN,以便在无线子网之外访问。
这两种方法都不需要繁琐的IP到MAC交叉引用,并且可以在添加新用户/设备时轻松扩展。
您可以使用ebtables通过错误的IP地址来过滤MAC地址的数据包,如:
ebtables -N USER ebtables -A FORWARD -p ip -i eth0 -j USER ebtables -P USER DROP ebtables -A USER -p ip --ip-src 192.168.0.52 -s 00:52:2c:be:ac:2a -j ACCEPT ebtables -A USER -p ip --ip-src 192.168.0.23 -s 01:51:2d:be:pc:1b -j ACCEPT
在这里,我们允许MAC 00:52:2c:be:ac:2a用户使用IP 192.168.0.52 ,其他用户也一样。 但据我所知,iOS(和其他我猜)手机会重置每个连接上的MAC地址 ,出于安全原因,无法跟踪从一个Wi-Fi热点到另一个Wi-Fi热点的设备迁移。 所以依靠MAC地址不是100%正确的。
解决这个问题的另一种方法是引入L2TP,只允许Internetstream量。 你会给每个用户一个用户/密码对,并分配静态IP。 然后,您将能够通过IP监视stream量。