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(认证的密钥)

}


哈哈 成功了吧。