RADIUS:Remote Authentication Dial In User Service,远程用户拨号认证系统由RFC2865,RFC2866定义,是目前应用最广泛的 AAA协议。
  RADIUS是一种C/S结构的协议,它的客户端最初就是 NAS(Net Access Server)服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用 PAPCHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。RADIUS也支持厂商扩充厂家专有属性。
  由于RADIUS协议简单明确,可扩充,因此得到了广泛应用,包括普通电话上网、 ADSL上网、小区宽带上网、IP电话、 VPDN(Virtual Private Dialup Networks,基于拨号用户的虚拟专用拨号网业务)、移动电话预付费等业务。最近IEEE提出了802.1x标准,这是一种基于端口的标准,用于对无线网络的接入认证,在认证时也采用RADIUS协议。

历史  RADIUS协议最初是由Livingston公司提出的,原先的目的是为拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议。
  创立于1966年Merit Network, Inc.是密执安大学的一家非营利公司,其业务是运行维护该校的网络互联MichNet。1987年,Merit在美国NSF(国家科学基金会)的招标中胜出,赢得了NSFnet(即Internet前身)的运营合同。因为NSFnet是基于IP的网络,而MichNet却基于专有网络协议,Merit面对着如何将MichNet的专有网络协议演变为IP协议,同时也要把MichNet上的大量拨号业务以及其相关专有协议移植到IP网络上来。
  1991年,Merit决定招标拨号服务器供应商,几个月后,一家叫Livingston的公司提出了建议,冠名为RADIUS,并为此获得了合同。
  1992年秋天,IETF的NASREQ工作组成立,随之提交了RADIUS作为草案。很快,RADIUS成为事实上的网络接入标准,几乎所有的网络接入服务器厂商均实现了该协议。
  1997年,RADIUS RFC2039发表,随后是RFC2138,最新的RADIUS RFC2865发表于2000年6月。

基本工作原理  用户接入NAS,NAS向RADIUS服务器使用Access-Require数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account- Require,RADIUS服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。
  RADIUS还支持代理和漫游功能。简单地说,代理就是一台服务器,可以作为其他RADIUS服务器的代理,负责转发RADIUS认证和计费数据包。所谓漫游功能,就是代理的一个具体实现,这样可以让用户通过本来和其无关的RADIUS服务器进行认证,用户到非归属运营商所在地也可以得到服务,也可以实现虚拟运营。
  RADIUS服务器和NAS服务器通过UDP协议进行通信,RADIUS服务器的1812端口负责认证,1813端口负责计费工作。采用UDP的基本考虑是因为NAS和RADIUS服务器大多在同一个局域网中,使用UDP更加快捷方便。
  RADIUS协议还规定了重传机制。如果NAS向某个RADIUS服务器提交请求没有收到返回信息,那么可以要求备份RADIUS服务器重传。由于有多个备份RADIUS服务器,因此NAS进行重传的时候,可以采用轮询的方法。如果备份RADIUS服务器的密钥和以前RADIUS服务器的密钥不同,则需要重新进行认证。

协议结构  -------------------------------------------------
  1byte | 1byte | 2bytes
  -------------------------------------------------
  Code | Identifier | Length
  -------------------------------------------------
  Authenticator (16 bytes)
  ------------------------------------------------
  Attributes ...
  -------------------------------------------------
  Code ― 信息类型如下所述:
  1、请求访问(Access-Request);
  2、接收访问(Access-Accept);
  3、拒绝访问(Access-Reject);
  4、计费请求(Accounting-Request);
  5、计费响应(Accounting-Response);
  11、挑战访问(Access-Challenge);
  12、服务器状况(Status-Server — Experimental);
  13、客户机状况(Status-Client — Experimental);
  255、预留(Reserved)
  Identifier ― 匹配请求和响应的标识符。
  Length ― 信息大小,包括头部。
  Authenticator ― 该字段用来识别 RADIUS 服务器和隐藏口令算法中的答复。

基本消息交互流程  radius 服务器对用户的认证过程通常需要利用nas 等设备的代理认证功能,radius 客户端和radius 服务器之间通过共享密钥认证相互间交互的消息,用户密码采用密文方式在网络上传输,增强了安全性。radius 协议合并了认证和授权过程,即响应报文中携带了授权信息。
  基本交互步骤如下:
  (1) 用户输入用户名和口令;
  (2) radius 客户端根据获取的用户名和口令,向radius 服务器发送认证请求包(access-request)。
  (3) radius 服务器将该用户信息与users 数据库信息进行对比分析,如果认证成功,则将用户的权限信息以认证响应包(access-accept)发送给radius 客户端;如果认证失败,则返回access-reject 响应包。
  (4) radius 客户端根据接收到的认证结果接入/拒绝用户。如果可以接入用户,则radius 客户端向radius 服务器发送计费开始请求包(accounting-request),status-type 取值为start;
  (5) radius 服务器返回计费开始响应包(accounting-response);
  (6) radius 客户端向radius 服务器发送计费停止请求包(accounting-request),status-type 取值为stop;
  (7) radius 服务器返回计费结束响应包(accounting-response)。
 
如何设置 RouterOS 中的 Radius
首先设置RouterOS上的Radius参数和Hotspot的配置,进入路由器的Radius目录设置Radius服务器的IP地址和访问密码,并配置Hostpot需要通过Radius认证:
clip_p_w_picpath001
这里是通过本来Radius做认证,所以address输入的是本地的IP地址,并设置Secret为hotspot。
然后进入/ip hotspot目录,在servers的profile中配置Radius服务:
clip_p_w_picpath002
设置完hotspot profile的Radius参数后,这样RouterOS的Radius参数就配置完成,下面需要配置User Manager的参数:
进入User Manager中的Router项配置与本地的RouterOS连接参数,我们添加一个项目,将名称取名为“demo”,在User Manager中同样的我们将IP地址设置为RouterOS的本地IP,Secret为hotspot。在Routers项目中可以添加多个Radius客户端,并能同时为多个Radius客户端提供认证。
clip_p_w_picpath003
当User Manager中的Routers参数配置完成后,RouterOS就可以和User Manager相互通信传递用户认证信息了。
添加认证用户帐号
最后就是我们在User Manager的Users项目中配置用户的帐号:
clip_p_w_picpath004
User name:用户帐号名称
Password:用户密码
Private information:是否设置用户的个人信息资料
IP address:分配给用户的IP地址
Pool name:分配给用户的地址池(地址池从RouterOS中获取)
Group:设置Hotspot用户的Profile规则,仅限Hotspot使用。
Download limit:按照下行流量计费
Upload limit:按照上行流量计费
Uptime limit:按照在线时间计费
Rate limit:是否设置流量控制规则
Add time:添加时间控制规则
下面我们添加一个帐号,名称为test,密码为:test,配置Group为Hotspot上的默认规则default。
clip_p_w_picpath005
现在我们可以通过User Manager添加的帐号,已经可以在Hotspot认证上通过,如下图:
clip_p_w_picpath006
如果是通过Radius认证登陆到Hotspot上的,在该test登录行最前面会有一个“R”出现。
用户如何修改自己的密码
User Manager支持用户自主修改自己的密码,这样能让用户自己管理自己的帐号,在这里需要用户登录到指定的路径去: http://routerIP:800/user
clip_p_w_picpath007
当用户登录到该页面后,只有输入自己的用户名和密码,就可以登录到设置页面,并修改自己的密码和个人信息资料: