linux之家
linux之家-让学习更轻松

你的位置:首页>>Linux认证 >>使用Linux做Radius服务器实现对3comRAS1500认证计费

使用Linux做Radius服务器实现对3comRAS1500认证计费

发表时间:2007-9-23 上午 12:48:33浏览次数:

  3COM公司的SuperStack II Remote Access System 1500为中小型企业和Internet 服务提供商提供全面的远程访问服务。其在一个平台中集成了非常广泛的功能,以较低的设备开支,提供了拨入/拨出访问、采用拨号或帧中继和专线PPP连接的局域网间路由选择功能。其具有以下这些特点:

*易于安装。基于HTML浏览器的安装向导、图形用户界面(GUI)和文档浏览。
*先进、易于操作。NAT/PAT地址转换功能提供低成本高效率的共享ISP访问。DHCP服务器、中继和代理功能为本地和远程用户提供了简捷的LAN访问方式。
*访问方式安全。包括本地验证,并可与RADIUS、 Windows NT 或NetWare NOS 服务器配合实现远程验证功能。
*I/O单元模块化。模块化单元,便于I/O卡的添加和扩展以及PRI访问单元的热插拔。
*Univerrsal ConnectTM技术。通过同一基本速率的 ISDN 连接,提供了业界领先的模拟连接方式(速率可高达V.90)和 ISDN 拨入访问方式。
*可伸缩性。将 ISDN 和模拟连接方式集于一身,端口范围为4至24端口,可以随着您的需要进行扩展。
3COM RAS1500以较低价位为要求严格的用户提供了企业级网络的功能和优异性能,因此成为当前国内小型ISP首选的远程接入服务器(Remonte Network Access Server),在国内各个小型ISP得到了广泛的应用。但是,虽然RAS1500可以通过网管软件Transcend Network Supervisor (TNS)提供功能强大易用的记费认证功能,能满足中小型企业的需求,但是其昂贵的价格使小型ISP望而却步。因此如何以较低的价格实现RAS1500的认证和记费就成为当前使用RAS1500的小型ISP的难以解决问题。

本文讨论了如何使用linux作为3comRas1500的radius服务器,实现集中化的认证和记费功能,以减少管理的负担和费用。这里实现的radius服务器可以实现拨号用户的集中管理,可以实现拨号用户账号和系统账号集成或分开;并且在拨号账户独立时,实现web界面的管理,如:察看详细的log信息及各个用户的记账信息;实现用户拨号时间的限定,当该用户拨号时间到达限定以后,自动断开,而且不能再拨入。还可以实现用户的月拨号时间限定,每个月该用户只能使用限额的时间等等。

一、radius协议原理

Radius是Remote Authentication Dial In User Service-远程拨入用户认证服务的简写。其定义了在NAS(Network Access Server,拨号服务器,如:pastmaster,3com rs1500等)和集中存放认证信息的radius服务器之间传输认证、授权和配置信息的协议。其协议的标准最新的定义在rfc2865和rfc2866中,也可以在www.freeradius.org处得到相关的rfc。RADIUS以Client/Server模式工作,实现了对远程电话拨号用户的身份认证、授权和计费功能。其Client端多为网络访问服务器(NAS),主要用来将用户信息传递给Server;Server则对用户进行认证,并反回用户的配置信息。为保证传输的安全性,在Client和Server之间传送的数据均以MD5方式加密。RADIUS Server端和Client端通信主要有两种情况,一种是接入认证,另一种是计费请求。

RADIUS是一种基于UDP协议的上层协议,认证服务的监听端口号为1812,记费服务的监听端口号为1813。标准的RADIUS数据包的结构包括Code、ID、Length、Authenticator和Attributes几部分。

Code表示该包的类型。ID号区分不同消息并给予相应的应答。Length为该RADIUS包的总长度,Authenticator 是供MD5加密使用的字符串。Attributes则对应包中具体内容,Attributes包括三个部分:type、length、value。type表示该Attribute的具体含义;length为该type的长度;value是该type的具体值。

1.接入请求 (Access-Request)


    type   length  

  01   USERNAME(以00为结束)   ≥3(其长度为加入00后的长度)  

  02   PASSWORD(以00为结束)   6  

  04   IP-ADDRESS   6(接入服务器NAS地址)  

  05   NAS-PORT   6(物理端口号)  

  3D   PORT-TYPE   6  

  18   STATE   ≥3(此处可不使用)  

  1F   CALLING-STATION-ID   ≥3(电话呼入被叫号)  

  IE   CALLED-STATION-ID   ≥3(电话呼入主叫号)  

  2C   ACCT-SESSION-ID(以00为结束)   ≥3(以00结束其长度为加入00后的长度)  


当用户请求连接时,Client端给Server发送认证请求,在请求包中带有username、password、NAS_port等。Server端收到该请求后会到users文件中查找对应信息,当用户的username和password正确时,Server会返回Access-Accept信息,否则返回Access-Reject信息。

2.同意接入 (Access-Accept)


    type   length  

  06   SERVICE-TYPE   6  

  07   FRAMED-PROTOCOL   6  


其中, SERVICE-TYPE是用户的服务类型,大部分用户是Framed(其值为2);FRAMED-PROTOCOL则是用户所使用的协议,多为PPP(其值为1)或SLIP(其值为2)。Access-Accept包是由Server端发给Client端用户的数据包,此时Server已认证通过了该用户,返回确认信号和该用户的配置参数.这些参数是在users文件中配入的。

3.拒绝接入 (Access-Reject)

无type位。Access-Reject包是用户认证不通过时,Server发送给client端的否认信号。

4.计费请求 (Accounting-Request)


    type   length  

  01   USERNAME(以00为结束)   ≥3(其长度为加入00后的长度)  

  04   IP-ADDRESS   6  

  05   NAS-PORT   6  

  3D   PORT-TYPE   6  

  28   ACCT-STATUS-TYPE   6(1:start;2:stop)  

  29   ACCT-DELAY-TIME   6  

  2C   ACCT-SESSION-ID(以00为结束)   ≥3(其长度为加入00后的长度)  

  2D   ACCT-AUTHENTIC   6(1:RADIUS;2:local;3:remote)  

  2E   ACCT-SESSION-TIME   6  

  1F   CALLING-STATION-ID   ≥3(被叫号)  

  1E   CALLED-STATION-ID   ≥3(主叫号)  

  07   FRAMED-PROTOCOL   6  

  08   FRAMED-IP-ADDRES   6(NAS地址)  

  2A   ACCT-INPUT-OCTETS   6(仅用于stop中,表示多少字节从此端口输入)  

  2B   ACCT-OUTPUT-OCTETS   6(仅用于stop中,表示多少字节从此端口送出)  

  2F   ACCT-INPUT-PACKETS   6(仅用于stop中,表示多少包送给了用户)  


(带*为必需项)

计费请求信息分为两种情况:一是start即当用户认证通过并连接成功时发出的信息;一是stop即用户断链时发出的信息,通知该用户断链,停止计费。两者是由ACCT-STATUS-TYPE来区分的。Server记录这些信息到detail文件中,以供二次开发时使用。

5.计费应答 (Accounting- Response)

当Server收到Client端送来的计费请求时,会返回Accounting-Response包,告诉Client端已收到该信息,该包无type位。

上面为radius协议的简单的原理,但是笔者推荐在动手之前阅读rfc2865和rfc2866,这样可以在安装除错中解决很多问题。

二、下载安装必需的支持软件

这里介绍使用Linux环境下的radius服务器软件-icradius来实现radius服务器,其主页地址为:http://radius.innercite.com,当前最新版本为0.17。包括icradius一共需要下载以下软件:

icradius http://icradius.hislora.com.au/
perl http://www.perl.com
mysql http://www.mysql.com
Perl DBI http://www.mysql.com/downloads/contrib.html
mySQL DBD Modules http://www.mysql.com/downloads/contrib.html
perl的Authen::RADIUS模块 http://www.mirror.ac.uk/sites/ftp.internat.freebsd.org/pub/FreeBSD/packages-4.1/All/p5-Authen-Radius-0.05.tgz[peek]

笔者是在内核版本2.2.14-5.0的Redhat6.2环境下,使用的icradius为0.17版;perl为redhat6.2自带的5.005_03版;mysql下载的是rpm包形式发布的3.23.22-1的源代码;perl DBI为1.13版;mySQL DBD Modules为1.2214版本。所有的软件都为源代码方式下载。

1、Mysql的安装;

笔者使用的rpm包方式的源代码,因此首先要解开rpm包:

[root@radiusd ideal]# rpm -ivh MySQL-3.23.22-1.src.rpm
MySQL ##################################################

然后:

[root@radiusd ideal]# cd /usr/src/redhat/SOURCES/
[root@radiusd SOURCES]# ls -al
total 6432
drwxr-xr-x 2 root root 4096 Oct 29 14:07 .
drwxr-xr-x 7 root root 4096 Oct 30 2000 ..
-rw-r--r-- 1 root root 6560696 Jul 30 11:23 mysql-3.23.22-beta.tar.gz
-rw-rw-r-- 1 root root 3082 Jul 30 11:23 mysql.gif


[root@radiusd SOURCES]# tar xvgz mysql-3.23.22-beta.tar.gz

解压源代码包,就会在当前目录下生成mysql-3.23.22-beta的子目录,其中包含了mysql的源代码,然后使用下面的命令进行安装:

读者体会
暂无回复
姓名:
评论内容:
     
热点导读
使用Linux做Radiu
Linux认证基本知识介绍
Oracle数据库开发(二
红帽Linux获美国政府最
Linux操作系统安全配置
如何用Linux Live
物理隔离 Linux如何贯
用SRP建立安全的Linu
Linux安全攻略 了解系
Linux安全攻略 服务器
微软要用数据证明Vista
用LVS在Linux上搭建
Linux操作系统安装VM
下载工具介绍 aMule在
Linux操作系统中安装E
Linux操作系统下网络互
Linux应用问答系列之硬
Linux系统下设置用户登
Apache2.0.48
在Linux系统下面架设S
Debian Linux下
Squid实现反向代理并且
Linux操作系统下SAM
高效配置Linux代理服务
用VSFTPD搭建FTP服
sendmail+squi
Ubuntu Linux上
Linux系统上把PHP编
Red Hat Linux
Linux系统 2.4和2
Copyright 2006-2007 linux77.com Inc. All Rights Reserved
Emai:skyzznj@126.com