# 认证协议RADIUS

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/9950.html | 发布：2022-09-13 | 更新：2022-09-13 | 分类：建站教程、投稿分享

**概述**：远程认证拨号  
服务，是一种分布式、C/S架构信息交互协议，通常应用在既要求较高安全性、又允许远程用户访问的各种网络环境中  
**传输方式**：UDP，端口1812和1813作为认证、计费端口，思科设备认证、授权端口为1645，计费端口1646  
Radius协议最初是针对拨号用户AAA的协议，随着用户接入方式的多样性发展，Radius已支持多种用户接入方式，如以太网接入等，通过认证授权来提供接入服务，通过计费来手机、记录用户对网络资源的使用  
**架构**：C/S （客户端/服务器模式）  
**客户端**：位于网络接入服务器NAS上，负责传输用户信息到指定的RADIUS服务器，然后根据服务器返回的信息进行处理，如接受或拒绝用户接入  
**服务器端**：运行在中心计算机或工作站上，维护用户认证与网络访问相关信息，负责接受用户请求并认证用户，然后返回相关信息给客户端  
通常，RADIUS需要维护三个数据库：  
![认证协议RADIUS](https://www.mfisp.com/wp-content/uploads/2022/09/9950-iUCx4m.png)

 
 
- Users：用于存储用户信息（如用户名、口令以及使用的协议、IP地址等配置信息） 
- Clients：用于存储RADIUS客户端的信息（如接入设备的共享密钥、IP地址等） 
- Dictionary：用于存储RADIUS协议中的属性和属性值含义的信息  
报文格式：  
![认证协议RADIUS](https://www.mfisp.com/wp-content/uploads/2022/09/9950-NEkgSn.png)  
各字段的解释如下：  
Code：长度为1个字节，用来说明RADIUS报文的类型。 
- - Identifier：长度为1个字节，用来匹配请求报文和响应报文，以及检测在一段时间内重发的请求报文。客户端发送请求报文后，服务器返回的响应报文中的Identifier值应与请求报文中的Identifier值相同。  
Length：长度为2个字节，用来指定RADIUS报文的长度。超过Length取值的字节将作为填充字符而忽略。如果接收到的报文的实际长度小于Length的取值，则该报文会被丢弃。  
Authenticator：长度为16个字节，用来验证RADIUS服务器的响应报文，同时还用于用户密码的加密。  
Attribute：不定长度，为报文的内容主体，用来携带专门的认证、授权和计费信息，提供请求和响应报文的配置细节。Attribute可以包括多个属性，每一个属性都采用（Type、Length、Value）三元组的结构来表示。  
认证报文： 

 

| 报文名称 | 说明 |
|---|---|
| Access-Request | 认证请求报文，是RADIUS报文交互过程中的第一个报文，用来携带用户的认证信息（例如：用户名、密码等）。认证请求报文由RADIUS客户端发送给RADIUS服务器，RADIUS服务器根据该报文中携带的用户信息判断是否允许接入 |
| Access-Accept | 认证接受报文，是服务器对客户端发送的Access-Request报文的接受响应报文。如果Access-Request报文中的所有属性都可以接受（即认证通过），则发送该类型报文。客户端收到此报文后，认证用户才能认证通过并被赋予相应的权限 |
| Access-Reject | 认证拒绝报文，是服务器对客户端的Access-Request报文的拒绝响应报文。如果Access-Request报文中的任何一个属性不可接受（即认证失败），则RADIUS服务器返回Access-Reject报文，用户认证失败 |
| Access-Challenge | 认证挑战报文。EAP认证时，RADIUS服务器接收到Access-Request报文中携带的用户名信息后，会随机生成一个MD5挑战字，同时将此挑战字通过Access-Challenge报文发送给客户端。客户端使用该挑战字对用户密码进行加密处理后，将新的用户密码信息通过Access-Request报文发送给RADIUS服务器。RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比，如果相同，则该用户为合法用户 |

 

计费报文：

 

| 报文名称 | 说明 |
|---|---|
| Accounting-Request(Start) | 计费开始请求报文。如果客户端使用RADIUS模式进行计费，客户端会在用户开始访问网络资源时，向服务器发送计费开始请求报文 |
| Accounting-Response(Start) | 计费开始响应报文。服务器接收并成功记录计费开始请求报文后，需要回应一个计费开始响应报文 |
| Accounting-Request(Interim-update) | 实时计费请求报文。为避免计费服务器无法收到计费停止请求报文而继续对该用户计费，可以在客户端上配置实时计费功能。客户端定时向服务器发送实时计费报文，减少计费误差 |
| Accounting-Response(Interim-update) | 实时计费响应报文。服务器接收并成功记录实时计费请求报文后，需要回应一个实时计费响应报文 |
| Accounting-Request(Stop) | 计费结束请求报文。当用户断开连接时（连接也可以由接入服务器断开），客户端向服务器发送计费结束请求报文，其中包括用户上网所使用的网络资源的统计信息（上网时长、进/出的字节数等），请求服务器停止计费 |
| Accounting-Response(Stop) | 计费结束响应报文。服务器接收计费停止请求报文后，需要回应一个计费停止响应报文 |

 

授权报文：

 

| 报文名称 | 说明 |
|---|---|
| CoA-Request | 动态授权请求报文。当管理员需要更改某个在线用户的权限时（例如，管理员不希望用户访问某个网站），可以通过服务器发送一个动态授权请求报文给客户端，使客户端修改在线用户的权限 |
| CoA-ACK | 动态授权请求接受报文。如果客户端成功更改了用户的权限，则客户端回应动态授权请求接受报文给服务器 |
| CoA-NAK | 动态授权请求拒绝报文。如果客户端未成功更改用户的权限，则客户端回应动态授权请求拒绝报文给服务器 |
| DM-Request | 用户离线请求报文。当管理员需要让某个在线的用户下线时，可以通过服务器发送一个用户离线请求报文给客户端，使客户端终结用户的连接 |
| DM-ACK | 用户离线请求接受报文。如果客户端已经切断了用户的连接，则客户端回应用户离线请求接受报文给服务器 |
| DM-NAK | 用户离线请求拒绝报文。如果客户端无法切断用户的连接，则客户端回应用户离线请求拒绝报文给服务器 |

 

工作原理：  
接入设备作为Radius客户端，负责收集用户的用户名和密码信息，并发送到Radius服务器，Radius服务器则根据这些信息完成用户身份认证以及用户授权及缴费 
- ![认证协议RADIUS](https://www.mfisp.com/wp-content/uploads/2022/02/1397fb3628f64c1_1_post.jpg)

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
