2. 环境准备:硬件要求、操作系统选择、网络拓扑与IP规划

搭建网络启动环境,说白了就是给一台裸机配好「神经系统」。硬件选不对,后面全白费。操作系统选顺手了,能省一半调试时间。这一章我把自己踩过的坑和总结的经验都摊开讲,你跟着走就行。

2.1 硬件要求

先聊硬件。很多人觉得随便找台旧电脑就能跑PXE,其实不然。我遇到过用十年前的奔腾4做服务器,结果并发装三台机器就卡死的惨案。

服务器端硬件

  • CPU:双核2.0GHz以上。别用太老的,DHCP+TFTP+HTTP并发处理时,单核会成瓶颈。
  • 内存:至少4GB。如果同时给50台以上客户端做网络启动,建议8GB起步。
  • 磁盘:80GB空闲空间。存放操作系统镜像、kickstart文件、日志。我用过一块坏道盘,结果TFTP传输总丢包,排查了两天才发现是硬盘问题。
  • 网卡:千兆网卡,支持PXE ROM。这是硬性要求,百兆网卡传大镜像会等到你怀疑人生。

客户端硬件

  • CPU/内存:只要能跑目标操作系统就行。比如装CentOS 7,建议至少1GB内存。
  • 网卡:必须支持PXE或UEFI网络启动。有些老网卡需要进BIOS手动开启PXE选项。
  • BIOS/UEFI设置:启动顺序里把「Network Boot」或「PXE Boot」调到第一位。嗯,这里要注意——UEFI和Legacy BIOS的启动流程不一样,后面章节会细讲。
⚠️ 避坑指南:我曾经遇到过一台戴尔OptiPlex,死活进不了PXE。折腾半天发现是BIOS里「Secure Boot」没关。UEFI模式下,Secure Boot会拦截未签名的网络启动引导程序。记得先关掉它。

2.2 操作系统选择

我个人习惯在CentOS 7和Ubuntu 20.04之间选。两个系统都能搭PXE,但细节上有差异。我列个表,你一看就明白。

对比项 CentOS 7 Ubuntu 20.04
内核版本 3.10.x(较老,但稳定) 5.4.x(较新,驱动全)
DHCP服务 dhcpd(配置稍复杂) isc-dhcp-server(配置类似)
TFTP服务 tftp-server + xinetd tftpd-hpa(更轻量)
HTTP服务 httpd(Apache) nginx(我推荐)或apache2
包管理 yum(老但稳) apt(快,依赖处理更好)
适用场景 企业生产环境、RHEL系 开发测试、快速原型

我建议:如果你主要给CentOS/RHEL客户端做网络启动,服务器就用CentOS 7,兼容性最好。如果客户端是Ubuntu/Debian系,或者你刚入门想快速验证,Ubuntu 20.04更友好。我自己在实验室里两台都跑过,没本质区别。

2.3 网络拓扑设计

网络拓扑决定了数据怎么走。设计不好,广播风暴、DHCP冲突、跨网段不通……这些坑我都踩过。下面这张图是我常用的最小化拓扑,适合学习和中小规模部署。

网络启动环境拓扑图 网络启动环境拓扑图(最小化部署) 互联网 路由器/网关 (192.168.1.1) 千兆交换机 PXE服务器 DHCP + TFTP + HTTP 客户端 1 PXE启动 客户端 2 PXE启动 说明: 1. PXE服务器同时承担DHCP、TFTP、HTTP三个角色,适合小规模环境。 2. 客户端通过交换机与服务器直连,避免跨路由的DHCP中继问题。 3. 如果客户端超过50台,建议将DHCP和HTTP分离到不同服务器。

这个拓扑很简单:一台PXE服务器,一台千兆交换机,若干客户端。所有设备在同一个广播域内。为什么这么设计?因为DHCP广播请求不能跨路由器,除非你配DHCP中继。我刚开始学的时候,非要把服务器和客户端放不同网段,结果折腾两天没通。后来老老实实放一个网段,十分钟搞定。

💡 小技巧:如果你公司网络有现成的DHCP服务器,别直接替换。可以在PXE服务器的DHCP配置里只响应PXE客户端的请求,不影响现有网络。具体做法是设置 next-server 和 filename 选项,后面章节会讲。

2.4 IP地址规划

IP规划看似简单,但搞不好会出大问题。我见过有人把DHCP地址池和服务器静态IP设成同一个网段,结果地址冲突,客户端拿到的是服务器的IP,网络直接瘫痪。

下面是我常用的规划方案,你直接套用就行。

设备 IP地址 子网掩码 网关 说明
PXE服务器 192.168.1.10 255.255.255.0 192.168.1.1 静态IP,固定不变
DHCP地址池 192.168.1.100 - 192.168.1.200 255.255.255.0 192.168.1.1 给客户端动态分配
网关/路由器 192.168.1.1 255.255.255.0 - 出口路由
客户端(示例) 192.168.1.101 255.255.255.0 192.168.1.1 由DHCP自动分配

几点经验:

  • 服务器用静态IP:DHCP、TFTP、HTTP服务都绑在服务器IP上。如果IP变了,客户端就找不到服务器了。我习惯用 .10 或 .100 这种好记的地址。
  • 地址池避开服务器IP:服务器是 .10,地址池从 .100 开始,中间留出空间给其他静态设备(比如打印机、管理口)。
  • 子网别太大:/24 就够了。用 /16 的话,DHCP广播会充斥整个网络,影响性能。
  • 预留几个IP做测试:我一般留 .200-.254 给临时测试机,手动配IP排查问题用。
📌 核心要点:IP规划的核心是「服务器固定、客户端动态、地址不冲突」。只要记住这三点,后面配置DHCP时就不会出乱子。

2.5 网络连通性验证

硬件接好了,IP规划完了,别急着配服务。先验证网络通不通。我吃过亏——有一次网线没插紧,排查了半小时才发现是物理层问题。

验证步骤很简单:

  1. 给服务器配好静态IP(比如 192.168.1.10)。
  2. 找一台客户端,手动配一个同网段IP(比如 192.168.1.100)。
  3. 在客户端上 ping 192.168.1.10。
  4. 在服务器上 ping 192.168.1.100。

如果双向都通,恭喜你,物理层和网络层都没问题。如果不通,按这个顺序排查:

  • 网线灯亮不亮?不亮就换线或换端口。
  • 防火墙有没有开?CentOS 7默认开firewalld,Ubuntu 20.04默认开ufw。先临时关掉测试:systemctl stop firewalld 或 ufw disable。
  • IP和子网掩码对不对?别把 .10 和 .100 配成不同网段。
⚠️ 避坑指南:我曾经在VMware虚拟机里搭PXE环境,发现客户端ping不通服务器。折腾半天,发现虚拟机的网络模式设成了NAT,应该改成「桥接模式」才能让客户端和服务器在同一个广播域。如果你用虚拟机,记得检查这个。