2024年5月11日发(作者:)

一、 概述:

RADIUS协议包括RADIUS AUTHENTICATION PROTOCOL 和 RADIUS

ACCOUNTING PROTOCOL 两部分。RADIUS AUTHENTICATION PROTOCOL 完成

拨号用户的认证工作,而RADIUS ACCOUNTING PROTOCOL 则完成用户服务的计费

任务。

事实上,为了更好地向分散的众多接入用户提供互联网服务,必须对接入服务提供

有效的管理支持。它需要对安全,配置,计费等提供支持,这可以通过对一个用户数据库

的管理来达到, 这个数据库包括认证信息,及细化的服务配置信息和计费信息.通常这个

数据库的维护管理,对用户信息的核实及配置有一个单独的实体完成,这个实体就是

RADIUS server。由于这些管理信息的众多与繁杂,通常RADIUS server放在一个独立

的计算机上,而为了向RADIUS server取得服务,必须首先构建一个RADIUS client,

通常RADIUS client 位于Network Access Server(NAS,网络接入设备)上。

下图示例了这些实体之间的关系:

RADIUS

用户A

SERVER

(AAA)

RADIUS

用户B

CLIENT

(NAS)

INTERNET

用户N

二、 RADIUS认证协议格式:

1、RADIUS AUTHENTICATION PROTOCOL 包格式

下面是协议报文格式:

CODE IDENTIFIER

AUTHENTICATOR

LENGTH

ATTRIBUTES

CODE域可以包括如下一些值;

1 Access-Request

2 Access-Accept

3 Access-Reject

4 Accounting-Request

5 Accounting-Response

11 Access-Challenge

12 Status-Server

13 Status-Client

255 Reserved

其中,CODE 1,2,3,11值为RADIUS AUTHENTICATION PROTOCOL使用,而

CODE 4,5值为RADIUS ACCOUNTING PROTOCOL使用。其余未用或保留.CODE占

一个字节

IDENTIFIER占一个字节,用于匹配请求和应答。

LENGTH 占二个字节,是整个数据报的长度,包括CODE+IDENTIFIER+LENGTH

+AUTHENTICATOR+ATTRIBUTES的所有长度.

AUTHENTICATOR 是16字节的随机数,高位在先,此域用于认证答复和加密口

令字。

ATTRIBUTES是若干属性状态的集合,其长度是不确定的,不同的CODE值可以跟

随不同的属性值.下表是一个总结:

Request Accept Reject Challenge # Attribute

1 0 0 0 1 User—Name

0-1 0 0 0 2

User—Password

0-1 0 0 0 3

CHAP—Password

0-1 0 0 0 4

NAS-IP—Address

0 0 0 5

0—1 NAS—Port

0-1 0-1 0 0 6

Service—Type

0-1 0-1 0 0 7 Framed—Protocol

0-1 0-1 0 0 8 Framed—IP—Address

0-1 0-1 0 0 9 Framed—IP-Net mask

0 0-1 0 0 10 Framed—Routing

0 0+ 0 0 11 Filter-Id

0 0-1 0 0 12 Framed-MTU

0+ 0+ 0 0 13 Framed-Compression

0+ 0+ 0 0 14 Login-IP-Host

0 0 0 15 Login—Service

0—1

0 0-1 0 0 16 Login-TCP—Port

0 0+ 0+ 0+ 18 Reply-Message

0 0 19 Callback-Number

0—1 0—1

0 0-1 0 0 20 Callback-Id

0 0+ 0 0 22 Framed-Route

0 0 0 23 Framed-IPX-Network

0—1

0-1 0 24 State

0—1 0—1

0 0+ 0 0 25 Class

0+ 0+ 0 0+ 26 Vendor-Specific

0 0 27 Session-Timeout

0—1 0—1

0 0-1 0 28 Idle—Timeout

0—1

0 0-1 0 0 29 Termination-Action

0 0 0 30 Called-Station-Id

0—1

0 0 0 31 Calling-Station—Id

0—1