美文网首页
radius协议报文格式

radius协议报文格式

作者: 小破孩码农 | 来源:发表于2018-09-26 18:10 被阅读0次

    1、RADIUS协议的包格式

    RADIUS数据包是被封装在UDP的数据域中的。

    RADIUS的包数据格式如下所示,各域(Fields)的先后次序是从左到右。

    2、 Code域

    Code域有一个字节长度,用来标示RADIUS通信包的类型。当收到一个非法的包类型,将被丢弃。

    Code可代表如下类型(十进制):

    Code=1 Access-Request

    Code=2 Access-Accept

    Code=3 Access-Reject

    Code=4 Accounting-Request

    Code=5 Accounting-Response

    Code=11 Access-Challenge

    Code=12 Status-Server (experimental)

    Code=13 Status-Client (experimental)

    Code=65 业务修改请求消息

    Code=66 业务修改请求回应消息

    Code=67 业务修改请求回应拒绝消息

    Code=255 Reserved

    其中12 13 255 为保留的Code值一般不会遇到,1 2 3 4 5 11比较常见,分别标明报文类型为认证请求、认证接受、认证拒绝、计费请求、计费回应、计费成功和访问质询。

    3、Identifier域

    Identifier域长度为1个字节,用于匹配请求的回应。如果在短时间内RADIUS服务器收到从相同的源IP,相同源端口,相同标识域的报文,则认为收到的是重复的请求。

    4、Length域

    Length域占两个字节,用于指明报文的有效长度,多出长度域的字节部分将被视为填充。在接收时被忽略。如果报文长度小于长度域中的值,整个报文将被丢弃。长度域的范围在20和4096之间。

    5、Authenticator

    认证字域占用16个字节,用于Radius Client 和Server之间消息认证的有效性,和密码隐藏算法。

    访问请求Access-Request报文中的认证字的值是16字节随机数,认证字的值要不能被预测并且在一个共享密钥的生命期内唯一。

    访问请求Access-Request认证字

    在Access-Request包中认证字的值是16字节随机数,认证字的值要不能被预测,并且在一个共享密钥的生命期内唯一;

    访问回应认证字

    Access-Accept Access-Reject 和Access-Challenge包中的认证字称为访问回应认证字,访问回应认证字的值定义为MD5(Code+ID+Length+RequestAuth+Attributes+Secret);

    计费请求Accounting-Request认证字

    在计费请求包中的认证字域称为计费请求认证字,它是一个16字节的MD5校验和,计费请求认证字的值定义为MD5(Code + Identifier + Length + 16 zero octets + request attributes +shared secret);

    计费回应Accounting-Response认证字

    在计费回应报文中的认证字域称为计费回应认证字,它的值定义为MD5(Accounting-Response Code + Identifier + Length + the RequestAuthenticator field from the Accounting-Request packet being replied to +the response attributes + shared secret);

    6、Attributes域

    属性域的长度是可变的,它是一个由业务类型必需的属性和可选属性组成的属性链。一个属性包含如下三个部分:

    Type域

    Type域长度为一个字节。数值192-223被保留作实验使用;数值224-240被保留作特殊的应用;数值241-255被不建议使用。RADIUS服务器和客户机将可能忽略未知的Type值。被定义的值如下所列:

    1User-Namestring

    2Use-Passwordstring

    3CHAP-Passwordstring

    4NAS-IP-Addressaddress

    5NAS-Portstring

    6Service-Typeinteger

    7Framed-Protocolinteger

    8Framed-IP-Addressaddress

    9Framed-IP-Netmaskaddress

    10Framed-Routinginteger

    11Filter-Idstring

    12Framed-MTUinteger

    13Framed-Compressioninteger

    14Login-IP-Hostaddress

    15Login-Serviceinteger

    16Login-TCP-Portinteger

    17(unassigned)

    18Reply-Messagestring

    19Callback-Numberstring

    20Callback-Idstring

    21(unassigned)

    22Framed-Routeinteger

    23Framed-IPX-Networkinteger

    24Statestring

    25Classstring

    26Vendor-Specificstring

    27Session-Timeoutinteger

    28Idle-Timeoutinteger

    29Termination-Actioninteger

    30Called-Station-Idstring

    31Calling-Station-Idstring

    32NAS-Identifierstring

    33Proxy-Statestring

    34Login-LAT-Servicestring

    35Login-LAT-Nodestring

    36Login-LAT-Groupstring

    37Framed-AppleTalk-Linkinteger

    38Framed-AppleTalk-Networkinteger

    39Framed-AppleTalk-Zonestring

    40Acct-Status-Typeinteger

    41Acct-Delay-Timeinteger

    42Acct-Input-Octetsinteger

    43Acct-Output-Octetsinteger

    44Acct-Session-Idstring

    45Acct-Authenticinteger

    46Acct-Session-Timeinteger

    47Acct-Input-Packetsinteger

    48Acct-Output-Packetsinteger

    49Acct-Terminate-Causeinteger

    50Acct-Multi-Session-Idstring

    51Acct-Link-Countinteger

    52-59(unassigned)

    60CHAP-Challengestring

    61NAS-Port-Typeinteger

    62Port-Limitinteger

    63Login-LAT-Portstring

    60CHAP-Challengestring

    61NAS-Port-Typeinteger

    62Port-Limitinteger

    63Login-LAT-Portstring

    70ARAP-Passwordstring

    71ARAP-Featuresstring

    72ARAP-Zone-Accessinteger

    73ARAP-Securityinteger

    74ARAP-Security-Datastring

    75Password-Retryinteger

    76Promptinteger

    77Connect-Infostring

    78Configuration-Tokenstring

    79EAP-Messagestring

    80Message-Authenticatorstring# 18 octets

    84ARAP-Challenge-Responsestring# 10 octets

    85Acct-Interim-Intervalinteger

    87NAS-Port-Idstring

    88Framed-Poolstring

    Length域

    长度域长度为一个字节,指明了一个属性的类型、长度和值域的总长度。如果在认证请求报文中携带有属性长度非法的属性,则必须回应访问拒绝报文;如果在访问回应报文中存在非法的属性长度,这个报文必须被直接丢弃或被认为是访问拒绝报文。

    Value域

    值域由零或多个字节组成包,含详细的属性信息,它的格式由属性的长度和类型域决定。注意RADIUS 中没有一个类型的值域是以NULL(hex 00)结尾,的也就是说值域中是没有结束符的,服务器和客户端需要能够处理内嵌的NULL。

    值域的数据类型是下列5 种类型之一。“text”类型是“string”类型的子集:

    text 1-253 字节长

    string 1-253 字节长可以包含二进制数据

    address 4 字节高位在前

    integer 4 字节无符号数高位在前

    time 4 字节无符号数高位在前表示从1970 年1 月1 日零点零时零秒到现在的秒数

    相关文章

      网友评论

          本文标题:radius协议报文格式

          本文链接:https://www.haomeiwen.com/subject/crjjoftx.html