环境
RHEL AS4
准备安装包
MySQL在http://dev.mysql.com/ 下载
FreeRadius 在http://www.freeradius.org/ 下载
安装
如果是源文件包先解开、进行配置,然后编译再安装
步骤:
tar –xzvf xxxx.tar.gz
进入到解开后的源代码所在路径后:
./configure
make
make install
如果是rpm包就比较方便了,直接输入:
rpm –ivh xxxx.rpm //后面为包名
启动
启动MySQL:service mysql start
启动FreeRadius:radiusd //后面跟参数-x表示以debug模式启动
故障排除:
安装时可能会提示缺少一些文件或类库(如openssl097,libstdc++-33-3.2.3,libmysql14-4.1.12,libfreeradius1-1.0.4),可以从网上搜索下载。
如果安装所需要的包后还是不行,可以找到文件后建立一个符号连接到/usr/lib目录下,也可以直接copy过去。
如:安装提示找不到libssl.so.0.9.7可以如下处理,
locate libssl.so.0.9.7 //查找,不能查找的话请先运行updatedb命令
//系统显示查找结果
ln –s /path1/xxxx /usr/lib/xxxx
//或者cp /path1/xxxx /usr/lib/xxxx
(网上查到还有种方式是将类库所在路径加入到系统搜索目录中,打开/etc/ld.so.conf,新建一行把路径加入,再运行ldconfig,不过发现往往无效。)
配置FreeRadius
安装后配置文件一般放置在/usr/local/etc/raddb目录中。
修改clients.conf文件:
client 127.0.0.1 { //IP
secret = test //公钥
shortname = localhost
nastype = other
}
修改users.conf文件:
加入用户
ljy User-Password := "ljy"
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 192.168.20.128,
Framed-IP-Netmask = 255.255.255.0,
重新启动radiusd,输入测试命令
radtest ljy ljy localhost 0 test
如果提示包含Access-Accept字样表示成功:
Sending Access-Request of id 172 to 127.0.0.1 port 1812
User-Name = "ljy"
User-Password = "ljy"
NAS-IP-Address = 127.0.0.1
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=172, length=50
Service-Type = Framed-User
Framed-Protocol = PPP
Framed-IP-Address = 192.168.20.128
Framed-IP-Netmask = 255.255.255.0
配置radius从MySQL存取数据
先配置MySQL
创建数据库radius
导入表结构
mysql -u root -p radius < mysql.sql //安装后将有数据结构文件//usr/local/share/doc/freeradius/examples/mysql.sql
插入数据
//组信息
insert into radgroupreply (groupname,attribute,op,value) values ('user','Auth-Type',':=','Local');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Service-Type','=','Framed-User');
insert into radgroupreply (groupname,attribute,op,value) values ('user','Framed-IP-Netmask','=','255.255.255.255');
insert into radgroupcheck (groupname, attribute, op, value) values ("user", "Auth-Type", ":=", "Local");
//用户信息
insert into radcheck (username,attribute,op,value) values ('pal','User-Password','==', 'pal');
//把用户加到组里
insert into usergroup(username,groupname) values('pal','user');
配置FreeRadius使其支持MySQL认证
修改radius.conf文件
authorize {
preprocess
chap
mschap
suffix
sql
...
}
accounting {
...
sql
...
}
修改sql.conf文件
sql {
driver = "rlm_sql_mysql"
server = "localhost"
login = "root"
password = "mysql的密码"
radius_db = "radius"
}
重新启动radiusd,再输入测试命令
radtest pal pal localhost 0 test
如果提示包含Access-Accept字样表示成功。
至此基础配置完毕,radius可以正常工作了。
如果有什么故障可以查看日志文件,一般在/usr/local/var/log/目录下。
允许外部NAS接入
修改clients.conf,将其IP加入,并按照业务需求修改各项属性。
自定义属性
进入到/usr/local/share/freeradius
创建一个字典文件,包含个性化属性,如dictionary.pal:
VENDOR PAL 88
BEGIN-VENDOR PAL
ATTRIBUTE PAL-Menu 200 string
END-VENDOR PAL
将其加入到dictionary文件中:
$INCLUDE dictionary.pal
重启radiusd。
在radreply或radgroupreply表中就可以使用该属性了,对应Attribute字段,直接填写属性名称。由于返回的一个数字,需要radius客户端自行解析。
hints文件
提示服务器对按照特定方式的建立的用户名提供指定服务
禁止登录
修改users文件
temp Auth-Type := Reject
Reply-Message = "Account disabled for nonpayment."
挂起用户组
修改users文件
DEFAULT Group == "suspended", Auth-Type := Reject
Reply-Message = "Account suspended for late payment."
并发登录限制
Test Auth-Type := System, Simultaneous-Use := 1
Service-Type = Framed User