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冲突、跨网段不通……这些坑我都踩过。下面这张图是我常用的最小化拓扑,适合学习和中小规模部署。
这个拓扑很简单:一台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规划完了,别急着配服务。先验证网络通不通。我吃过亏——有一次网线没插紧,排查了半小时才发现是物理层问题。
验证步骤很简单:
- 给服务器配好静态IP(比如 192.168.1.10)。
- 找一台客户端,手动配一个同网段IP(比如 192.168.1.100)。
- 在客户端上
ping 192.168.1.10。 - 在服务器上
ping 192.168.1.100。
如果双向都通,恭喜你,物理层和网络层都没问题。如果不通,按这个顺序排查:
- 网线灯亮不亮?不亮就换线或换端口。
- 防火墙有没有开?CentOS 7默认开firewalld,Ubuntu 20.04默认开ufw。先临时关掉测试:
systemctl stop firewalld或ufw disable。 - IP和子网掩码对不对?别把 .10 和 .100 配成不同网段。
⚠️ 避坑指南:我曾经在VMware虚拟机里搭PXE环境,发现客户端ping不通服务器。折腾半天,发现虚拟机的网络模式设成了NAT,应该改成「桥接模式」才能让客户端和服务器在同一个广播域。如果你用虚拟机,记得检查这个。