白月工作室 企业信息化系统解决方案、订单系统、CRM 网络解决方案 订制 2010-10
Ros 使用 PPPOE 拨号并与 raidus 结合
第二篇 在 linux 下安装 Freeradius 并与 ROS 对接
(本教程总共三篇,这是第二篇)
第一篇:ROS 安装.PPPOE.限速教程
第二篇:安装 Freeradius 并与 ROS 对接
第三篇:补充 ROS 常用的一些操作和命令
作者:白月
工作室:白月工作室
网站:http://www.by111.com
感谢网络上很多高手的帖子给了我很大的帮助.我从一个完全不懂的人,慢慢掌握了.
可是在网上没有完整的并且很详细的教程.于是我就将这些零散的和不详细的部分进行补充
完整.希望对一些新手有些帮助
我本身是一个 PHP 的程序员.在一个偶然的机会,要做一个用 ROS 路由的这样的网
络.所以又需要 PPPOE 加上计费的东西.可是在网上找了很久,没有一个免费的和开原的东
西.本身对 PHP 来说都是开源程序.可是很多拿来卖钱,于是就想自己研究解决问题,再写一
个计费的管理.然后以开源的形式发布出去.我说到做到.
目前,我已经做到了 ROS+RED HAT+FREERADIUS+RADIUS 计费(根据
Radius manager 来自己写的程序)。已经供我们学校近 2000 人使用(当然上网的没
那么多,一般同时在线人数在 300 人左右)。学校 20M 网通+10M 电信带宽,ROS 采
用服务器,千兆 INTEL 网卡,老的思科交换机(呵呵,哪叫学校没什么钱呢)。
我 可 能 会 将 我 写 的RADIUS 认 证 计 费 系 统 发 布 出 来 , 请 大 家 关 注 我 的 网 站 :
http://www.by111.com 或者在百度上搜索“白月工作室”。
RED HAT 5 LINUX 的安装,这里就不多说了。以后再单独出教程!
软件版本: RED HAT 5 LINUX
Freeradius 1.1.7
Page 1 of 11 QQ:35854438 70097110 http://www.by111.com
白月工作室 企业信息化系统解决方案、订单系统、CRM 网络解决方案 订制 2010-10
以下是我经过在网上资料和验证,并且能够成功的。因为有的网上讲解的不太
详细,或者有遗漏,我这里集众家之长,给大家一个详细的教程:
首先了解下: radius 和 freeradius
RADIUS( Remote Access Dial In User Service) Protocol 主要
用来提供认证(Authentication)机制,用来辨认使用者的身份与密码,确
认通过之后,经由授权 (Authorization)使用者登入网域使用相关资源,
并可提供计费(Accounting)机制,保存使用者的网络使用记录。Radius
协议详 细介绍可参见 RFC2865,RFC2866。
FreeRadius 是一款 OpenSource 软件,基于 Radius 协议,实现 Radiu
s AAA(Authentication,Authorization,Accounting)功能。
现在一般我们使用 RADIUS 来做计费的用途,我们的 ROS 自带有 RADIUS
功能.但是我们还是可以使用一些比较好的 RADIUS 服务器,比如: FreeRadi
us.
首先将 tar 包进行解压
tar –zxvf freerdius-1.1.7.tar.gz
主要要注意下面几个内容:
1、 编译安装之前注意:mysql_develop 包是否存在!否则不能编译成功出 mys
ql 所需要的驱动(rlm_sql_mysql.so 等文件)。
如果不清楚的话,可以使用#rpm –qa|grep mysql 命令搜索下。如果不存在,
可以在安装 DVD 中找到,然后安装下。
2、 编译安装时 freeradius,在解压出来的目录中,要复制一个 libltdl/ltdl.h 文件
到 src/include/ 目录中。
解压后找到 目录下的 libltdl/ltdl.h 再进行如下拷贝:
#cp libltdl/ltdl.h src/include/
#cp libltdl/ltdl.h /usr/local/mysql/include/mysql 注意/usr/local/mysql
是我 MYSQL 的安装目录
(MYSQL 这个可以不用拷贝)
然后才可以进行编译
./configure (也可以指定安装的地点。)
Page 2 of 11 QQ:35854438 70097110 http://www.by111.com
白月工作室 企业信息化系统解决方案、订单系统、CRM 网络解决方案 订制 2010-10
make ,
make install
服务!
3、 安装完成后,这个时候,freeradius 还不是一个服务,所以需要将她增加为
请注意服务名为:radiusd
首先,将 安装目录/sbin/radiusd 复制到 /usr/sbin 目录中
(默认安装目录是:/usr/local)
再将 安装目录/sbin/rc.radiusd 复制到 /etc/rc.d/init.d 目录,并更名为:rad
然后 vi 编辑这个文件,可以增加些东西进去后(增加内容附后),然后可
iusd
以成为一个服务。
///////////////////////////注意修改的地方:主要是
# chkconfig: 2345 99 92
# description: FreeRadius
////////////////////////////////////////////////////////////////
#!/bin/sh
#
# radiusd Start the radius daemon.
# chkconfig: 2345 99 92
# description: FreeRadius
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public Licen
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1
by
of
se
See the
307 USA
#
Page 3 of 11 QQ:35854438 70097110 http://www.by111.com
白月工作室 企业信息化系统解决方案、订单系统、CRM 网络解决方案 订制 2010-10
# Copyright (C) 2001-2002 The FreeRADIUS Project http://www.freera
dius.org
prefix=/radius/freeradius
exec_prefix=${prefix}
sbindir=${exec_prefix}/sbin
localstatedir=${prefix}/var
logdir=${localstatedir}/log/radius
rundir=${localstatedir}/run/radiusd
sysconfdir=${prefix}/etc
#
# If you have issues with OpenSSL, uncomment these next lines.
#
# Something similar may work for MySQL, and you may also
# have to LD_PRELOAD libz.so
#
#LD_LIBRARY_PATH= -lcrypto -lssl -lcrypto
#LD_RUN_PATH= -lcrypto -lssl -lcrypto:
#LD_PRELOAD= -lcrypto -lssl -lcryptolibcrypto.so
export LD_LIBRARY_PATH LD_RUN_PATH LD_PRELOAD
RADIUSD=$sbindir/radiusd
RADDBDIR=${sysconfdir}/raddb
DESC="FreeRADIUS"
#
# See 'man radiusd' for details on command-line options.
#
ARGS=""
test -f $RADIUSD || exit 0
test -f $RADDBDIR/radiusd.conf || exit 0
case "$1" in
start)
stop)
[ -f $rundir/radiusd.pid ] && kill -TERM `cat $rundir/radiusd.pi
echo -n "Starting $DESC:"
$RADIUSD $ARGS
echo "radiusd"
;;
[ -z "$2" ] && echo -n "Stopping $DESC: "
d`
Page 4 of 11 QQ:35854438 70097110 http://www.by111.com
白月工作室 企业信息化系统解决方案、订单系统、CRM 网络解决方案 订制 2010-10
[ -z "$2" ] && echo "radiusd."
;;
echo "Reloading $DESC configuration files."
[ -f $rundir/radiusd.pid ] && kill -HUP `cat $rundir/radiusd.pid`
;;
reload|force-reload)
restart)
sh $0 stop quiet
sleep 3
sh $0 start
;;
*)
echo "Usage: /etc/init.d/$RADIUS {start|stop|reload|restart}"
exit 1
esac
exit 0
/////////////////////////////////////////////////////
最后,使用 chkconfig –add radiusd 命令,将 radiusd 增加为服务!这
样可以使用命令行下的 ntsysv 命令打开服务程序。或者在窗口模式下进行服务
的自启动。
4、 更改配置文件,使其支持 ROS 路由和使用 MYSQL 数据库
需要更改三个文件:
radiusd.conf 文件(主配置文件)
① 这个文件主要是配置其支持 MYSQL。在 1.1.7 中只需要把配置文件后面
的
# sql
前面的#去掉,一般有四个,经过我测试!只需要去掉前面三个就可以了。
分别在:1860\2023\2045\2067,最后一个可以不去掉!
② 把 accounting { ……….. } 选项中(1.1.7 在 1994 行 ) 的 detail ,
radutmp 两个选项用 # 注释起来不让其应用。
Page 5 of 11 QQ:35854438 70097110 http://www.by111.com
白月工作室 企业信息化系统解决方案、订单系统、CRM 网络解决方案 订制 2010-10
③ 把 session { ………….. } 选项中 (1.1.7 在 2040 行)的 radutmp 选
项也要注释起来。如果这两个不注释掉的话,可能在不能重复登陆。比
如你自己断开后,就不能再连接上了,只有重新启动电脑后才能行。
# Update the wtmp file
#
# If you don't use "radlast", you can delete this line.
unix
#
# Create a 'detail'ed log of the packets.
# Note that accounting requests which are proxied
# are also logged in the detail file.
detail
daily
#
# For Simultaneous-Use tracking.
#
# Due to packet losses in the network, the data here
# may be incorrect. There is little we can do about it.
radutmp
sradutmp
//////////这段代码是上面配置文件中②③条所说的内容。黑色部分就是需要注释的
地方!
accounting {
#
#
# main_pool
#
sqlippool
#
#
# Instead of sending the query to the SQL server,
# write it into a log file.
#
sql_log
# Cisco VoIP specific bulk accounting
# Return an address to the IP Pool when we see a stop record.
#
# Log traffic to an SQL database.
#
# See "Accounting queries" in sql.conf
sql
Page 6 of 11 QQ:35854438 70097110 http://www.by111.com
白月工作室 企业信息化系统解决方案、订单系统、CRM 网络解决方案 订制 2010-10
radutmp
pgsql-voip
#
# See "Simultaneous Use Checking Querie" in sql.conf
sql
#
}
# Session database, used for checking Simultaneous-Use. Either the radutmp
# or rlm_sql module can handle this.
# The rlm_sql module is *much* faster
session {
}
//////////////////////////////////////
clients.conf 文件(主配置文件)
这个文件主要是配置与 ROS 的对接程序!
设置以下字段:
client 127.0.0.1 {
……
secret = ros
shortname = routeros
nastype = other
……
}
127.0.0.1 : 客户端的地址. 这个经过我的测试是 ROS 路由的 IP 地址.如果你想
远程管理的话.
secret : 与 ROS 对接的唯一识别号 在 /radius 里面建立 radius server 的时
候设定的.(见下面的图 winbox 中设置)
Shortname : 随便,弄个 routeros 也可以
nastype = other 这个一般选择固定的。
Page 7 of 11 QQ:35854438 70097110 http://www.by111.com
白月工作室 企业信息化系统解决方案、订单系统、CRM 网络解决方案 订制 2010-10
选择 Incoming 然后要勾选 Accept 端口可以不修改
Page 8 of 11 QQ:35854438 70097110 http://www.by111.com