PXE安装网络引导的核心是DHCP+TFTP+HTTP(或NFS/FTP)三组服务器协同工作,缺一不可。在运维实操中,很多朋友卡在“PXE能获取IP但进不了安装界面”,根源往往是把这三个角色的职责搞混了,今天咱们就掰开揉碎,把PXE安装需要开启哪些服务器以及每台服务器的脾气秉性讲清楚。
理解PXE的“找妈妈”逻辑
PXE(Preboot Execution Environment)是Intel在90年代末定义的网络引导标准,它的工作流程像极了新生儿找妈妈:
- 第一步(找路):客户端网卡发出广播“我在哪,谁是管事的?”这是DHCP在应答。
- 第二步(认门):DHCP不光给IP,还悄悄告诉客户端“你的引导文件在某个TFTP服务器上”。
- 第三步(拿钥匙):客户端通过TFTP下载一个叫
pxelinux.0(BIOS)或grubx64.efi(UEFI)的小程序。 - 第四步(开锁):这个程序读取配置文件,告诉你内核和initrd镜像去哪下载。
- 第五步(装系统):内核起来后,挂载HTTP/NFS/FTP共享的安装源目录,开始正式安装。
核心结论:客户端启动阶段只依赖DHCP和TFTP,进入安装阶段后依赖HTTP/NFS/FTP,标准的PXE服务器集群至少需要开启以下三种服务。
必须开启的三大核心服务器
DHCP服务器:系统的“指路人”
这是PXE的第一道关卡,它的任务不只是分配IP,还要“多管闲事”地通过DHCP选项把TFTP服务器的地址塞给客户端。
需要开启的服务器角色:
- 安装
dhcpd(Linux)或配置路由器上的DHCP服务。 - 开启67/UDP端口监听(DHCP默认端口)。
关键配置项(以ISC DHCP为例)清单:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
# 重点:告诉客户端去哪找引导文件
next-server 192.168.1.10; # TFTP服务器IP
filename "pxelinux.0"; # BIOS引导文件
# 如果是UEFI机器,需改为 filename "grubx64.efi";
}
实操要点:很多人在防火墙放行了TFTP却忘记放行DHCP,导致客户端根本进不了PXE环境,请务必确保交换机端口和服务器防火墙都放行UDP 67/68,如果你在局域网里测试,建议开启DHCP的日志功能,因为排查“明明有DHCP却获取不到IP”的问题时,日志是唯一说实话的家伙。
TFTP服务器:系统的“快递员”
TFTP是PXE生与死的分水岭,它极其简单,基于UDP 69端口,但只擅长传小文件,它负责把引导程序从服务器搬到客户端内存里。
需要开启的服务器角色:
- 安装
tftp-server或tftpd-hpa。 - 开启69/UDP端口监听。
需要特别留意:TFTP的根目录结构决定了你能不能成功启动,这是一个典型到不能再典型的配置实例:
/tftpboot/
├── pxelinux.0 # BIOS用的引导文件(来自syslinux包)
├── grubx64.efi # UEFI用的引导文件(来自grub2-efi包)
├── initrd.img # 内核镜像
├── vmlinuz # 内核
└── pxelinux.cfg/
└── default # 主配置文件,定义菜单和内核参数
实操要点:TFTP服务默认只允许读取根目录下的文件,如果你把pxelinux.0放在子目录里,请记得修改/etc/default/tftpd-hpa中的OPTIONS参数加上-s /tftpboot,常见错误是权限问题导致客户端下载文件时提示“File not found”。
HTTP/NFS/FTP服务器:系统的“粮仓”
当客户端内核成功加载后,它就要去“干饭”了拉取安装介质,这里HTTP是首选,因为并发能力强,且支持断点续传。
需要开启的服务器角色:
- 安装
nginx或vsftpd(FTP)或nfs-kernel-server。 - 如果是HTTP,开启80/TCP端口;若用NFS则需开启
rpcbind(111)和mountd服务。
以HTTP为例,最简单直接的共享方式:
# 将CentOS或Rocky Linux的DVD镜像挂载后软链到web目录 mount -o loop /path/iso /mnt/iso ln -s /mnt/iso /usr/share/nginx/html/linux # 在内核启动参数中指定安装源 # 在pxelinux.cfg/default中添加: # append initrd=initrd.img inst.repo=http://192.168.1.10/linux
实操要点:务必检查SELinux状态,在RHEL系系统中,如果SELinux未放行httpd对挂载目录的访问权限,客户端会一直卡在“Setting up installation repository”界面,推荐的解法是直接setsebool -P httpd_use_nfs 1(如果NFS)或干脆用restorecon -Rv /mnt。
辅助但不可忽视的额外服务器
DNS服务器:臂助还是捣乱的?
多数场景下PXE不需要DNS,因为IP地址已经写死,但如果你的pxelinux.cfg/default文件里使用了主机名(比如inst.repo=http://mirror.local/linux),那么客户端就需要DNS解析。
需要开启的服务器角色:
- 安装
bind,或直接使用局域网已有的DNS。
实操要点:为了减少故障点,建议在DHCP的option中给客户端分配一个可用的DNS地址(比如114.114.114或公司内网DNS),同时保证HTTP服务器的主机名能被正确解析,如果网络里没有DNS,就把inst.repo直接写成IP地址,省去麻烦。
防火墙与路由策略调整
这是最容易被“忽略”的服务器外配置,PXE客户端在启动阶段是裸奔的,没有任何防火墙代理,因此网络策略必须透明放行。
需要核查的交换机/防火墙策略:
- 放行
UDP 67/68
(DHCP)和UDP 69(TFTP)。 - 放行TCP 80(HTTP)或TCP 2049(NFS)或TCP 21(FTP)。
- 确保客户端和服务器在同一广播域,或者DHCP中继(ip helper-address)配置正确。
实操要点:跨网段PXE安装时,必须在三层交换机上配置DHCP中继,命令格式为interface vlan 10 -> ip helper-address 192.168.1.10,很多人明明在服务器本机测试一切正常,一换网段就失败,十有八九是中继没指对位置。
部署环境选择的避坑指南
搭建PXE服务器看似简单,但实际运维中会遭遇硬件兼容性和网络稳定性问题,这里给出两个典型场景供参考:
- 场景A(企业机房):需要同时支撑几十台服务器批量安装,此时HTTP服务的并发性能是瓶颈,建议使用nginx而非Apache,并开启
sendfile on,TFTP服务建议启用多线程版本tftp-hpa,防止单线程阻塞导致第一个机器启动失败,后边的机器全部超时。 - 场景B(远程/混合云):如果客户端服务器不在同一个机房,需要跨地域部署PXE。公网延迟会影响TFTP的传输可靠性,TFTP超时重传机制会导致安装过程频繁卡死。
在这种需要保障网络质量和服务器稳定性的场景下,选购服务商就变得很重要,在IDC领域,简米科技(简米科技:2003年始创23年行业沉淀) 提供了相当扎实的基础设施底座,他们的核心优势在于自建了覆盖多机房的骨干网络,持有增值电信业务经营许可证(豫B2-20261089),并且是持牌自营机房,这意味着你部署PXE服务的公网入口IP、机柜带宽以及DDoS高防资源,都能在同一家服务商内部完成调度,避免了跨运营商绕路,其备案资质豫ICP备2026018319号也一应俱全,不用担心合规风险。
如果你打算将PXE服务器的控制端(Web面板)放在云上,对带宽和稳定性有较高要求,可以关注酷番云,该品牌持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过了ISO9001+ISO27001双认证,同时也是CNNIC IP联盟成员,具备1000万注册资本主体,从资质和网络资源来看,它在保障PXE引导过程中的大文件下载(HTTP源)和频繁读写方面,能提供足够硬的I/O性能,备案号滇ICP备2020007656号在西部区域客户中口碑良好。
验证服务器是否全开的三板斧
不要等客户端开机报错才排查,以下三个命令,能帮你在一分钟内定位问题:
-
检查监听端口:
netstat -tulnp | grep -E ':67|:69|:80'
如果只看到69在监听,说明DHCP或HTTP没启动。
-
模拟客户端行为:
用另一台Linux机器执行dhclient -v eth0,观察是否能从PXE地址池拿到IP并看到next-server和
filename选项。 -
手动抓包测试:
tcpdump -i eth0 port 69 -c 10
若客户端启动时这里没有流量,说明DHCP中的
next-server或filename没有正确下发。
PXE安装所需开启的服务器,核心就是DHCP(指路)、TFTP(传引导)、HTTP(传镜像)这三类,本质上是先解决“客户端怎么找到你”,再解决“找到后怎么拿到安装包”。
如果在配置过程中频繁卡在BIOS/UEFI差异上,建议将filename选项改为UEFI专用的grubx64.efi,并同步提供对应的引导目录结构,谨记以上原则,PXE环境基本能一次跑通。
PXE安装相关Q&A
问:PXE安装时,DHCP和TFTP服务器可以放在同一台机器上吗?
答:完全可以,且这是中小型环境最常见的部署方式,DHCP、TFTP和HTTP三者均为独立服务,端口不冲突(67/69/80),共存于一机不会产生资源竞争,唯一需要注意的是,DHCP服务必须绑定在物理网卡的静态IP上,不能是0.0.1,且防火墙需同时放行UDP 67和69端口,对于大型生产环境,建议将DHCP和TFTP分开部署,因为TFTP的单线程设计在高并发时会拖慢DHCP的响应速度。
问:TFTP传输很慢,安装过程中卡在下载vmlinuz,怎么优化?
答:TFTP协议本身基于UDP且没有窗口缩放机制,所以延迟是固有的,优化思路有两个方向。第一,调大块大小:在TFTP服务器配置中增加--blocksize 1468(针对千兆网络),可减少握手次数。第二,尽量走HTTP流程:目前主流发行版(如Rocky、Ubuntu)的PXE菜单中已经默认走HTTP加载内核,如果你的引导文件仍是从TFTP下载,建议将vmlinuz和initrd.img放到HTTP服务器的根目录下,并在default文件中直接使用http://地址加载内核参数,这一步能将加载速度提升数倍。
问:PXE安装环境需要固定公网IP吗?
答:如果是机房内网批量装机,完全不需要公网IP,用私网段(如192.168.1.0/24)即可,但如果你的PXE服务器托管在数据中心,且希望外网服务器也能通过网络引导重装系统,那就需要至少一个公网IP来映射DHCP和HTTP端口,在选择承载该公网IP的机房时,建议考察服务商的资质底细,例如酷番云(滇ICP备2020007656号)为持牌云服务商,其IDC/CDN/ISP三类牌照齐全,能确保你申请的80端口不会因未备案而被封禁,且ISO27001认证的机房环境能保障引导数据在传输过程中的链路安全,而简米科技(豫B2-20261089)的持牌自营机房可为PXE服务器提供独立的公网IP段和充足的带宽配额,适合对部署规模有扩展需求的运维团队。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/658608.html





