IPV6的DHCP报文中携带BMC的hostname,结果不符合预期

问题描述

DHCPv6的报文内无法携带BMC的HostName,提示Error: A root-only domain name connot be resolved.

环境信息

  • 软件版本:[如 OpenUBMC2512]

重现步骤

  1. [第一步]
    设置BMC主机名为任意值
  2. [第二步]
    抓取DHCPv6报文
  3. [第三步]
    观察DHCPv6报文内是否有HostName

期望结果

HostName与BMC主机名保持一致

实际结果

提示报错:Error: A root-only domain name connot be resolved.

分析结论

DHCPv6:通过 **选项39(Client FQDN)**​ 或 **选项12(Host Name)**​ 携带主机名或完全合格域名。
IPV6的报文发送应该使用了Option39的Client FQDN,需要一个有效的域名。但是BMC主机名是有格式要求的,无法二者同时满足,导致DHCPv6的HostName无法正常解析。
希望DHCPv6的主机名携带位置调整为Option12的HostName处。

@l00012320
目前 openUBMC 对于 DHCPv6 的 option 12 就是显式指定的 hostname(主机名),在测试步骤中注意到 第一步:设置BMC主机名为任意值,请提供提供设置的值或者格式说明,这边在 bmc_core SIG 进行进一步澄清和问题定位。另:如果可以提供 DHCPv6 的抓取报文(pcap 格式)就更好。

@L_Ling
从规范 [RFC 1035 #2.3] 和 [RFC 2132 #3.14] 中可以看到 hostname 确实有字符和长度约束,对应这部分内容需要确认当前 openUBMC 上有对应的约束.

一键收集:
test.tar.gz (8.8 MB)
ipv4报文:
dhcp.pcap.txt (2.8 KB)
ipv6报文:
dhcpv6.pcapng.txt (1.1 KB)

HostName合法,为SNXXXXXXXXXXXXXY

ipv4报文正常解析:

ipv6报文报错,应该是按照39的DomainName进行解析,仅一个字符串不符合域名规范:

分析了你抓取的报文,实际问题是openUBMC当前未填充dhcpV6的option39,工具自动填充了\x00,工具将其解析为".“的字符串,”."是DNS编码的根域名,所以报“ A root-only domain name connot be resolved”的错误。

本质原因是openUBMC未支持将FQDN填充到dhcpV6的option39中,可以在下个版本补充该能力。

未填充Option39,但是即使填充了,BMC主机名也无法在这个Option39呈现吧?

我们的需求是:DHCPv6的报文内携带BMC的主机名。主机名本身不是有要求不能带’.'号吗,那是不是会有冲突?
我预期的是和ipv4保持一致,依旧使用Option12

DHCPv6协议不支持客户端携带option12,我们会在option39携带FQDN,如果需要带主机名,你们可以设置FQDN中携带主机名