l00012320
(kunlun_luzhanghui)
1
问题描述
DHCPv6的报文内无法携带BMC的HostName,提示Error: A root-only domain name connot be resolved.
环境信息
重现步骤
- [第一步]
设置BMC主机名为任意值
- [第二步]
抓取DHCPv6报文
- [第三步]
观察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 上有对应的约束.
l00012320
(kunlun_luzhanghui)
3
一键收集:
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进行解析,仅一个字符串不符合域名规范:
L_Ling
(lixiaoning)
4
分析了你抓取的报文,实际问题是openUBMC当前未填充dhcpV6的option39,工具自动填充了\x00,工具将其解析为".“的字符串,”."是DNS编码的根域名,所以报“ A root-only domain name connot be resolved”的错误。
本质原因是openUBMC未支持将FQDN填充到dhcpV6的option39中,可以在下个版本补充该能力。
l00012320
(kunlun_luzhanghui)
5
未填充Option39,但是即使填充了,BMC主机名也无法在这个Option39呈现吧?
我们的需求是:DHCPv6的报文内携带BMC的主机名。主机名本身不是有要求不能带’.'号吗,那是不是会有冲突?
我预期的是和ipv4保持一致,依旧使用Option12
L_Ling
(lixiaoning)
6
DHCPv6协议不支持客户端携带option12,我们会在option39携带FQDN,如果需要带主机名,你们可以设置FQDN中携带主机名