在Steel-Belted-Radius中将routeros中的拨号用户踢下线的方法
查阅了无数次的资料,参照了太美老大的文章,终于在windows下、在Steel-Belted-Radius中实现了将routeros中的拨号用户踢下线。这段时间在给别人做国外VPN代理服务器管理(通过radius认证实现管理多台服务器),VPN服务器用的是routeros,radius服务器用的是Steel-Belted-Radius,通过sql server 2000和asp,实现web管理。但是这里有一个令大家都头痛的难题,就是:怎样强制到期用户下线。看了太美老大的文章后,终于看到了希望。想通过抓包,然后编程实现。不过太美老大的文章讲的是linux下的实现方法,我不想费劲安装一个linux,所以在windows下安装了freeradius for windows,网上找不到配置资料,今天早上瞎捣鼓了半天,终于可以实现认证了,用了太美的方法实现强制断线,也抓到了udp数据包,终于可以编程实现了。不过,我后来发现了更省事的办法,就是把radclient.exe和cygwin1.dll这2个文件拷到装有Steel-Belted-Radius的机器中,同时把freeradius中的etc和share文件夹也拷过去,注意,这些文件和文件夹一定要按照原来的目录结构放好,然后就可以以这样的命令实现强制断线了:
echo User-Name=ppp7| radclient.exe -d ../etc/raddb -x 192.168.0.1:1700 disconnect vpn
命令含义,太美的文章中都有,这里就是多加了一个参数:-d ../etc/raddb ,是用来说明各种radius设备的协议标准的文件所在的目录的。另外,命令中只需指定需要强制断线的用户名就行了,其他参数可以省略。
到这里,基本功能已经实现,接下来就可以使用简单的编程方法,自动定时到数据库里查询,发现到期用户,用shell(以VB为例)的方法向VPN服务器发出命令……
太美的文章地址:http://bbs.routerclub.com/viewthread.php?tid=27203&page=1#pid185529
已把freeradius for windows中的radclient.exe以及相关文件打包上传。radclient.exe在bin目录中。
[ 本帖最后由 bfrader 于 2008-4-21 14:34 编辑 ] 现在,实现自动强制断线功能的VB程序已完成。 VB程序很简单,只需一个定时器控件,加上以下代码,就可以在每天0时检查到期用户,并踢下线。
Private Sub Timer1_Timer()
If Val(Time) = 0 Then
Dim Conn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Conn.Open "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=radius;User ID=sa;password=sa"
Rst.Open "SELECT username FROM username WHERE online='yes' and DATEDIFF(" + Chr(34) + "d" + Chr(34) + ",disable_time,GETDATE())>=0", Conn, adOpenStatic, adLockOptimistic
While Not Rst.EOF
Dim rec As String
Dim ip As String
rec = Rst.Fields("username")
ip=Rst.Fields("nas_ip")
Shell "cmd /c echo User-Name=" + rec + " | radclient.exe -d ../etc/raddb -x "+ip+":1700 disconnect vpn", vbHide
Rst.MoveNext
Wend
End If
End Sub
以上代码中所用的sql server数据库名是radius,管理员和密码都是sa,用于记录拨号用户资料和拨号状态的表是username,里面最少有这几个字段:username(用户名)、online(是否在线)、disable_time(到期时间)
[ 本帖最后由 bfrader 于 2008-4-23 09:26 编辑 ] 能抓老鼠的猫就是好猫,不错,另辟蹊径! 如果Steel-Belted-Radius和sql server 2000配合使用,还有更简单的方法,不用radclient.exe,不用编程,就可以让用户到期后自动下线。
[ 本帖最后由 bfrader 于 2008-4-26 08:44 编辑 ] 楼上的用什么方法呀 look@# lihai a 不错。我己在我的系统用上该方法
页:
[1]