16boke - 一路博客

Centos安装freeradius

一、通过yum安装

#yum install freeradius freeradius-utils freeradius-mysql,当然也可以从freeradius的ftp服务器上下载

二、测试freeradius是否已安装成功

 测试需要用户,因此先将/etc/raddb/users文件打开,创建新的用户名,如果不会创建(freeradius早已考虑到了这一点),就将steve前的#去掉,变成:

steve Cleartext-Password := "testing"

这样就有了用户steve及密码testing,可以进行测试了。

先启用radius:

#radiusd -X

如果程序正常运行,最后三行如下

Listening on authentication address * port 1812

Listening on accounting address * port 1813

Listening on command file /var/run/radiusd/radiusd.sock

Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel

Listening on proxy address * port 1814

Ready to process requests.

 

# radtest steve testing localhost 1812 testing123

最后的testing123是在/etc/raddb/clients.conf中定义的localhost的密码。

如果结果中出现Access-Accept,说明安装成功。

测试完成后将steve用户再恢复原样,即加上#注释。


三、freeradius与mysql关连

启动mysql如果启动不了(问题:/etc/init.d下无mysqld服务)

解决方案:#cp /usr/share/mysql/my-huge.cnf /etc/my.cnf

启动服务:service mysqld start  

(a)创建radius数据库

    #mysql -u root -p  //默认没有密码

    mysql>create database radius;

    mysql>exit;

(b)将radius中的sql表导入到mysql的radius数据库中(可以将sql文件全部导入) 

    # mysql -u root -p radius < /etc/raddb/sql/mysql/schema.sql 

  # mysql -u root -p radius < /etc/raddb/sql/mysql/nas.sql 

  # mysql -u root -p radius < /etc/raddb/sql/mysql/ippool.sql 

  # mysql -u root -p radius < /etc/raddb/sql/mysql/wimax.sql

  注意:通过yum安装的freeradius由于版本太低,在/etc/raddb中没有sql目录,从freeradius官网下载最新版,将sql目录拷贝到/etc/raddb中的。

(c)授权, 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';

(d) use radius ,加入一些组信息:

   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');

(e)加入用户信息:

     mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('shed', 'Password', 'shed');

 mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('test', 'Password', 'test123');

(f)然后把用户加到组里:

     mysql> insert into radusergroup(username,groupname) values('test','user');

     mysql> insert into radusergroup(username,groupname) values('shed','user');

     使用命令:#mysql> select * from radcheck 查看已创建的用户名及密码

(g)修改mysql数据库的root用户密码为azalea

    #mysqladmin -u root -p password root

    Enter password:     //此处是旧密码,默认为空

(5)修改/etc/raddb中的相关文件

vi开启行号 :set nu, 关闭行号 :set nonu

(a)编辑 sites-enabled/default

vi /etc/raddb/sites-enabled/default 

将authorize块中170行的files以#号注释掉,将177行的sql的注释去掉(#号去掉)。

将accounting块中406行的sql的注释去掉(#号去掉)

(b)编辑/etc/raddb/sites-enabled/inner-tunnel  

vi /etc/raddb/sites-enabled/inner-tunnel 

在authorize块中124行的files以#号注释掉,将131行的sql的注释去掉(#号去掉)

(c)编辑/etc/raddb/radiusd.conf 

vi /etc/raddb/radiusd.conf 

将第700行到$INCLUDE sql.conf 前到注释去掉(#号去掉)

(d)编辑/etc/raddb/client.conf

client可以配置成网段也可以配置成某个ip

网段1.1.1.0/24,固定ip就是1.1.1.1

 

(6)测试

(1)service mysqld status 检查数据库是否已经启动,如果没有启动通过service mysqld start 启动

(2)运行 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 

  Ready to process requests. 

说明启动成功,开另一个命令窗口,输入radtest test test123 radius 1812 testing123,如果出现rad_recv: Access-Accept packet那说明认证成功了,服务器搭建好了,剩下就是设置portal服务器了。

test testing123 是mysql里面里创建到用户,radius是主机名,1812是端口,testing123是验证密钥。

如果出现

Failed binding to authentication address *port 1812: Address already in use 

  /usr/local/etc/raddb/radius.conf[240]: Error binding to port for 0.0.0.0 port 1812 

  这里的问题就是所需的端口被占用,所以报错 

  先 lsof –i:1812 发现端口居然是被radius本身占用,有个进程号PID 

  然后kill 【PID】,杀掉该进程 

然后在输入radiusd -X 能正常启动,然后再执行测试。

如果radtest 的时候出现

radclient:: Failed to find IP address for hostname(主机名)

radclient: Nothing to send.

可能你用到是centos,甚至可能是用的vm的虚机,主要是主机名不对,换一个主机名就号。

修改/etc/hosts文件中到127.0.0.1主机名(修改)localhost,把中间取一个名就好。

修改/etc/sysconfig/network 修改HOSTNAME的名字,修改成与hosts文件中修改到一样。

重启机器,启动mysql,启动radiusd -X,然后开启另一个命令窗口,执行radtest test test123 你到主机名 1812 testing123 测试,应该就ok了。