centos6.5下搭建LAMP+freeradius+mysql+daloradius服务,实现和路由器radius服务的连接

 搭建环境:

操作系统:Linux 之 Centos6.5 , Win 7 / 10 

系统运行环境:Oracle VM VirtualBox for Windows

其他设备:路由器(相当于 client 端),笔记本(无线网卡)等。

此文章中 Linux 系统的 ip 地址为192.168.2.101,无线路由器是TP-LINK的,ip 地址为192.168.2.1

一、LAMP环境安装:

  1. yum -y install httpd httpd-devel mysql mysql-server mysql-devel  
  2. yum -y install php php-devel php-mysql php-common php-gd php-mbstring php-mcrypt php-xml  
  3. /etc/init.d/httpd start         #启动http服务
  4. /etc/init.d/mysqld start     #启动mysql服务
  5. chkconfig httpd on           #把http服务加入开机启动
  6. chkconfig mysqld on       #把mysql服务加入开机启动
  7. mysqladmin -u root password 'newpassword'       #设置mysql数据库的密码

二、然后可以通过yum命令快速安装freeradius,就是版本略低一点,命令为:

yum install -y freeradius freeradius-mysql freeradius-utils  

三、修改启用测试账户:

找到 radius 的用户信息配置参数文件(注:将来换mysql数据库存用户账户的话这个文件就不用了,测试完后修改回原来的样子),yum自动安装的在/etc/raddb路径里面 

vi /etc/raddb/users

然后找到下面这段文字(从76行开始)

  1. #steve  Cleartext-Password := "testing"  
  2. #       Service-Type = Framed-User,  
  3. #       Framed-Protocol = PPP,  
  4. #       Framed-IP-Address = 172.16.3.33,  
  5. #       Framed-IP-Netmask = 255.255.255.0,  
  6. #       Framed-Routing = Broadcast-Listen,  
  7. #       Framed-Filter-Id = "std.ppp",  
  8. #       Framed-MTU = 1500,  
  9. #       Framed-Compression = Van-Jacobsen-TCP-IP

然后把这段文字前面的 # 注释全部去掉后保存文件

现在可以通过radiusd -X来做首次启动,注意首次启动必须是root账户才行,还有注意那个X是大写的。

如果看到下面的提示应该就是启动成功了:

  1. Listening on authentication address * port 1812  
  2. Listening on accounting address * port 1813  
  3. Listening on command file /var/run/radiusd/radiusd.sock  
  4. Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel  
  5. Listening on proxy address * port 1814  
  6. Ready to process requests.

然后另外打开一个终端输入 radtest steve testing localhost 1812 testing123 进行测试,当出现 rad_recv: Access-Accept  字样说明freeradius已经安装成功。

测试无问题以后记得再次vi /etc/raddb/users,把这个测试账户刚打开的相关的配置再全部注释掉,保存退出,然后用如下命令关闭 radiusd 的调试进程

killall -9 radiusd          #杀死 radius 服务进程

chkconfig  radiusd on

service radiusd start

现在可以通过新打开一个终端窗口,然后执行cat /var/log/radius/radius.log 去查看启动日志看有没有错误。

四、以下开始配置freeradius了:

  1. cp /etc/raddb/clients.conf /etc/raddb/clients.conf.bak  
  2. grep -v \# /etc/raddb/clients.conf.bak >/etc/raddb/clients.conf  
  3. vi /etc/raddb/clients.conf

内容配置为:

  1. client 127.0.0.1 {  
  2.     ipaddr = 127.0.0.1  
  3.     secret = testing123  
  4.     shortname=localhost  
  5. }

需要注意,上面配置的127.0.0.1主要用于测试,将来真正的客户端要按照下面的信息进行补充:

将来你真正的 raidus 客户端,如路由器、routeros等需要在这里配置ip信息,例如:

  1. client x.x.x.x{                 #这里的x.x.x.x就是你的路由器的IP地址,我操作时设置的是192.168.2.1 
  2.    ipaddr=x.x.x.x            #路由器的IP地址,我操作时设置的是192.168.2.1
  3.    secret=xxxxxxxxxx     #自己定义的,路由器设置中 radius 服务的连接密码,我操作时设置的是123456
  4.   # shortname=localhost           #这个可以注释掉,不用管
  5. }

然后用如下命令:

cp /etc/raddb/sql/mysql/admin.sql /etc/raddb/sql/mysql/admin.sql.bak
grep -v ^# /etc/raddb/sql/mysql/admin.sql.bak > /etc/raddb/sql/mysql/admin.sql
vi /etc/raddb/sql/mysql/admin.sql

内容改成下面这个样子的 :

  1. CREATE USER 'radius'@'localhost';  
  2. SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('radpass');  
  3. GRANT SELECT ON radius.* TO 'radius'@'localhost';  
  4. GRANT ALL ON radius.* TO 'radius'@'localhost';   

保存退出。

mysql -u root -p 回车后输入mysql的root管理员帐号密码,然后

create database radius;      #创建radius数据库

exit        #退出数据库

再次 mysql -u root -p 回车,输入密码后

然后执行source /etc/raddb/sql/mysql/admin.sql

然后 use radius 回车,打开radius数据库

source /etc/raddb/sql/mysql/schema.sql  回车,

source /etc/raddb/sql/mysql/nas.sql  回车,

source /etc/raddb/sql/mysql/ippool.sql  回车,

source /etc/raddb/sql/mysql/wimax.sql  回车,

flush privileges;  回车,

exit 退出 mysql 管理控制台。

然后在 linux 终端里面执行 vi /etc/raddb/radiusd.conf配置Freeradius支持sql:

1、vi /etc/raddb/radiusd.conf

找到 module (694行)那块以后去掉 $INCLUDE sql.conf (735行)这句话前面的 # 和 $INCLUDE sql/mysql/counter.conf (747行)前面的 # 后保存文件退出vi编辑器

2、然后vi /etc/raddb/sql.conf

找到 readclients = yes(108行)这一行,去掉前面的 # 注释后保存退出vi编辑器。

3、然后vi /etc/raddb/sites-enabled/default

分别找到 authorize(69行),accounting(378行),session(449行)这几个配置,将里面的sql全部启用就行了,就是把sql前面的#去掉就ok了。

1)authorize(69行)

在" # Read the 'users' file "下面的 files 注释掉(170 行);

下面的 sql 取消注释(177 行)。

2)accounting(378行)

在" # See "Accounting queries" in sql.conf  "下面的 sql 取消注释(406 行);

3)session(449行)

在" # See "Simultaneous Use Checking Queries" in sql.conf "下面的 sql 取消注释(454行)

4、还有  vi /etc/raddb/sites-enabled/inner-tunnel

在" # Read the 'users' file "下面的 files 注释掉(124 行);

在" #  See "Authorization Queries" in sql.conf "下面的 sql 取消注释(132行)

到了这就终于配置完了,下面就是插入一条数据到 mysql 数据库中真实的测试一下了:

mysql -u root -p

use radius

INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('demo','Password', 'demopwd');

select * from radcheck;         #查询用户

出现以下结果则正确

exit       #退出数据库

service mysqld restart

service radiusd stop        #用 radiusd -X 做测试时需要把 radius 服务先停止

radiusd -X

另外开一个终端运行

radtest demo demopwd localhost 1812 testing123         #用数据库里的账户和密码进行测试

注:成功的样子应该会出现 rad_recv: Access-Accept 字样。但我测试的时候却显示 radclient: no response from server for ID 96 socket 3  ,但用电脑连接路由器输入数据库里的账户和密码却又是能连上的,暂时先忽略这个问题。

杀死 radius 服务进程,启动 radius 服务,接下来配置路由器,进行无线连接。

killall -9 radiusd

service radiusd start 

iptables -F         #为防止接下来的操作被 iptables 防火墙干扰,这里先清空防火墙规则连

五、配置路由器并进行无线连接:

注:192.168.2.1 是路由器 LAN 端 IP,这里我是直接用网线把电脑和路由器直接连起来的,如下图,在路由器里的设置,需要加入的 radius 服务器的IP地址和连接密码,否则将无法访问 radius 服务器,记得保存。

 

之后就可以用笔记本电脑无线连接路由器(路由器的SSID 为 TP-LINK-300M),如下图:

1、下面是用Win10系统进行连接的,如果电脑上有以前保存要连接的路由器的密码,请务必删除,Win10在要连接的路由器SSID上右击,点击忘记就可以了,然后点击连接,弹出的窗口里输入账户demo,密码demopwd,点击确定,如果正常就可以上网了。

 2、下面是用Win7系统进行连接的,如果电脑上有以前保存要连接的路由器的密码,也请务必删除,Win7需要打开控制面板里的网络和共享中心,然后点击管理无线网络(如下图)找到路由器的SSID删除即可,接下来连接路由器在弹出的窗口里输入账户demo,密码demopwd,点击确定,如果正常就可以上网了。

 

六、安装web后台管理页面daloradius:(以下做测试时,登录后界面无反应,显示为空白,知道是缺少php相关扩展造成的,但因为时间原因还没解决掉,后续会补上)

从sf.net(https://sourceforge.net/projects/daloradius/?source=typ_redirect)下载最新版的daloraidus,然后

tar zxvf daloradius-0.9-9.tar.gz   

cp  -R daloradius-0.9-9 /var/www

cd /var/www

mv daloradius-0.9-9 daloradius

mysql -u root -p

use radius

source /var/www/html/daloradius/contrib/db/mysql-daloradius.sql

vi /var/www/html/daloradius/library/daloradius.conf.php

把链接数据库的密码改对,就是用户名是前面创建的radius,密码是radpass

  1. $configValues['CONFIG_DB_USER'] = 'radius';     (31行)
  2. $configValues['CONFIG_DB_PASS'] = 'radpass';   (32行)

然后

vi /etc/httpd/conf/httpd.conf

在最后增加以下内容

  1. Alias /myradius "/var/www/html/daloradius/"  
  2. <Directory /var/www/html/daloradius/>  
  3.   Options None  
  4.   order deny,allow  
  5.   allow from all  
  6. </Directory>

配置完成后 service httpd restart

然后开浏览器访问 http://localhost/daloradius 的时候可以打开登录界面,输入用户名administrator,密码 radius 以后提交登录后界面无反应,cat  /etc/httpd/logs/error_log 发现提示

 PHP Fatal error:  Class 'DB' not found in /var/www/daloradius/library/opendb.php on line 86, referer: http://localhost/myradius/login.php

 这是缺少php相关扩展造成的,还得继续折腾

  1. 更新yum源  
  2. 有些必须包是不在默认标准库里,安装前的必要条件,需要添加RPM forge资料库  
  3. #wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm  
  4. #wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt  
  5. #rpm --import RPM-GPG-KEY.dag.txt  
  6. #rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm 
  1. 安装PHP及扩展  
  2. #yum install php php-mysql php-gd php-ldap php-xml php-mbstring  
  3. 安装PEAR相关  
  4. #yum install php-pear php-pear-DB  
  5. #pear channel-update pear.php.net  
  6. #pear upgrade-all  

都安装完以后service httpd restart ,再次登录daloradius就可以了。

 

接下来是改防火墙规则,开放80端口

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 

/sbin/iptables -I INPUT -p tcp --dport 1812 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 1813 -j ACCEPT  

/sbin/iptables -I INPUT -p tcp --dport 1814 -j ACCEPT  

 

/etc/rc.d/init.d/iptables save #保存配置 
/etc/rc.d/init.d/iptables restart #重启服务
 
下面是配置每月计费流量等
 
mysql -u root -p
use radius
  1. INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Auth-Type',':=','Local');  
  2. INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Service-Type',':=','Framed-User');  
  3. INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Address',':=','255.255.255.255');  
  4. INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Framed-IP-Netmask',':=','255.255.255.0');  
  5. INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Acct-Interim-Interval',':=','600');  
  6. INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES ('user','Max-Monthly-Traffic',':=','5368709120');  
  7. INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES ('user','Simultaneous-Use',':=','1');  
vi /etc/raddb/dictionary 最后一行,添加ATTRIBUTE Max-Monthly-Traffic 3003 integer
 
vi /etc/raddb/sites-enabled/default
在authorize配置里面增加
 
  1. update request {  
  2. Group-Name := "%{sql:SELECT groupname FROM radusergroup WHERE username='%{User-Name}' ORDER BY priority}"  
  3. }  
  4. if ("%{sql: SELECT ifnull(SUM(acctinputoctets+acctoutputoctets),0) div 1024 FROM radacct WHERE username='%{User-Name}' AND date_format(acctstarttime, '%Y-%m-%d') >= date_format(now(),'%Y-%m-01') AND date_format(acctstoptime, '%Y-%m-%d') <= last_day(now());}" >= "%{sql: SELECT ifnull(value,0) div 1024 FROM radgroupreply WHERE groupname='%{Group-Name}' AND attribute='Max-Monthly-Traffic';}") {  
  5. reject  
  6. }  
  7. 照着抄的童鞋们千万注意,我这里改了原作者的配置,多了两个div 1024,,我看原作者配置的是5G流量限制,实地测试超过3G流量就不让我登录了,应该就是计算结果溢出造成的,所以我改了sql语句.

    如果以前测试用户登陆过,建议清理一下历史记录表,

    mysql -u root -p

    use radius

    delete from radacct;

猜你喜欢

转载自www.cnblogs.com/opsprobe/p/9420502.html