DHCP option
dhcp报文中的一个选项,该选项在dhcp报文中为可变长的字段,option选项中包含了部分租约信息、报文类型等。option选项中最多可以包括255个option,最少为1个option。
一、option 82
1、说明
option 82又称为中继代理信息选项(relay agent information option),是dhcp报文中option内容的一部分。rfc3046中定义了option 82,其位置在option 255之前而在其他option之后。option 82中可以包含最多255个sub-option,若定义了option 82,至少要定义一个sub-option。当dhcp client发送请求报文到dhcp server时,若需要经过dhcp中继,则由dhcp中继将option 82添加到请求报文中。option 82包含很多sub-option,目前option 82中常用的sub-option 1、sub-option 2和sub-option 5。
sub-option 1
sub-option 1是option 82的一个子选项,为代理电路id(即circuit id)子项。子选项通常在dhcp中继设备上配置,定义了在传输报文的时候要携带dhcp客户端所连接交换机端口的vlan-id及二层端口号。通常sub-option 1与sub-option 2子选项要共同使用来标识dhcp源端的信息。
sub-option 2
sub-option 2也是option 82的一个子选项,为代理远程id(即remote id)子项。该子选项也通常在dhcp中继设备上配置,定义了在传输报文的时候要携带中继设备的mac地址信息。通常与sub-option 1子选项要共同使用来标识dhcp源端的信息。
sub-option 5
sub-option 5也是option 82的一个子选项。为链路选择(link selection)子项,该选项中包含了dhcp中继添加的ip地址。这样dhcp server在分配ip地址给dhcp客户端的时候就可以分配与该地址同网段的ip地址。
2、 option 82报文组成
option 82报文结构如图1-5。
在dhcp报文中有一个options字段,该字段可以为空,也可以为某一个特性的option,option 82就是其中的一种option,可以有多个sub-option 组成。组成如下:
code:标识了中继代理信息选项的序号。本报文中序号为82,即option 82。option 82 在其他option之后,在option 255 之前。
len:为代理信息域(agent information field)的长度。
agent information field:代理信息域。在该字段中指定了使用的sub-option。
sub-option报文结构
sub-option报文的组成如下:
subopt:子选项序号,本报文中为sub-option 1、sub-option 2和sub-option 5。各子选项含义如下:
1表示代理电路id(circuit id)子项
2表示代理远程id(remote id)子项
5表示链路选择(link selection)子项
len:标识sub-option value域的长度。
sub-option value:sub-option的值。例如sub-option 1对应的值为circuit id。
3、标准模式与华为固网模式
dhcp relay支持option 82,在收到从client到server的请求报文中添加option 82,以标识用户的位置信息。现在只添加sub-option 1和sub-option 2,不添加sub-option5。在标准模式,sub-option 1是接收报文的二层端口号和vlan号,sub-option 2是接收报文设备的mac地址。
为了更加精确地定位用户位置信息,我司针对dslam应用提出ip dslam用户物理位置定位解决方案,定义了dhcp option 82的华为固网模式,其中option 82的sub-option1表示“节点标识+框号/槽号/子槽/端口号+vlan”;sub-option2没有改变,表示的是的relay系统mac地址;sub-option5 relay不添加。
option 82的sub-option1中的节点标识为字符串,缺省可以采用设备的管理接口mac地址,形如:00-e0-fc-0d-dc-ec。为了提高维护的方便性,也允许网络管理者通过配置修改用户节点标识,可以选择是用relay的桥mac或设备名(通过sysname配置的),也可以由用户自行输入字符串。
华为固网模式option 82中sub-option 1的标识格式:
accessnodeidentifier eth frame/slot/subslot/port:vlan
对各段的解释如下:
accessnodeidentifier:接入节点标识,长度不超过50个字符的字符串,缺省为桥mac
frame:框号,不支持的为0
eth:以太端口类型
slot:槽号
subslot:子槽号
port:端口号
vlan:vlan标识
4、 相关规范
与dhcp中继支持option 82相关的协议规范有:
rfc2131 dynamic host configuration protocol
rfc3046 dhcp relay agent information option
5、 dhcp 中继支持option 82工作机制
dhcp客户端通过dhcp中继从dhcp服务器获取ip地址的过程与同网段的dhcp获取过程完全相同,都要经历发现、提供、选择和确认四个阶段,详细的过程请参考本手册“网络层协议”的dhcp部分。这里将只介绍dhcp中继支持option 82时的工作机制,具体如下:
dhcp客户端在初始化时以广播的形式发送请求报文;
若本地网络存在dhcp服务器,则客户端可以直接从该服务器获取ip地址。
若本地网络没有dhcp服务器,则与本网络相连的dhcp中继设备对该广播报文进行相应的处理。dhcp中继设备将检查报文中是否已有option 82选项,进行相应的处理。
如果报文中已有option 82,设备按照配置的策略对该报文进行处理(丢弃、用中继设备本身的option 82项替代报文中原有的option 82项或保持报文原有的option 82项),然后将请求报文转发给dhcp服务器。
若请求报文中没有option 82选项,则dhcp中继设备将option 82选项添加到报文中后转发给dhcp服务器。此时,请求报文中将包含了dhcp客户端所连接的交换机端口的mac地址、所属的vlan以及dhcp中继设备本身的mac地址。
dhcp服务器收到dhcp中继设备转发的dhcp请求报文后,将记录报文中option选项所携带的信息,然后将带着dhcp配置信息以及option 82信息的报文发给dhcp中继。
dhcp中继收到dhcp服务器的返回报文后将剥离报文中的option 82信息,然后将带有dhcp配置信息的报文转发给dhcp客户端。
dhcp客户端发送的请求报文有四种,分别为dhcp_discover报文、dhcp_request报文、dhcp_release报文和dhcp_inform报文,dhcp中继设备将在四种报文中都添加option 82选项,因为不同厂商生产的dhcp服务器设备对请求报文的处理机制不同,有些设备处理dhcp_discover报文中的option 82信息,而有些处理dhcp_request报文中的option 82信息。
二、option 60
首先还是看看RFC咋说的吧。DHCP 是RFC2131定义,DHCP 2132定义了dhcp option .
9.13. Vendor class identifier
This option is used by DHCP clients to optionally identify the vendor
type and configuration of a DHCP client. The information is a string
of n octets, interpreted by servers. Vendors may choose to define
specific vendor class identifiers to convey particular configuration
or other identification information about a client. For example, the
identifier may encode the client's hardware configuration. Servers
not equipped to interpret the class-specific information sent by a
client MUST ignore it (although it may be reported). Servers that
respond SHOULD only use option 43 to return the vendor-specific
information to the client.
(这个选项作用于客户端可选地识别客户端厂商类型和配置,这个信息是n个8位编码,由dhcp服务端解析,厂商可能会为客户端选择定义特殊的厂商类标识符信息,以便表达特殊的配置或者其他关于客户端的信息。比如:这个标识符可能编码了客户端的硬件配置。客户端发送过来的服务器不能解析的类规范信息必须被忽略(尽管可能会有报告),服务器响应厂商规范信息到客户端应该仅仅通过Option 43来完成。
The code for this option is 60, and its minimum length is 1.
Code Len Vendor class Identifier
+-----+-----+-----+-----+---
| 60 | n | i1 | i2 | ...
+-----+-----+-----+-----+---
从rfc中可以看出,dhcp 60选项主要是用于客户端报告自身厂商以及配置信息的,服务器不能解析的 类标识符的应该被忽略,这个选项只是客户端发包报告自己的信息,客户端和服务器端交换厂商信息的应该是由option 43来完成。
未完,待续。。。(抓包观察下pxe客户端的信息,这TM做PXE的启动很久了,一直纠结这个60是干嘛的,而且windowsDHCP服务器我没加60也没见怎么着)
接着来吧,看看实际的包是啥样 ,测试环境为将笔记本和DHCP服务器用一根网线直连。
首先重启笔记本,然后启动的时候按F12让机器从网络启动,服务端进行抓包,查看收到的来自于笔记本的DHCP请求的包,如下图
可以清楚的看到,wireshark抓到的来自于笔记本的网卡启动的DHCP请求包含option 60选项,wireshark定义的option 60为 厂商类标识符,值为"PXEClient:Arch:00000:UNDI:002001"
然后启动系统,查看笔记本操作系统发出的DHCP请求包内容,如下图
从图中可以看到操作系统发出的DHCP请求也包含option 60选项,值为“MSFT 5.0"
在internet上看到的一段文字:
1、支持OPTION60(Authentication for DHCP Messages)
功能描述:
OPTION 60功能用来完成基于标准DHCP协议,以在客户端输入用户名和密码的方式进行的地址鉴权。在机顶盒中只保留应用层帐号和密码,应用层帐号为8位数字,在OPTION60使用接入层帐号,帐号为“ad”+应用层帐号+“@iptv”,密码和应用层密码一致,目前密码暂定为固定值123465。 应用层用户名和密码一旦输入之后,应储存在硬件之中。当PPPOE与DHCP接入模式相切换时如果之前已经输入过应用层用户名与密码,则要求无需再次输入,直接过渡至新的接入方式。
2、支持OPTION 125(Vendor-ldentifying Vendor Options)
功能描述:
OPTION 125功能是对标准DHCP协议一个补充标准,该功能的标准定义在RFC 3925中。DHCP服务器在完成验证将客户端的IP地址等信息封装成DHCP OFFER包的时候,将OPTION 125信息封装DHCP OFFER包中再发送给客户端。 客户端收到OFFER包以后,首先查看该OFFER包所带的OPTION 125的“Option-data 1”字段中所填写的特征值,并与预先存储的信息进行比对。比对结果为相同则使用此OFFER,如果比对结果不同或OFFER包中不带OPTION 125,则将此OFFER丢弃。
三、option 43
option43属性主要应用在WLAN中AP设备从dhcp服务器获取地址后,通过dhcp服务器下发的option43属性去找AC注册,一般option43属性内容由AC侧工程师提供。
S8500在1278P08版本配置dhcp的option43属性需要注意:
例如下列vlan5是设备配置完显示的数据。
interface Vlan-interface5
description To Wlan-TEST
ip binding vpn-instance Wlan-NM
ip address 10.16.100.1 255.255.255.0
dhcp select interface
dhcp server option 43 hex 80 0B 00 00 02 0A 10 04 0A 0A 10 04 0B
其中option43内容配置时直接输入“ dhcp server option 43 hex 80 0B 00 00 02 0A 10 04 0A 0A 10 04 0B”不能配置成功,在配置时只能输入“ dhcp server option 43 hex 800B 0000 020A 1004 0A0A 1004 0B”才能输入成功。
由于配置命令与设备显示命令行不一致,所以在重启S8500时一定要注意option43属性。重启S8500时是在flash中vrpcfg.cfg文件读取命令,所以重启后必须重新添加option43属性“ dhcp server option 43 hex 800B 0000 020A 1004 0A0A 1004 0B”,否则重启后设备会丢失option43属性配置影响WLAN业务。