CentOS 5.5 成功安装 freeradius 2.1.9 mysql
安装CentOS 5.5 直接把apache、mysql、php都装上了,注意装mysql的时候,最好是把mysql-devel也装上,开始装的时候不知道是不是因为他没有装也没在freeradius连接mysql的时候没有成功。
当然,如果你安装系统的时候没有选,也可以用yum来安装就可以。
[root@localhost ~]# yum install mysql-devel.i386
下载freeradius 2.1.9
[root@localhost ~]# wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.9.tar.gz
解压
[root@localhost ~]# tar -zxvf freeradius-server-2.1.9.tar.gz
进入目录
[root@localhost ~]# cd freeradius-server-2.1.9
[root@localhost freeradius-server-2.1.9]#
[root@localhost freeradius-server-2.1.9]# ./configure
[root@localhost freeradius-server-2.1.9]# make
[root@localhost freeradius-server-2.1.9]# make install
正常没有什么错误提示,那就是ok了。
测试下。
freeradius已经有给你准备测试用的用户了。
进入下面的目录(注:freeradius的配置文件都在这个目录下)
[root@localhost freeradius-server-2.1.9]# cd /usr/local/etc/raddb/
[root@localhost raddb]#
编辑user
[root@localhost raddb]# vi users
找下面这段,把前面的注释去掉。
steve Cleartext-Password := “testing”
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-IP-Address = 172.16.3.33,
Framed-IP-Netmask = 255.255.255.0,
Framed-Routing = Broadcast-Listen,
Framed-Filter-Id = “std.ppp”,
Framed-MTU = 1500,
Framed-Compression = Van-Jacobsen-TCP-IP
这样你就有了一个测试的用户,用户名:steve 密码:testing
启动freeraidus的debug模式
[root@localhost raddb]# radiusd -X(注:大写)
如果看到
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on command file /usr/local/var/run/radiusd/radiusd.sock
Listening on proxy address * port 1814
Ready to process requests.
这就是正常启动了。
再开一个终端窗口。
[root@localhost ~]# radtest steve testing localhost 1812 testing123
Sending Access-Request of id 145 to 127.0.0.1 port 1812
User-Name = “steve”
User-Password = “testing”
NAS-IP-Address = 127.0.0.1
NAS-Port = 1812
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=145, length=71
Service-Type = Framed-User
Framed-Protocol = PPP
Framed-IP-Address = 172.16.3.33
Framed-IP-Netmask = 255.255.255.0
Framed-Routing = Broadcast-Listen
Filter-Id = “std.ppp”
Framed-MTU = 1500
Framed-Compression = Van-Jacobson-TCP-IP
如果看到以上的信息,主要是看那个是不是Access-Accept,如果是,那就是成功了。
下面开始让freeradisu使用mysql.
我对mysql没有太多的了解,下面的都是google来的。
给mysql设置密码
[root@localhost ~]# mysqladmin -u root password test(你的密码)
以下命令执行的时候如果出现
Enter password:
输入你上面设置的mysql的密码就可以了。
# mysqladmin -u root -p create radius — 创建radius 数据库
# mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/schema.sql
# mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/nas.sql
# mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/ippool.sql
# mysql -u root -p radius < /usr/local/etc/raddb/sql/mysql/wimax.sql
# mysql -u root -p
mysql> GRANT SELECT ON radius.* TO ‘radius’@'localhost’ IDENTIFIED BY ‘radpass’;
mysql> GRANT ALL on radius.radacct TO ‘radius’@'localhost’;
mysql> GRANT ALL on radius.radpostauth TO ‘radius’@'localhost’;
mysql> use radius;
google到的没有上面这个命令,结果执行下面的命令的时候,出现错误。
mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Auth-Type’,':=’,'Local’);
ERROR 1046 (3D000): No database selected
因为没有选择数据库。
先 加入一些组信息:
mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Auth-Type’,':=’,'Local’);
mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Service-Type’,'=’,'Framed-User’);
mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Framed-IP-Netmask’,'=’,’255.255.255.255′);
mysql> insert into radgroupreply (groupname,attribute,op,value) values (‘user’,'Framed-IP-Netmask’,':=’,’255.255.255.0′);
然后加入用户信息:
mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES (‘sqltest’, ‘Password’, ‘testpwd’);
然后把用户加到组里:
mysql> insert into radusergroup(username,groupname) values(‘sqltest’,'user’);
mysql> select * from radcheck where UserName=’sqltest’;
mysql>exit
下面开始编辑配置文件了。
[root@localhost raddb]# cd /usr/local/etc/raddb
编辑/usr/local/etc/raddb/sql.conf
[root@localhost raddb]# vi sql.conf
下面添入mysql的用户名和密码
# Connection info:
server = “localhost”
#port = 3306
login = “root” 用户名
password = “test” 密码
编辑/usr/local/etc/raddb/sites-enabled/default
[root@localhost raddb]# vi sites-enabled/default
在152行的files前加#注释
在159行去掉sql前的#注释
在383行去掉sql前的#注释
编辑/usr/local/etc/raddb/sites-enabled/inner-tunnel
[root@localhost raddb]# vi sites-enabled/inner-tunnel
在111行的files前加#注释
在118行去掉sql前的#注释
google到的有人说是还要改/usr/local/etc/raddb/eap.conf中的default_eap_type = md5为default_eap_type = peap
可是我改了 不成功 ,还是就用他的md5好了。
最为关键一个修改到了,如果你只是做了上面的,那么启动radius -X会出现以下错误,这个问题,我郁闷了好几天。
/usr/local/etc/raddb/sites-enabled/inner-tunnel[118]: Failed to find module “sql”.
/usr/local/etc/raddb/sites-enabled/inner-tunnel[34]: Errors parsing authorize section.
出现上面的错误,先要看一下有没有rlm_sql_mysql.so这个文件,如果没有,那你就就惨了,我不知道怎么才能让他有。
谢谢有兄弟 回复我说是可以
/usr/local/etc/freeradius-server-2.1.9/src/modules/rlm_sql/drivers/rlm_sql_mysql 下面去编译安装就行了,就有rlm_sql_mysql.so了。
可能就是我上面说的,安装mysql没有安装mysql-devel。所以编译的时候没有生成这个文件。如果有的话,那么照下面修改就可以了。
编辑/usr/local/etc/raddb/radiusd.conf
[root@localhost raddb]#vi radiusd.conf
去掉683行$INCLUDE sql.conf前的#注释
下面运行一个radius -X 试一下。
如果出现
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on command file /usr/local/var/run/radiusd/radiusd.sock
Listening on proxy address * port 1814
Ready to process requests.
那么恭喜你成功了。
下面我们来加一个需要认证的服务器进来试一下。
编辑/usr/local/etc/raddb/clients.conf
[root@localhost raddb]# vi clients.conf
加入
client 192.168.0.0/24 {
secret = testing123(认证的密钥)
}
哈哈 成功了吧。