DHCP特定供应商vci 选项的解释和揭秘

(Microsoft) 供应商特定 DHCP 选项的解释和揭秘 – Ingmar Verheij

DHCP 服务器可以向客户端发送供应商特定选项以精细地控制配置。Microsoft 客户端开箱即可接收Microsoft Windows 特定选项,而 Microsoft DHCP 服务器能够发送仅由 Windows 客户端接收的 DHCP 选项。

某些应用程序使用DHCP 选项的内容来接收配置数据,例如Microsoft LyncRES Workspace Manager。由于此应用程序仅在 Microsoft Windows 上运行,因此仅将此选项发送到 Windows 客户端是合乎逻辑的。

在本文中,我将解释此机制的工作原理以及如何从非 Microsoft DHCP 服务器(如 Linux 或 Lucent-Alcatel VitalQIP 设备)发送 Microsoft Windows 特定的 DHCP 选项。

供应商类别

DHCP 客户端使用供应商类别来选择性地识别供应商和配置供应商类别的示例有:

  • 适用于Cisco Unified IP 电话 7940G的“Cisco Systems, Inc. IP 电话 CP-7940”
  • “alcatel.noe.0”代表阿尔卡特 IP 触摸电话
  • 适用于所有 Windows 2000 客户端(及更高版本)的“MSFT 5.0”
  • 适用于所有 Windows 98 和 Me 客户端的“MSFT 98”
  • “MSFT”适用于所有 Windows 98、Me 和 2000 客户端

正如您所看到的,供应商类没有命名约定规定,但实现似乎很清楚。微软声称在三个供应商类别中,“MSFT 5.0”使用最多,因为它推翻了“MSFT” ( Windows 98 的市场份额约为0.01%)。

 

 
微软DHCP服务器

Microsoft DHCP 服务器中,Windows Windows 计算机的供应商类别是内置的,其他类别可以通过协议栈(IPv4 或 IPv6)的上下文菜单并选择“定义供应商类别”来添加

Microsoft DHCP 服务器 - 供应商类别 #1Microsoft DHCP 服务器 - 供应商类别 #2

 

Microsoft Windows DHCP 客户端

在 DHCP 请求的第一阶段(即DHCP Discover) 中,客户端在 DHCP 选项 60(或供应商类别标识符)中添加预定义的供应商类别。

对于 Windows 2000 及更高版本(Vista / 7 / 8 / 等),发送“MSFT 5.0” 。由于这是一个广播,所有 DHCP 服务器(以及其他嗅探数据包的计算机)都知道这是一个“Microsoft Windows 2000 客户端”,并且只应发送该供应商的 DHCP 选项。

Wireshark - DHCP 发现 - 60

PS:您的 Microsoft Windows DHCP 客户端中的默认供应商类别可以更改以混淆您的操作系统,但它不受支持 - 请参阅此链接

 

DHCP 优惠

DHCP 报价图DHCP 服务器收到  DHCP Discover后,会  向 DHCP 客户端  返回  包含 DHCP 租约的DHCP Offer 。租约包含 IP 信息(提供的 IP、中继代理、DHCP 服务器)、MAC 地址、选项和其他一些内容。

 

Wireshark - DHCP 优惠

有趣的是,DHCP 服务器仅返回 DHCP 客户端通过其DHCP Discover数据包中的选项 55 请求的选项。默认情况下为:1、3、6、15、31、33、43、44、46、47、121 和 249(有关说明,请参阅IANA)。

Wireshark - DHCP 发现 - 55

我们感兴趣的 DHCP 选项是选项 43 Vendor Specific Information。如上所述,DHCP 选项的值仅发送到具有特定供应商类别(示例中为 MSFT 5.0)的客户端。

 

DHCP 选项 43 – 供应商特定信息

RFC2132中描述了DHCP选项43 ,它解释了该选项的数据包需要如何发送。结构非常简单:第一个字节包含选项代码43 [或十六进制的 0x2B],第二个字节包含包的长度,后跟一个或多个选项。

DHCP 选项 43 图

每个选项 i n( i1、i2 等)具有相同的基本结构:第一个字节包含选项代码第二个字节包含包的长度,后跟选项的值。

图中的 DHCP 选项 43

 

RFC 中没有(明确)记录的是每个选项都以值为 0 (0x00) 的字节(分隔符)结尾。这意味着每个选项 i n(i1、i2 等)实际上具有以下结构:

DHCP 选项 43 - 带分隔符 - 图表

 

例子

以下是供应商特定 DHCP 选项图的示例

DHCP 选项 43 示例 - 带分隔符

在示例中,我设置了三个供应商特定选项(供应商类别为 MSFT 5.0,适用于 Windows 2000 客户端)。

  • Microsoft DHCP 服务器 - 预定义选项和值带有字符串值Ingmar 的选项 10
  • 带有字符串值Verheij 的选项 11
  • 带有字符串值的选项 12 www.ingmarverheij.com

默认情况下,只有选项 001、002 和 003 可用于Microsoft Windows 2000 选项,但可以通过协议栈(IPv4 或 IPv6)的上下文菜单并选择“设置预定义选项”来扩展这些选项。

 

供应商特定选项的值是通过范围或服务器选项设置的,在本例中,我已在范围选项中配置它们。

Microsoft DHCP 服务器 - 范围选项

 
DHCP 优惠

DHCP 客户端接收包含指定供应商特定选项的DHCP Offer(使用DHCP 客户端工具):

 

dhcptest - DHCP 提供 - 43 - 详细

收到的 DHCP 提供包含多个选项,包括子网掩码 [1]、域名 [15]、域名服务器 [6] 和供应商特定选项[43],就像示例图中所示的那样。你看不到的是包含代码[ 43]和长度[43字节]的DHCP选项数据包。Wireshark确实显示了此信息。

Wireshark - DHCP 优惠 - 43

在两次捕获中可以清楚地看到,每个选项(i1、i2 等)均以 0 (0x00) 字节结尾。尽管 RFC 中没有提及这一点,但 DHCP 客户端需要识别选项的结尾,从而允许客户端分隔选项。

该值作为十六进制字节值发送。可以在此处将十六进制值转换为字符串,也可以在此处将字符串转换为十六进制。

 
 
从注册表中读取 DHCP 选项

您还可以从注册表中读取客户端收到的供应商特定 DHCP 选项:

读取 Dhcp 选项 - 43

我编写了一个 PowerShell 脚本,它从注册表中读取收到的 DHCP 选项,并为您格式化它们。该脚本可以在这里找到。

 

非 Microsoft DHCP 服务器

如果您必须配置默认情况下不提供 (Microsoft) 供应商特定 DHCP 选项的非 Microsoft DHCP 服务器,则此信息尤其有价值。

 

Linux DHCP 服务器

如果您有 Linux DHCP 服务器,可以在/etc/dhcp/dhcpd.conf配置文件中设置供应商特定选项。这些选项可以在子类中设置,您可以在子类中根据供应商类标识符进行过滤。您可以在下面找到一个示例配置,其中显示了与前面示例中相同的供应商特定选项。

dhcpd配置文件

ddns 更新样式无;

默认租用时间 600;
最大租用时间 7200;

选项域名“domain.local”;
选项域名服务器 192.168.0.1;
选项路由器 192.168.0.1;

权威性;
日志设施本地7;

子网 192.168.0.0 网络掩码 255.255.255.0 {
  范围 192.168.0.100 192.168.0.200;
}

类“MSFT 5.0”{
   如果选项供应商类别标识符 = "MSFT 5.0" 则匹配;
   选项供应商类别标识符“MSFT 5.0”;
   选项供应商封装选项0a:07:49:6e:67:6d:61:72:00:56:65:72:68:65:69;6a:00:77:77:77:2e:69: 6e:67:6d:61:72:76:75:72:68:65:69:6a:2e:63:6f:6d:00;
}

类“MSFT 98”{
   如果选项供应商类别标识符 =“MSFT 98”则匹配;
   选项供应商类别标识符“MSFT 98”;
   选项供应商封装选项0a:07:49:6e:67:6d:61:72:00:56:65:72:68:65:69;6a:00:77:77:77:2e:69: 6e:67:6d:61:72:76:75:72:68:65:69:6a:2e:63:6f:6d:00;
}

类“MSFT”{
   如果选项供应商类别标识符=“MSFT”则匹配;
   选项供应商类别标识符“MSFT;
   选项供应商封装选项0a:07:49:6e:67:6d:61:72:00:56:65:72:68:65:69;6a:00:77:77:77:2e:69: 6e:67:6d:61:72:76:75:72:68:65:69:6a:2e:63:6f:6d:00;
}

 

 

阿尔卡特朗讯 VitalQIP

由于供应商特定信息被认为是不透明的数据类型,因此用户必须以原始格式定义选项数据。对于 VitalQIP 设备,可以通过两种方式提供供应商特定信息:

VitalQIP - 供应商特定选项1. DHCP 选项模板 –可以在 DHCP 选项模板 - 修改页面上提供供应商特定信息。在“活动选项”区域中,选择“供应商特定信息”,然后在“值”字段中输入信息。为了将控制器 IP 地址包含在 DHCP 选项 43 消息中,请将信息作为单个十六进制值输入到 QIP 中的 DHCP 选项模板:[ip hex]。要使用 DHCP 选项 43 发送多个 IP 地址,请将信息作为单个十六进制值输入到 QIP 中的 DHCP 选项模板:[ip hex ip hex] 而不是 [ip hex]、[ip hex]。在这种情况下,中间的逗号会导致 DHCP 解析从 QIP 传递的字符串时出现问题。来源cisco.com

 



2. 用户退出脚本– 在供应商特定的 DHCP 选项模板中设置占位符,例如 [VENDOR-SPECIFIC-OPT1],它通过用户退出脚本 ( 
qipdhcpuserexit )被值替换。用户出口脚本读取托管文件(可通过DNS > 托管文件访问),其中包含 [块引号] 中的十六进制值。例如:

[供应商特定-OPT1]=[0a07496e676d617200566572686569;6a007777772e696e676d61727675726865696a2e636f6d00]

 

 

创建字符串

创建供应商特定字符串阅读本文后,您现在了解了供应商特定的 DHCP 选项如何工作以及如何为非 Microsoft DHCP 服务器配置它们。我可以想象您不想手动创建选项字符串(我也不想),因此创建了一个小型 .NET 应用程序来为您执行此操作。

用法很简单:只需添加选项,指定(或不指定)分隔符,然后单击“生成”

4.0 ice cream sandwich - How do I change my "Vendor Class ID"? - Android Enthusiasts Stack Exchange

[dhcp client] Tuning vendor-class-identifier - dhcp option 60 | Ubiquiti Community

[Solved] Changing DHCP vendor class with systemd-networkd / Networking, Server, and Protection / Arch Linux Forums

[ubuntu] DHCP Scope 43 [Archive] - Ubuntu Forums

[ubuntu] what is the default vendor class identifier ?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章