LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1982|回复: 3

搭建freeradius+mysql 的radius服务器,所遇到的问题[求助]

[复制链接]
发表于 2005-6-3 14:04:21 | 显示全部楼层 |阅读模式
搭建freeradius+mysql 的radius服务器
前面一段都是按照前辈的帖子照做的,自己加了一些心得。
1安装Mysql
Linux  Redhat 9.0
自带的安装包:
mysql-3.23.54a-11.i386.rpm         
mysql-server-3.23.54a-11.i386.rpm
mysql-devel-3.23.54a-11.i386.rpm
外加一个:mysqlclient9-3.23.22-6.i386.rpm
rpm –ivh mysql*

不出意外,个人的机子都是提示少东东。
我机子上缺少的是:
perl DBD 、perl DBI、kakasi*、还有一个很长的*.so.*
很简单,去google一找就可以了。都不大,rpm的缺点就在这里,当你装一个rpm包,结果要下载好多关联包,force安装又怕会出问题。但是只要安装成功,比make还是要快很多。
安装完毕后,去看看是否安装成功。
[root@localhost root]# cd /usr/local/
[root@localhost local]# ls
bin  etc  games  include  lib  libexec  mysql  sbin  share  src
看见那个包就OK了。
启动:
[root@localhost local]# /etc/init.d/mysqld start
Starting MySQL:                                            [  OK  ]
或者是:
[root@localhost RPMS]# service mysqld start
Starting MySQL:                                            [  OK  ]
pstree命令后就可以看见它的进程

|-rpc.statd
|-safe_mysqld---mysqld #节选

进入mysql:#能进入才算启动成功,若失败看下面的错误提示。
[root@localhost local]# mysql -uroot –p     #也可以直接输入密码,但是可见。
Enter password: #密码不可见,本机登陆密码。我试过mysql,密码空。但权限不大。
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.23.54

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
错误提示:
ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
这是输入用户名和密码是格式的问题,注意就是,不行的话试试空密码。
还有就是这个郁闷了我一天的错误:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
以为是东西没有装上,结果是服务启动的问题,记住一定要确定pstree底下有了safe_mysqld---mysqld的进程(注意是mysqld),可以试着service mysqld restart一次。
其他的错误基本上都是启动的顺序问题。其实那个mysql.sock会自己生成。

(建议学习基本的sql语句)
http://www.linuxforum.net/books/ ... ysql中文手册)
#创建radius数据库
mysql> create database radius;
mysql> use mysql;
mysql> update user set password=password(‘你的密码’) where user=’root’;
#更改密码
#允许远程机器连接 ,本机可不做该语句,因为很有可能让自己也不能访问。
update user set host=’%’ where user=’root’;

二、安装openSSL
也是用的光盘上的RPM包 :#免得麻烦全部装上
openssl096-0.9.6-15.i386.rpm     openssl-devel-0.9.7a-2.i386.rpm  
openssl096b-0.9.6b-3.i386.rpm    openssl-perl-0.9.7a-2.i386.rpm  

三、安装freeradius
www.freeradius.org上下载freeraidus,本文版本是0.8.1 #最新到了1.2

编译和安装
tar xvfz freeradius.tar.gz
cd xvfz freeradius-0.8.1
./configure
make
make install

建立mysql的数据库raius的表
cd src/modules/rlm_sql/drivers/rlm_sql_mysql
mysql –uroot –p密码 radius < db_mysql.sql

更改freeradius的设置
cd /usr/local/etc/raddb
更改radiusd.conf,让其支持sql (如下面所说)
authorize {
preprocess
chap
mschap
suffix
sql #只需要加填这一项,其它的都有
}
accouting {
….
sql #同上

}
authenticate{
里面的unix决定了要靠用户登陆的user,password来验证。

更改sql.conf
server=”localhost”
login=”root”
password=”mysql的root的密码” #在应用时不能更改这个密码,不然mysql都进不去
radius_db=”radius”
这样可以让radius和mysql之间建立连接。

更改 client.conf支持所用的NAS具体可以看该文档,要注意的是secret是NAS和radius服务器的共享密码

数据库加入测试账号
加入组
mysql –uroot –p密码 radius
insert into radgroupreply(GroupName,Attribute,op,Value) values(‘user’,‘Auth-Type’,’:=’,’Local’);
#注意第一个括号里面的是表中的内容,要对应才可以。可以在mysql下使用以下命令查看
mysql> use radius;#使用radius数据库;
mysql> show tables;#查看radius数据库的表格;
mysql> describe radgroupreply;#查看该表格选项,即是与括号里对应的东西,一定要相同
mysql> select * from radgroupreply;#查看该表格内容;
下面一样的操作:
insert into radgroupreply (GroupName,Attribute,op,Value) values (‘user’,‘Service-Type’,’:=’,’Framed-User’);
insert into radgroupreply (GroupName,Attribute,op,Value) values (‘user’,‘Framed-IP-Address’,’:=’,’255.255.255.254’);
insert into radgroupreply (GroupName,Attribute,op,Value) values (‘user’,‘Framed-IP-Netmask’,’:=’,’255.255.255.0’);
加入测试账号
insert into radcheck (UserName,Attribute,op,Value) values (‘test’,’User-Password’,’:=’,’test’) ;
测试账号加入组
insert into usergroup (UserName,Groupname) values (‘test’,’user’);
四、启动radius服务、测试账号
启动到debug模式
radiusd –X
有时候会报找不到文件rlm_sql_mysql这个时候只要把库文件加入系统搜索的目录里
比如:
cp /usr/local/lib/* /usr/lib
测试账号
radtest test test localhost 0 testing123
#这里的localhost和testing123可以在/usr/local/etc/raddb/clients、clients.conf中修改,
#参数:user passwd radius-server[:port] nas-port-number secret [ppphint] [nasname]
看到回应包就搭建成功。

我先看见的是拒绝应答的包,但是如果把用户名和密码换成root和登录密码机可以收到应答包。我觉得在/usr/local/etc/raddb /radiusd.conf里面的 authenticate中间的unix选项决定要这样验证,如果隐去unix,则返回Access-Reject packet,但是debug模式中会有反应。

结论:

现在可以肯定的是radius+mysql在linux下连接起来,但是通过测试得到的结论是:
radtest的user和password是linux下的用户帐号,就是说先要通过linux这一个验证,在这种情况下用别的用户名登陆,即使ip和key正确的话它是返回reject包,可以看见radius -X下的debug模式也有反应。如果连key都错的话就会告诉你invalid signature!
如果你把unix在clients.conf中隐去的话,你那什么帐号都没有用,但是它会继续检验key是否正确。
如果出现不停的re-radtest则是其中一个服务没有开启成功,可以重启mysql和radiusd –X
如果其中一个linux帐号测试成功,并且在mysql radius的数据库中的radcheck表格中有帐号的话,就会返回accept包后再附加radgroupreply中对应的信息。所以你要说它没关连的话也不对,但是它只是把radcheck的帐号作一个附加的检验,并没有用里面的password做检验。我看多/usr/local/etc/raddb /sql.conf的配置文件只是连接的内容,没什么特别。
所以我觉得问题还是在/usr/local/etc/raddb /radiusd.conf里面的配置,但是我能看懂的配置都是过了,还是不成功,是不是他原本就是这样一个认证呢?建立一个linux的公共帐号,然后通过key来确认,这样的话那个radcheck表就失去了意义。矛盾!
发表于 2005-9-24 14:57:11 | 显示全部楼层

freeradius配置中的问题

我的环境:
redhat linux 9.0+ mysql 3.23.57 + freeradius 0.8.1
通过一台港湾u2024E交换机做NAS,客户端试用的港湾的802.1X客户端和Odyssey的客户端,我认为客户的username和password应在mysql里的radius数据库中的radcheck中,如果用unix本身的身份论证,会带来较大问题;
我已经禁用了unix(system)的论证,EAP-MD5论证,采用了但无论客户端的username和password是否正确,
radiusd都报file ok,但system fail.
请教radiusd.conf中的论证如何配
回复 支持 反对

使用道具 举报

发表于 2005-9-27 16:47:01 | 显示全部楼层
在允许远程机器连接设置时,出现如下错误:

Duplicate entry '%-root' for key 1

这是怎么回事呢?请指点!
回复 支持 反对

使用道具 举报

发表于 2005-9-29 10:30:18 | 显示全部楼层
为什么我执行
mysql -uroot -p(我的密码) radius
出现这样的错误呢?

Access denied for user: '@localhost' to database 'radius'
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表