目前,我正在使用Wireshark来分析无线设备和我的DHCP服务器之间的DHCP进程(在本例中,DHCP是我的Wi路由器)。在我测试的所有设备上,我注意到每个设备都在其DHCP发现包中提供了“供应商类标识符”(或Wireshark上的选项60 )。我看到的供应商类标识符的一些示例如下:
“Androiddhcp-13”对应于我的Android手机(运行Android 13),而‘MSFT5.0’对应于我的Windows笔记本电脑。“udhcp 1.23.2”对应于智能家居设备。
我能够在android-dhcp-13和MSFT5.0上找到更多的信息,但是我没有找到多少关于'udhcp‘和版本号意味着什么的信息?另外,供应商类标识符是否是特定于模型的(例如,所有第2代Google将使用供应商类标识符x)?或者,制造商会通过将普通固件更新推送到设备上来改变这种情况吗?最重要的是,为什么设备会为DHCP服务器提供这个参数?DHCP服务器是否使用此供应商ID向设备提供特定参数?
发布于 2023-05-03 00:25:24
基本上,供应商类标识符用于通知DHCP服务器特定供应商和/或模型信息。版本号没有任何特殊的含义,因为主要的DHCP服务器将匹配基于子字符串(或regex)的VCI类信息。
此匹配在DHCP服务器端执行,以:
所有这些都是可选的,因此默认情况下,DHCP服务器不会解释选项60的值,因此需要对其进行配置。
发布于 2023-05-04 21:38:04
我找不到多少关于'udhcp‘和版本号意味着什么的信息?
当然,这是一个实时Linux引导系统或类似的系统。当一个Linux启动时,它启动一个内核,内核加载一个包含最小Linux文件系统的initrd.gz。这通常是基于百事箱的,以节省空间和使事情更容易。Busybox提供了一个名为"udhcpc“的DHCP客户机。
看看udhcpc的代码,我们看到:
https://elixir.bootlin.com/busybox/1.23.2/source/networking/udhcp/dhcpc.c#L1266
str_V = "udhcp "BB_VER;
稍后,str_V作为“供应商类”的内容加载(选项60)。
https://elixir.bootlin.com/busybox/1.23.2/source/networking/udhcp/dhcpc.c#L1366
client_config.vendorclass = alloc_dhcp_option(DHCP_VENDOR, str_V, 0);
当使用busybox版本1.23.2时,您将得到
BB_VER = 1.23.2 然后,客户端将使用Vendor类字符串:
udhcp 1.23.2
这正是您在Wireshark捕获的DHCPDISCOVEY数据包中看到的,当客户端在引导时启动DORA序列时。
关于“供应商类”的含义,您可以看到
RFC2132 DHCP选项与BOOTP供应商扩展
9.13.供应商类标识符
DHCP客户端使用此选项可选择地标识DHCP客户端的供应商类型和配置。该信息是由服务器解释的n个八进制字符串。供应商可以选择定义特定的供应商类别标识符,以传递有关客户端的特定配置或其他标识信息。例如,标识符可以编码客户端的硬件配置。没有准备好解释客户端发送的类特定信息的服务器必须忽略它(尽管它可能会被报告)。响应的服务器应该只使用选项43将特定于供应商的信息返回给客户端。此选项的代码为60,最小长度为1。代码Len Vendor类标识符 +
其他标准,如PXE,定义了供应商类标识符的特定内容,在本例中,该标准告诉DHCP或proxyDHCP服务器,引导客户端不仅需要IP和相关选项,还需要网络引导,这需要额外的参数,如TFTP服务器的IP和NBP (网络启动程序)。
所有通过PXE标准v2.1引导客户端的PXE应该向供应商类标识符中添加一个表单的字符串:
“PXEClient:Arch:xxxxx:UNDI:yyyzzz”--用于客户端和服务器之间的事务。“PXEServer”-用于服务器之间的事务。(这些字符串区分大小写。此字段不能为null终止。)标记93和94中的信息嵌入到类标识符字符串xxxxx = Client Sys Architecture 0- 65535 yyy = UNDI主版本0- 255 zzz = UNDI次要版本0- 255分隔符是“:”(冒号)
https://serverfault.com/questions/1130222
复制相似问题