织梦CMS - 轻松建站从此开始!

罗索

使用Linux做Radius服务器实现对3comRAS1500认证计费2

落鹤生 发布于 2012-09-02 15:01 点击:次 
下一步需要向上面创建的各个数据库的表格中添加内容。 对于directionary表格的内容,icradius软件提供了一个脚本文件-script/dictimport.pl来创建,首先需要编辑该文件,修改my $dbusername = root;my $dbpassword = rootpass;为对应的数据库管理员的
TAG:

3.3.填充各个表格

下一步需要向上面创建的各个数据库的表格中添加内容。

对于directionary表格的内容,icradius软件提供了一个脚本文件-script/dictimport.pl来创建,首先需要编辑该文件,修改my $dbusername = 'root';my $dbpassword = 'rootpass';为对应的数据库管理员的用户名和密码。然后运行该脚本如下:

  [root@radiusd scripts]# ./dictimport.pl ../raddb/dictionary

对于3comRas1500来说,还需要加载usr的dictionary文件如下:

  [root@radiusd scripts]# ./dictimport.pl ../raddb/dictionary.usr

第二需要向nas表格中添加内容如下,首先进入mysql:

  [root@radiusd scripts]# mysql -u root -pszpzclljxk radius
  Reading table information for completion of table and column names
  You can turn off this feature to get a quicker startup with -A

  Welcome to the MySQL monitor. Commands end with ; or g.
  Your MySQL connection id is 30 to server version: 3.23.22-beta

  Type 'help' for help.

  mysql>

发出sql语言命令如下:

  insert into nas
  values (0,"3comras1500","ras1500","192.168.2.32","usr",24,"mlix1819",
          "public","on");

这了,第一个字段含义为标示该nas设备的id号,为数字类型;第二个字段为设备名;第三个字段为设备的简称;第四个字段为设备的ip地址;第五个设备类型,对于3com设备类型为usr;第六个为设备的端口总数;第七个字段为radius服务器和nas之间共享的密码;第八个字段为snmp协议的共同体名;最后一个为snmp是否开放。

srcipts目录下的radius.cgi是一个实现web界面管理用户及记费信息的cgi程序,但是要在使用该脚本程序以前,首先要在radcheck表格中添加如下内容:

  INSERT INTO radcheck valueS ("","admin","Password","adminuserpassword");
  INSERT INTO radcheck valueS ("","admin","Radius-Operator","Yes");

这里,admin为radius的管理员用户名,adminuserpassword为管理员密码。

然后将radius.cgi和usage.cgi拷贝到www服务器的cgi-bin目录下,再编辑这两个文件,正确的设定数据库管理员的用户名和密码。然后指定两个文件中的$cookiedomain及$radhost为空。两个文件中的$radsecret指定为nas和radius共享的密码。

3.4.配置启动radiusd

在/etc/目录下创建子目录raddb:

  [root@radiusd /etc]# mkdir /etc/raddb

在该目录下创建文件client,并设定其访问权限:

  [root@radiusd raddb]# touch clients
  [root@radiusd raddb]# chmod 664 clients

拷贝/home/radius/etc/raddb/目录下的radiusd.conf拷贝到/etc/raddb目录下:

  [root@radiusd raddb]# cp /tmp/radius/etc/raddb/radius.conf /etc/raddb/

把/usr/src/icradius-0.17/raddb/中的除了radius.conf以外的所有文件拷贝到/etc/raddb目录中。

然后拷贝mysql的库文件到系统库目录中:

  [root@radiusd /lib]# cp /usr/local/lib/mysql/* /lib

其中在/usr/icradius-0.17/redhat/目录下有一个名为rc.radiusd-redhat的文件,其是redhat环境下radiusd的启动文件,将其拷贝到/etc/rc.d/init.d目录下:

  cp /usr/src/icradius-0.17/redhat/rc.radiusd-redhat  /etc/rc.d/init.d/rc.radiusd

编辑文件/etc/raddb/radius.conf文件,将第5行中,password后面修改为mysql的管理员密码。

编辑文件/etc/rc.d/init.d/rc.radius,修改

  RADIUSD=/usr/sbin/radiusd
  WATCHER=/usr/sbin/radwatch



  RADIUSD=/usr/local/sbin/radiusd
  WATCHER=/usr/local/sbin/radwatch

拷贝/usr/src/icradius-0.17/scripts目录下的radwatch到/usr/local/sbin目录下。

拷贝/usr/src/icradius-0.17/scripts目录下的radiusd.cron.daily到/etc/cron.daily/目录下。

拷贝/usr/src/icradius-0.17/scripts目录下的radiusd.cron.monthly到/etc/cron.daily/目录下。

然后就可以启动radiusd了:/etc/rc.d/init/rc.radiusd start。

这个时候,px ax就应该看到下面这些进程:

  19090 pts/1 S 0:00 sh /usr/local/bin/safe_mysqld
  19114 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
  19116 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
  19117 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
  19164 pts/1 S 0:00 sh /usr/local/sbin/radwatch /usr/local/sbin/radiusd -
  19165 pts/1 S 0:00 /usr/local/sbin/radiusd -f -y
  19167 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
  19168 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
  19169 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
  19170 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
  19171 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data
  19174 pts/1 S 0:00 /usr/local/sbin/radiusd -f -y
  19175 pts/1 S 0:00 /usr/local/libexec/mysqld --basedir=/usr/local --data

察看系统开放的端口:nestat -l,输出中应该有以下内容:

  udp 0 0 *:radacct *:*
  udp 0 0 *:radius *:*

然后察看radius的log文件,最后应该是下面的内容:

  Sun Oct 29 18:46:17 2000: Info: Starting - reading configuration files ...
  Sun Oct 29 18:46:17 2000: Info: SQL: Attempting to connect to root@localhost:rad
  ius
  Sun Oct 29 18:46:18 2000: Info: Ready to process requests.

这就说明radius服务器已经成功的运行,这时候,应该按照3comras1500的SysManage.pdf中的shuoming正确的设置ras1500。

4.以web界面管理用户



上面的图是radius的管理界面,在这里输入radius管理员的用户名和密码,则可以进入下面所示的管理界面:



这个管理界面是浅显易懂的,这里我以最常见的情况为例子来说明如何添加用户。

首先创建一个组,该组具有所有用户都应该具有的特性,选择Manage Groups->Add New Group->为该组起一个名字:all_user->选择add group。

随后进入组属性设置界面,在这个界面里,在reply item中设置以下属性:

                         Reply Items


  Attribute               value                   Check To Remove
  Framed-IP-Address       255.255.255.254         ||
  Framed-IP-Netmask       255.255.255.0           ||
  Framed-Protocol         PPP                     ||
  Framed-Compression      Van-Jacobson-TCP-IP     ||

    
这里Framed-IP-Address为255.255.255.254表示由nas从自己的ip pool中选择一个ip地址分配给该用户。其他属性都是非常清楚的了。

然后添加用户:Manage Users->Add New user->为该用户组起一个名字:test,并设定该用户的密码 -> add user,然后就进入了用户属性设置界面,然后选择add to group  -> 选择all_user组->确定,然后就可以看到,该用户的下面这些reply item:

  Reply Items


  Attribute                       value           Check To Remove         Group
  Framed-IP-Address       255.255.255.254         --                      all_user
  Framed-IP-Netmask       255.255.255.0           --                      all_user
  Framed-Protocol         PPP                     --                      all_user
  Framed-Compression      Van-Jacobson-TCP-IP     --                      all_user

若需要设置该用户的时间限额,则选择check item下面的add check item,选择Total-Time—Limte,后面输入时间限制的数字(时间单位为秒)因此三分钟的时间限额对应的Total-Time—Limte属性值为180,选择 add check item,就会为该用户加入了时间限额为3分钟。

5.其他一些问题

所有的问题都应该可以通过阅读readme和faq.txt来解决。这里仅仅讨论两种常见的问题。

1、若运行radius是出现segmentation fault,则可能需要作以下一些工作:

在加载dictionary以前,执行下面的sql语句:

  insert into dictionary values ('','VENDOR','USR','429','','');

然后运行 dictimport来加载dictionary.usr,再执行下面的sql语句:

  update dictionary set vendor = "USR" where type = "ATTRIB_NMC";
  update dictionary set type = "ATTRIBUTE" where type = "ATTRIB_NMC";

2、若希望限制用户登录时间,则在用户的Check Items中添加使用login-time属性。时间格式为被"|"或","隔离开来的串。天可能为Mo, Tu, We, Th, Fr, Sa ,Su. 分别代表星期1-星期日,其中wk表示工作日,也就是周一到周五(Wk for Mo-Fr)。"Any" or "Al" 表示每一天。时间格式为hhmm-hhmm 的格式。例如:

  Wk2305-0855,Sa,Su2305-1655 |

允许一个用户在工作日的晚上23:05到早上8:55,周六全天,周日晚23:05到下午16:55。

3、按照上面的例子,当设置了时间限额以后,用户使用时间超过该限额则自动断线,而且不能再登录进入,但是该web界面没有提供如何清除使用时间的方法,这样当需要为用户增加时间限制,需要在以前的时间限额上添加新的时间限额,管理起来非常麻烦,这里我写了一个小小的cgi来清除用户的使用记录。

内容如下: clear_acct.cgi 和 web界面

只要输入要清除记账的用户名和mysql管理员密码就可以清除用户的记账信息。

4、此外我写了一个小小的提供用户察看自己的拨号时间使用情况的cgi程序,使用户可以输入自己的拨号密码通过验证以后,察看自己的拨号log记录

cgi程序      web页面

icrraius不仅仅支持3comras500,其他的拨号服务器也支持,但是笔者没有作试验,感兴趣的同志可以试一试。

(处处)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200404/1967.html]
本文出处:ideal 作者:处处
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容