http://networkradius.com/doc/FreeRADIUS%20Technical%20Guide.pdf
一个Radius Session包含一下几步:
- 用户连接 Radius Client (也称为NAS,比如:WIFI热点) 进行登陆。(使用 Point to Point Protocol, PPP协议、802.1X协议或其他数据链路层协议)
- NAS与Radius Server使用shared secret(共享密钥)机制进行通信。
- NAS发送一个Access-Request类型的UDP报文给Radius Server
- 报文中包含用户的信息:username、供认证使用的隐私信息等。
- 此外,报文中还可能包含NAS的信息:hostname、MAC地址或无线SSID
- 该报文使用使用PAP、CHAP、EAP发送。
- Radius Server根据报文中的信息来决定是否认证(authentication)或授权(authorization)一个用户
- 如果NAS使用了一种Radius Server不支持的authentication协议,Radius Server会拒绝用户的请求。(Access-Reject)
- Radius Server会使用本地数据库或后端的认证服务器(authentication server)来决定是否允许用户登陆。
- authentication server包括
- LDAP
- AD
- Kerberos
- SQL:SQL server、Mysql
- authentication server包括
- Radius Server 发送给NAS的验证结果有一下三种:
- Access Reject: 拒绝用户
- Access Challenge:如果Radius Server需要额外的用户信息,将会返回此类型的报文。因为Radius包的大小是有限制的,通过Access Challenge这种方式可以交换更多的数据。
- Access Accept:允许用户访问网络资源。当NAS收到此类型的报文时,NAS会为用户提供一个静态或动态的IP地址;为该Radius Session分配一个有效时长;下载用户的ACL(Access Control List,访问控制列表),并使用该ACL;设置其他L2TP, VLAN, and QoS session的必要参数。
- 一旦用户与Radius Server建立起了Session,就会进入计费过程(accounting):
- NAS向Radius Server发送Accounting Request start报文,计费开始。
- NAS向Radius Server发送Accounting Request stop报文,计费便结束。
- 在此过程中,一些用于计费的信息被存储在数据库中,包括:时长、流量、用户和机器的ID、网络地址等信息。