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,其他的拨号服务器也支持,但是笔者没有作试验,感兴趣的同志可以试一试。
(处处) |