热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【网络安全】RADIUS协议

1摘要:目前,电信运营商和服务提供商所采用的认证方式主要有本地认证、RADIUS认证和不认证;而计费策略更是丰富多彩,常见的有不计费(包月)、按时长计费、按流量计费、按端口计费等等。目前在所有这些

1 摘 要:

目前,电信运营商和服务提供商所采用的认证方式主要有本地认证、RADIUS认证和不认证;而计费策略更是丰富多彩,常见的有不计费(包月)、按时长计费、按流量计费、按端口计费等等。目前在所有这些认证计费方式中,以采用RADIUS Server进行集中认证计费应用的最为普及和广泛。

AAA是认证(Authentication)、授权(Authorization)和计费(Accounting)的简称,它是一种对网络安全进行管理的基本框架。而RADIUS (Remote Authentication Dia• -In User Service)即远程认证拨号用户服务,是一种分布式的、客户机/服务器结构的信息交互协议,它能保护网络不受未授权访问的干扰。二者结合可以实现对远程接入用户身份、权限以及流量的严格控制。RADIUS为服务供应商和公司提供了一种灵活通用的协议,用来完成集中式的用户认证、口令加密、服务选择、过滤和帐目核对等工作。当进行PAP/CHAP连接或连接第三方认证服务器时,一个单独的RADIUS数据库服务器可以在多个复杂网络上同时管理多个安全系统,并可用于维护成千上万用户的信息安全。

RADIUS不仅指运行于服务器上的软件,还包括网络访问服务器与RADIUS服务器之间的交互操作协议。

以下即针对RADIUS协议的原理和具体的应用做详细介绍。

2 AAA介绍

2.1 AAA概述

AAA是认证(Authentication)、授权(Authorization)和计费(Accounting)的缩写,它是运行于NAS(网络访问服务器)上的客户端程序。提供了一个用来对认证、授权和计费这三种安全功能进行配置的一致性框架,实际上是对网络安全的一种管理。这里的网络安全主要指访问控制。包括哪些用户可以访问网络服务器;具有访问权的用户可以得到哪些服务;以及如何对正在使用网络资源的用户进行计费。

下面简单介绍一下AAA所提供的三种服务:

1. 认证功能

AAA支持以下认证方式:

• 不认证:对用户非常信任,不对其检查,一般情况下不采用这种方式。

• 本地认证:将用户信息(包括本地用户的用户名、密码和各种属性)配置在接入服务器上。本地认证的优点是速度快,降低运营成本;但存储信息量受设备硬件条件限制。

• 远端认证:支持通过RADIUS协议或HWTACACS协议进行远端认证,由接入服务器作为Client端,与RADIUS服务器或TACACS服务器通信。

2. 授权功能

AAA支持以下授权方式:

• 直接授权:对用户非常信任,直接授权通过。

• 本地授权:根据宽带接入服务器上为本地用户账号配置的相关属性进行授权。

• HWTACACS授权:由TACACS服务器对用户进行授权。

• if-authenticated授权:如果用户通过了认证,并且使用的认证方法不是none,则对用户授权通过。

• RADIUS认证成功后授权:RADIUS协议的认证和授权是绑定在一起的,不能单独使用RADIUS进行授权。

3. 计费功能

AAA支持以下计费方式:

• 不计费

• 远端计费:支持通过RADIUS服务器或TACACS服务器进行远端计费。

2.2 AAA的实现

AAA框架图

• 本地认证——即在NAS端进行认证、授权和计费,

• 远程认证——通过协议进行远程的认证、授权和计费。

AAA的实现可采用RADIUS协议。RADIUS用来管理使用串口和调制解调器的大量分散用户。

网络接入服务器简称NAS。当用户想要通过某个网络(如电话网)与NAS建立连接从而获得访问其他网络的权利时,NAS可以选择在NAS上进行本地认证计费,或把用户信息传递给RADIUS服务器,由RADIUS进行认证计费;RADIUS 协议规定了NAS与RADIUS 服务器之间如何传递用户信息和计费信息,即两者之间的通信规则;RADIUS服务器负责接收用户的连接请求,完成认证,并把用户所需的配置信息返回给NAS。用户获得授权后,在其正常上线、在线和下线过程中,RADIUS服务器还完成对用户账号计费的功能。

3 RADIUS协议概述

3.1 引论

RADIUS远程认证拨入用户服务,是用于NAS和AAA服务器间通信的一种协议。RADIUS对AAA的三个组件都提供支持:认证、授权和计费。

一个网络允许外部用户通过公用网对其进行访问,其用户在地理上的分布会极为分散。用户可以把自己的信息传递给这个网络,也可以从这个网络得到自己想要的信息。由于存在内外的双向数据流动,网络安全就显得尤为重要。这个网络管理的内容包括:哪些用户可以获得访问权;获得访问权的用户可以允许使用哪些服务;如何对使用网络资源的用户进行记费。AAA很好的完成了这三项任务。

RADIUS通过建立一个唯一的用户数据库,存储用户名,用户的密码来进行认证存储传递给用户的服务类型以及相应的配置信息来完成授权。

3.2 RADIUS关键特性

RADIUS协议有如下的关键特性:

• 客户端/服务器模式(Client/Server)

NAS是作为RADIUS的客户端运作的。这个客户端负责将用户信息传递给指定的RADIUS服务器,并负责执行返回的响应。RADIUS服务器负责接收用户的连接请求,鉴别用户,并为客户端返回所有为用户提供服务所必须的配置信息。一个RADIUS服务器可以为其他的RADIUS Server或其他种类认证服务器担当代理。

• 网络安全 (Network Security)

客户端和RADIUS服务器之间的事务是通过使用一种从来不会在网上传输的共享密钥机制进行鉴别的。另外,在客户端和RADIUS服务器之间的任何用户密码都是被加密后传输的,这是为了避免用户密码在不安全的网络上被监听获取的可能性。

• 灵活的认证机制 (Flexible Authentication Mechanisms)

RADIUS服务器能支持多种认证用户的方法。包括点对点的PAP认证(PPP PAP)、点对点的CHAP认证(PPP CHAP)、UNIX的登录操作(UNIX login)、和其他认证机制。

• 扩展协议(Extensible Protoco• )

RADIUS协议具有很好的扩展性。RADIUS包是由包头和一定数目的属性(Attribute)构成的。新的属性可以在不中断已存在协议执行的前提下进行增加。在RADIUS协议的报文结构一节中有详细描述。

3.3 C/S结构

用户, NAS,RADIUS 服务器的关系

RADIUS采用典型的客户端/服务器(Client/Server)结构,它的客户端最初就是NAS,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。NAS上运行的AAA程序对用户来讲为服务器端,对RADIUS服务器来讲是作为客户端。负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理(如接入/挂断用户)。RADIUS服务器负责接收用户连接请求,认证用户,然后给NAS返回所有需要的信息。

1、RADIUS的客户端通常运行于接入服务器(NAS)上,RADIUS服务器通常运行于一台工作站上,一个RADIUS服务器可以同时支持多个RADIUS客户(NAS)。

2、RADIUS的服务器上存放着大量的信息,接入服务器(NAS)无须保存这些信息,而是通过RADIUS协议对这些信息进行访问。这些信息的集中统一的保存,使得管理更加方便,而且更加安全。

3、RADIUS服务器可以作为一个代理,以客户的身份同其他的RADIUS服务器或者其他类型的认证服务器进行通信。用户的漫游通常就是通过RADIUS代理实现的。简单地说,代理就是一台服务器,可以作为其他RADIUS服务器的代理,负责转发RADIUS认证和计费数据包。所谓漫游功能,就是代理的一个具体实现,这样可以让用户通过本来和其无关的RADIUS服务器进行认证。

3.4 RADIUS在协议栈中的位置

RADIUS是一种流行的AAA协议,采用UDP协议传输,在协议栈中位置如下:

RADIUS在协议栈中的位置

RADIUS为何采用UDP,而不是TCP的原因如下:

1、NAS和RADIUS服务器之间传递的一般是几十至上百个字节长度的数据,用户可以容忍几秒到十几秒的验证等待时间。当处理大量用户时服务器端采用多线程,UDP简化了服务器端的实现过程。

2、TCP是必须成功建立连接后才能进行数据传输的,这种方式在有大量用户使用的情况下实时性不好。

3、当向主用服务器发送请求失败后,还要必须向备用的服务器发送请求。于是RADIUS要有重传机制和备用服务器机制,它所采用的定时机制,TCP不能很好的满足。

RADIUS协议采用的是UDP协议,数据包可能会在网络上丢失,如果客户没有收到响应,那么可以重新发送该请求包。多次发送之后如果仍然收不到响应,RADIUS客户可以向备用的RADIUS服务器发送请求包。

3.5 RADIUS网络安全

RADIUS协议的加密是使用MD5加密算法进行的,在RADIUS的客户端(NAS)和服务器端(RADIUS Server)保存了一个密钥(key),RADIUS协议利用这个密钥使用MD5算法对RADIUS中的数据进行加密处理。密钥不会在网络上传送。

RADIUS的加密主要体现在以下两方面:

2.5.1包加密:

在RADIUS包中,有16字节的验证字(authenticator)用于对包进行签名,收到RADIUS包的一方要查看该签名的正确性。如果包的签名不正确,那么该包将被丢弃,对包进行签名时使用的也是MD5算法(利用密钥),没有密钥的人是不能构造出该签名的。

2.5.2 口令加密:

在认证用户时,用户的口令在NAS和RADIUS Server之间不会以明文方式传送,而是使用了MD5算法对口令进行加密。没有密钥的人是无法正确加密口令的,也无法正确地对加密过的口令进行解密。

2.5.3 口令加密与口令验证过程

当用户上网时,NAS将决定对用户采用何种认证方法。下面对使用RADIUS认证的情况下PPP用户与NAS之间的PAP和CHAP认证过程进行介绍。

RADIUS服务器可使用H3C的iMC服务器,也可以使用CISCO的ACS服务器或其它第三方服务器。

• PAP 验证:

Radius Server PAP认证

用户以明文的形式把用户名和他的密码传递给NAS,NAS把用户名和加密过的密码放到验证请求包的相应属性中传递给RADIUS服务器。RADIUS服务器根据NAS上传的帐号进行验证来决定是否允许用户上网并返回结果。NAS可以在其中包含服务类型属性Attribute Service-Type=Framed-User,和Framed-Protoco• =PPP作为提示来告诉RADIUS服务器PPP是所希望的服务。

Secret password =Password XOR MD5(Challenge + Key)

(Challenge就是RADIUS报文中的Authenticator)

• CHAP 验证:

对于CHAP(挑战握手认证协议),它提供对用户口令进行加密的机制。

RADIUS Server CHAP认证

当用户请求上网时,NAS产生一个16字节的随机码给用户(同时还有一个ID号,本地路由器的Host name)。用户端得到这个包后使用自己独有的设备或软件客户端将CHAP ID、用户密码(口令字)用MD5算法对该随机码进行加密生成一个Secret Password,随同用户名user name一并传给NAS。

NAS把传回来的user name和Secret Password分别作为用户名和密码,并把原来的16字节随机码以及CHAP ID传给RADIUS服务器。RADIUS根据用户名在服务器端查找数据库,得到和用户端进行加密所用的一样的密钥,用MD5算法对CHAP ID,密钥和传来的16字节的随机码进行加密,将其结果与传来的Password作比较,如果相匹配,服务器送回一个接入允许数据包,否则送回一个接入拒绝数据包。

4 RADIUS体系结构

当用户PC通过某个网络(如电话网)与 NAS建立连接从而获得访问其他网络的权利时,NAS可以选择在NAS上进行本地认证计费,或把用户信息传递给RADIUS服务器,由RADIUS进行认证计费;RADIUS 协议规定了NAS与RADIUS 服务器之间如何传递用户信息和计费信息;RADIUS服务器负责接收用户的连接请求,完成认证,并把传递服务给用户所需的配置信息返回给NAS。

通常对RADIUS协议的认证服务端口号是1645(早期实现)或1812,计费服务端口号是1646(早期实现)或1813。当我们进行NAS设备和RADIUS服务器对接的时候,由于生产厂家可能不同,所对应的服务器端口号不同,那么就需要调整服务器端口号,例如与其他厂家radius协议默认端口号是1645和1646,需要与他们协商,调整到相同的端口号,这样才能对接成功。

4.1 RADIUS报文的交互流程

RADIUS服务器对用户的认证过程通常需要利用NAS等设备的代理认证功能,RADIUS客户端和RADIUS服务器之间通过共享密钥认证相互间交互的消息,用户密码采用密文方式在网络上传输,增强了安全性。RADIUS协议合并了认证和授权过程,即响应报文中携带了授权信息。操作流程图和步骤如下所示:

RADIUS的典型实现流程

在一个客户端被设置使用RADIUS协议后,任何使用这个终端的用户都需要向这个客户端提供认证信息。该信息或者以一种定制化的提示信息出现,用户需要输入他们的用户名和密码;或者也可以选择比如像点对点的传输协议(Point-to-Point Protoco• ),通过认证包来传递这种认证信息。

基本交互过程如下:

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)。

4.2 RADIUS协议的报文结构

RADIUS采用UDP传输消息,通过定时器管理机制、重传机制、备用服务器机制,确保RADIUS服务器和客户端之间交互消息正确收发。标准RADIUS协议报文结构如下:

0 7 8 15 16 31

RADIUS报文格式

 Code:包类型;1字节,指示RADIUS包的类型。在接收到一个无效编码域的数据包后,该数据包只是会被简单的丢弃。

主要包括如下类型:

Code域主要取值的说明

Code

报文类型

报文说明

1

Access-Request认证请求包

方向Client->Server,Client将用户信息传输到Server以判断是否接入该用户。该报文中必须包含User-Name属性,可选包含NAS-IP-Address、User-Password、NAS-Port等属性。

2

Access-Accept认证接受包

方向Server->Client,如果Access-Request报文中所有Attribute值都是可以接受(即认证通过),则传输该类型报文。

3

Access-Reject认证拒绝包

方向Server->Client,如果Access-Request报文中存在任何Attribute值无法被接受(即认证失败),则传输该类型报文。

4

Accounting-Request计费请求包

方向Client->Server,Client将用户信息传输到Server,请求Server开始计费,由该报文中的Acct-Status-Type属性区分计费开始请求和计费结束请求。该报文包含属性和Access-Request报文大致相同。

5

Accounting-Response认证响应包

方向Server->Client,Server通知Client侧已经收到Accounting-Request报文并且已经正确记录计费信息。该报文包含端口上输入/输出字节数、输入/输出包数、会话时长等信息。

 Identifier: 包标识;1字节,取值范围为0 ~255;用于匹配请求包和响应包,同一组请求包和响应包的Identifier应相同。如果在一个很短的时间片段里,一个请求有相同的客户源IP地址、源UDP端口号和标识符,RADIUS服务器会认为这是一个重复的请求而不响应处理。1字节意味着客户端在收到服务器的响应之前最多发送255(28-1)个请求。Identifier段里的值是序列增长的。

 length: 包长度;2字节;标识了分组的长度,整个包中所有域的长度。长度域范围之外的字节被认为是附加的,并在接受的时候超长部分将被忽略。如果包长比长度域给出的短,也必须丢弃,最小长度为20,最大长度为4096。

 Authenticator:验证字域;16 字节明文随机数;最重要的字节组最先被传输。该值用来认证来自RADIUS服务器的回复,也用于口令隐藏算法(加密)。

该验证字分为两种:

• 请求验证字——Request Authenticator

用在请求报文中,采用唯一的16字节随机码。

• 响应验证字——Response Authenticator

用在响应报文中,用于鉴别响应报文的合法性。

响应验证字=MD5(Code+ID+length+请求验证字+Attributes+Key)

 Attributes:属性域;用来在请求和响应报文中携带详细的认证、授权、信息和配置细节,来实现认证、授权、计费等功能。采用(Type、length、Value)三元组的形式提供,

属性在数据报中的格式:

Type:Attribute Number(属性号),用来说明数据包中表示的属性类型。范围是1~255。服务器和客户端都可以忽略不可识别类型的属性。值为26,标识厂商私有属性。

length(属性长度):说明整个属性域的长度。长度域最小值为3(表示属性域至少占3个字节)。如果AAA服务器收到的接入请求中属性长度无效,则发送接入拒绝包。如果NAS收到的接入允许、接入拒绝和接入盘问中属性的长度也无效,则必须以接入拒绝对待,或者被简单的直接丢弃。

Value(值):表示属于自己的特性和特征。即使该域为nul• ,这个域也必须出现在属性域中。有6种属性值——整数(INT) ;枚举(ENUM) ;IP地址(IPADDR) ;文本(STRING) ;日期(DATE) ;二进制字符串(BINARY) ;

RFC中定义的标准Attribute域大致包括:

Attribute域主要取值的说明

Type

属性类型

Type

属性类型

1

User-Name

23

Framed-IPX-Network

2

User-Password

24

State

3

CHAP-Password

25

Class

4

NAS-IP-Address

26

Vendor-Specific

5

NAS-Port

27

Session-Timeout

6

Service-Type

28

Idle-Timeout

7

Framed-Protocol

29

Termination-Action

8

Framed-IP-Address

30

Called-Station-Id

9

Framed-IP-Netmask

31

Calling-Station-Id

10

Framed-Routing

32

NAS-Identifier

11

Filter-ID

33

Proxy-State

12

Framed-MTU

34

login-lAT-Service

13

Framed-Compression

35

login-lAT-Node

14

login-IP-Host

36

login-lAT-Group

15

login-Service

37

Framed-AppleTalk-link

16

login-TCP-Port

38

Framed-AppleTalk-Network

17

(unassigned)

39

Framed-AppleTalk-Zone

18

Reply_Message

40-59

(reserved for accounting)

19

Callback-Number

60

CHAP-Challenge

20

Callback-ID

61

NAS-Port-Type

21

(unassigned)

62

Port-limit

22

Framed-Route

63

login-lAT-Port

RADIUS协议具有良好的可扩展性,协议中定义的26号属性(Vender-Specific)被用来扩展以支持供应商自己定义的扩展属性,主要指不适于常规使用的属性扩展。但不允许对RADIUS协议中的操作有影响。当服务器不具备去解释由客户端发送过来的供应商特性信息时,则服务器必须忽略它(过程可以被记录下来)。当没有收到预期的供应商特性信息的情况下,客户端也应该尝试在没有它的情况下运作(即使是在降级模式中)。

以下是具体厂商属性格式的总结。域的传输是从左向右。报文结构如下图所示:

自定义属性格式

5 RADIUS细节描述

下图是针对RADIUS远程认证时,认证、授权和计费的交互的详细过程。

RADIUS认证、授权和计费

5.1 综述:RADIUS认证、授权和计费

RADIUS的认证和授权的相关内容已经在前面的章节里中介绍过。下面将其从分散的描述中作细节描述。

5.1.1 认证

RADIUS的认证是以NAS和RADIUS服务器之间交换两个消息的形式进行的。

(1)用户发起连接请求

(2)NAS在接受到用户进行认证的请求后,发送一个访问-请求(Access-Request)消息到RADIUS服务器上。

访问-请求消息包含一下信息:

• 用户名

• 加密个时的用户口令

• NAS IP 地址和端口号

• 用户希望的服务类型

(3)RADIUS服务器使用以下消息之一进行相应:

• 访问-接受 Access-Accept

• 访问-拒绝 Access-Reject

• 访问-询问 Access-Challenge

如果AAA服务器对用户进行了成功的认证,就会发送一个访问-接受Access-Accept消息。该消息也包含了被应用到用户的授权属性。

当AAA服务器不接受NAS提供给AAA服务器的任何一个值,就会发送一个访问-拒绝Access-Reject消息。该消息也可能包含一到多个回答消息属性,以及一个NAS可能显示给用户的文本消息。在这一点上,NAS决定用户是否在使用另外一个AAA服务器进行认证。

如果AAA服务器需要询问用户以获取一个新的口令,它就会发送包含对用户询问的Access-Challenge消息到NAS。NAS将此消息发送给用户,然后将用户名和询问响应以Access-Request消息转发给AAA服务器。接着AAA服务器用相应的响应作为回答。

5.1.2 授权

RADIUS授权和认证过程是协同进行的。当RADIUS服务器返回一个Access-Accept消息,该消息也包含了一系列的描述用户具有的会话属性(在RADIUS属性域内)。该信息即对NAS进行授权的信息。NAS实现授权,并通知用户相应的成功或者失败信息。

在接受消息中包含的授权数据一般如下:

• 用户可以访问的服务,包括Telnet、rlogin、或者本地传输(lAT)连接,以及PPP、穿行Internet协议(SlIP)或者EXEC服务。

• 连接参数,包括主机或者客户端IP地址、访问列表和用户超时值。

上图中服务器和客户端的交互实现了对用户进行服务授权。

5.1.3 计费

RADIUS计费通过在会话的开始和结束的时候发送包含有关会话的消息执行。RADIUS计费功能允许在服务开始和结束时发送数据,标识会话期间众多信息中资源的数量。消息被发送到UDP端口1813。

当一个客户端被配置为使用RADIUS计费时,在服务传送开始时,NAS将产生一个计费开始请求包,用来描述被传送的服务类型以及服务将传送到的用户,并向RADIUS服务器发送该计费开始请求包(Accounting-Request)(1),RADIUS服务器收到并成功记录该请求包后要回应一个计费响应(Accounting-Response)(2)。

当用户断开连接时(连接也可以由接入服务器断开)(3),NAS向RADIUS服务器发送一个记费停止请求包(4),其中包含用户上网所使用网络资源的统计信息(上网时长、进/出的字节/包数等),RADIUS服务器会返回对该计费停止请求包的确认(5)。

由于计费是用户敏感的问题 ,我们提供的计费信息要求准确外更要求完备,不能丢失话单,而 RADIUS计费服务器的计费很容易受通讯不畅或计费服务器工作超负荷等意外因素的影响而丢失话单,为此我们提供了本地计费的保护能力,即话单从NAS发送出去以后如果没有收到计费服务器的确认信息我们就认为计费失败 ,并将该话单(不论是实时计费中间话单还是离线话单)送到本地计费数据库中。

5.2 Shared Secrets共享密钥

共享密钥是带外传输(客户端和服务器都知道的一个字符串,不需要单独进行网络传输)的一个随机值。它用来提供报文数据的加密和解密。

推荐共享密钥长度16个字节以保证安全性,这个密钥长度不可能用暴力破解来解密。

现在大规模的RADIUS服务的应用,使得动态密钥协商机制来保护传输的安全性是应该被谨慎使用的。动态密钥协商机制存在的缺陷有:

1、 不能保证在恰当的时刻同步到密钥

2、 即使能发生同步,但当client忙于处理重要请求时,可能把同步新密钥的请求丢了,同时老密钥失效。

3、 相当于当银行给你一个新账号时,你没有收到。同时老账号注销,则可能到老账号的钱不能成功打入。

4、 RADIUS客户端、服务器端与共享密钥一一对应的。也就是说共享密钥对特定的RADIUS服务器和客户端对是唯一的。

那么当在网络传输中有多个共享密钥时,共享密钥通过报文的源IP地址进行区分,如何与RADIUS服务器、客户端对进行一一对应。

5.3 RADIUS代理

对RADIUS代理服务器来说,一个RADIUS服务器在收到一个来自RADIUS客户端(例如NAS服务器)的认证请求(或者计费请求)后,向一个远程的RADIUS服务器提交该请求,收到来自远程服务器的回复后,将这个回复传输给客户,这个回复可能带有反映本地管理策略的变化。使用RADIUS代理服务器通常是为了漫游。漫游功能使两个或更多的管理实体允许每一个用户为某项服务而拨入到任一个实体网络中。

一个RADIUS服务器可以同时作为转送服务器和远程服务器运行。在某些域中作为一个转发服务器,在其他域中作为一个远程服务器。一个转发服务器可以作为任何数量远程服务器的转发者。一个远程服务器可以有任意数量的转发服务器向它转发,也能向任意数量域提供认证。一个转发服务器可以向另一个转发服务器转发,从而生成一个代理链,应当注意避免循环引用。

下面的过程解释了一个代理服务器在一个NAS服务器、转发服务器和远程服务器之间的通信。

1.NAS向一个转发服务器发出接入请求。

2.转发服务器把这个请求转发给一个远程服务器。

3.远程服务器给转发服务器送回接入允许、接入拒绝或接入盘问。此时,服务器送回的是接入允许。

4.转发服务器将接入允许传输给NAS。

转发服务器必须把已经存在于数据包中的任何代理状态属性当作不可见的数据。它的操作禁止依靠被前面服务器添加到代理状态属性中的内容

如果收到来自客户端的请求中有任何代理状态属性,在给客户端的回复中,转发服务器必须在给客户端的回复中包括这些代理状态属性。当转发服务器转发这个请求时,它可以把代理状态属性包含在其中,也可以在已转发的请求中忽略代理状态属性。如果转发服务器在转发的接入请求中忽略了代理状态属性,它必须在响应返回给用户之前把这些代理状态属性添加到该响应中。

本文系转载,原文地址:

http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Seven/Home/Catalog/201309/797634_97665_0.htm


推荐阅读
  • npm 发布 WhalMakeLink 包:链接管理与优化的新选择
    WhalMakeLink 是一个强大的 npm 工具,专为项目管理和优化而设计。它能够自动在项目的 README 文件中生成当前工程目录下所有子项目的链接地址,极大提升了开发效率和文档维护的便捷性。通过简单的 `npm init` 命令即可快速启动和配置该工具,适用于各种复杂项目结构。 示例演示了其基本用法和功能。 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 深入解析 Android Drawable:第六阶段进阶指南 ... [详细]
  • 本文介绍了在Windows 10系统下使用VirtualBox虚拟机环境部署CentOS 7.2,并在其上安装Docker的具体步骤。针对宝塔面板在Docker容器中磁盘空间限制为8GB的问题,提供了详细的解决方案和优化建议,确保用户能够高效利用有限的存储资源。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • 本文详细解析了如何利用Appium与Python在真实设备上执行测试示例的方法。首先,需要开启手机的USB调试功能;其次,通过数据线将手机连接至计算机并授权USB调试权限。最后,在命令行工具中验证设备连接状态,确保一切准备就绪,以便顺利进行测试。 ... [详细]
  • Vue 中实现组件强制重新渲染的有效策略及 eltab 内容更新问题解决方案
    在 Vue 中,仅依靠响应式机制更新数据有时并不足以实现预期效果,此时需要采取手动重新渲染组件的方法来确保数据的实时更新。特别是在处理 `el-tab` 组件内容更新的问题时,通过强制重新渲染可以有效解决数据不同步的情况,从而提升用户体验。此外,还可以结合 Vue 的生命周期钩子和自定义指令,进一步优化组件的渲染性能。 ... [详细]
  • 本文深入解析了Java编译过程,重点探讨了从源代码到字节码文件的转换机制。通过具体示例,如 `Hello.java` 的编译与反编译过程,详细介绍了 `javap -verbose` 命令的使用方法及其在字节码分析中的重要作用。此外,文章还讨论了字节码文件的结构特点及其在不同应用场景中的实际应用,为开发者提供了宝贵的参考。 ... [详细]
author-avatar
傻瑶叫一下来人fd_478
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有