一次PXE服务器上IPV6问题的记录

问题描述:

现场反馈使用我们的服务器进行PXE系统安装时 ,不能正常的获取系统文件,会卡在交互界面,并且经过测试发现,使用IPV6全长地址就有问题,使用短的地址就正常(比如fd00:66::0/112地址池),使用IPV4也正常,KVM的报错显示如下。

正面定位:

通过抓包分析可以看到报错情况如下,其中fd00:22:1ce0:1000:2000:3000:4001:1001本应该是TFTP地址,fd00:22:1ce0:1000:2000:3000:4001:975c是服务器网口的地址,抓包可见服务器网口在获取grubx64.efi这一步时把报文发给了fd00:22:1ce0:1000:2000:3000:4001:0这个不存在的地址,随后返回地址不可达,因此正面分析看和服务器是有关系的。

其它想法及对应验证:

  1. 是和服务器特定网卡相关吗 ---搭环境复现后换网卡尝试
  2. 和服务器CPU平台或者BIOS配置相关吗 ---搭环境复现后换不同平台CPU尝试
  3. 友商有这个问题吗 ---搭环境复现后换友商机器尝试
  4. 不同OS有这个问题吗 ---搭环境复现后换不同OS尝试

搭环境测试:

此前我写过一篇PXE服务器搭建SOP,在此基础上改成IPV6的并不复杂,按照AI指导对应改一下dhcpd6.conf文件,grub.cfg和tftp的配置文件中涉及IP的也需要修改下,直接使用了和现场不同的OS进行搭建。搭环境测试复现问题后上面四个方向都有了答案,不同网卡都能复现、intel平台也能复现、友商的hygon服务器也能复现、不同OS都有这个问题。并且发现使用grubx64.efi引导没有问题,只有使用bootx64.efi才有这个问题!

Dhcpd6.conf文件配置如下:

default-lease-time 600;

max-lease-time 7200;

log-facility local7;

必须开启 PXE 引导

allow booting;

allow bootp;

PXE + UEFI 架构判断

option dhcp6.client-arch-type code 61 = array of unsigned integer 16;

option dhcp6.bootfile-url code 59 = string;

你的 IPv6 网段

subnet6 fd00:22:1ce0:1000::/64 {

地址池

range6 fd00:22:1ce0:1000:2000:3000:4001:1000 fd00:22:1ce0:1000:2000:3000:4001:FFF0;

强制给 客户端 固定 IPv6(你要的 957c)

host client1 {

客户端 MAC 地址(你日志里的 MAC)

hardware ethernet 40:73:4d:09:e8:3a;

fixed-address6 fd00:22:1ce0:1000:2000:3000:4001:957c;

}

UEFI PXE 引导(grubx64.efi)

if option dhcp6.client-arch-type = 00:07 {

option dhcp6.bootfile-url "tftp://fd00:22:1ce0:1000:2000:3000:4001:1001/uefi_pxe/grubx64.efi";

}

Legacy PXE

else {

option dhcp6.bootfile-url "tftp://fd00:22:1ce0:1000:2000:3000:4001:1001/legacy_pxe/pxelinux.0";

}

}

最终结论和猜想:

最终问题根因没能解决,因为不同平台不同网卡和友商服务器都有这个问题,解决它的必要性不大了,倒不如规避掉问题,根据这个问题画像来看,大概率是UEFI 固件的问题,结合不同平台和厂商都有问题,大概率是EDK II 源码的问题,服务器厂商也未必有解决的能力

相关推荐
ajassi200038 分钟前
AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南
运维·服务器·人工智能·ai·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎42 分钟前
linux 进程信号(下)
linux·运维·服务器
skywalk81631 小时前
在FreeBSD系统的linux仿真环境下安装和使用kiro 这个亚马逊的AI agent
linux·人工智能·freebsd·kiro
Mikko71 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
蓝胖的四次元口袋1 小时前
Jenkins知识梳理(2)
运维·jenkins
yumgpkpm1 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
Madison-No71 小时前
多语言聊天大模型--测试报告
linux·git·python·selenium·jmeter·自动化·postman
Liuqy-051 小时前
特殊进程——孤儿、僵尸、守护进程
linux·运维·服务器
流浪0012 小时前
Linux系统篇47——线程(十二) POSIX 信号量与环形队列,把判空判满提前到访问之前
linux·操作系统·线程·信号量·环形队列
咖丨喱2 小时前
【MMC Core + hc16 Host(WiFi SDIO 如何落到控制器)】
linux