freeradius-server能否读取数据库某个值,告诉客户端
刚学习freeradius,遇到一个问题,一直弄不明白。
问题是这样的:
假如我要在服务端读取数据库,判断某个特定的用户已经超过使用时间(或者是没钱了),这个时候告诉客户端(NAS),客户端控制断开连接,
不让用户接入网络。
不知道这样的功能需求能否做到,就是服务端主动发消息告诉NAS。看来看去的,好像都是NAX请求,然后服务器回复,没有服务器主动发消息给NAS的。
希望得到帮助,非常感谢!我的邮箱iamhycljc@163.com,希望可以一起交流!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
不对吧。计费结束请求肯定是用户断开后发的。但是计费的报文是很频繁的发送的。
你假设个情况:如果用户因某种原因掉线了。而NAS还不知道。或者是NAS和AAA的通讯中断了,哪么AAA岂不是要永久的计费了呢?
我仔细看了一下协议,不是你说的那样的,是NAS发送计费请求,服务器确定以后,得NAS自己计时的,等用户断开连接后,才向服务器发送计费结束消息,服务器只要知道开始与结束时间,根据计费唯一的标识,就可以知道时长,这样进行计费的,而不是你说的,几乎是每时每刻进行计费。那样,服务器哪里能承受得了。
NAS发送计费报文是很频繁的,大约每秒都发送。
要在服务端读取数据库,判断某个特定的用户已经超过使用时间(或者是没钱了),这个时候告诉客户端(NAS),客户端控制断开连接
你的这个需求可以满足啊。
你想如果你NAS不发送计费报文,我如何知道这个用户是否在线呢??? 我不知道他在线也就无法判断他的在线时间,也就无法计费了。
我见过的计费都是这么控制的。只是我不太确定那个计费拒绝报文是公共的还是私有的。我感觉应该是公共的标准。
那也是在请求计费的时候才能做到,可是现在是需要在接入以后,或者是通话中进行控制的,是实时的,而不是只在计费开始的时候判断。
举个例子,当你打电话的时候,电话接通以后,发现你的话费已经用完了,这个时候,你在服务器得主动挂断电话,如果你在连接的时候判断,那就不符合了。
记得AAA,在收到计费报文的时候可以发送一个拒绝的报文给NAS的,这样NAS就把那个用户踢下去了。
有点忘记了,你再读一下AAA的协议规范。
真的是没人研究这个东西的,郁闷!!!!
对了,在论坛里找了一下,有人提出类似的问题,他想要实现的是通过限制一个日期,超过日期就过期了,在认证用户名密码的时候处理,超过日期后,就认证失败了。
可是我想要的是实时的,就是在使用过程中已经超出费用了,想马上终止上网或者是呼叫等。