第一次听说RHCE备考要从“实验1”开始的时候,我以为只是装个系统、跑几条配置命令而已。等真正把环境从零搭完、又反复折腾过几轮之后才发现,RHCE的备考逻辑跟传统刷题完全不一样。考试全程是纯实操,没有选择题,考官丢过来一份任务清单,你就要在限定时间内把系统配置到符合要求的状态。这意味着平时练的不是“知道”,而是“做到”——要做到,就必须先有一套能反复折腾、随坏随修的实验环境。这篇文章围绕“RHCE、实验1”这个起点,把我当时从环境规划、虚拟机安装、网络配置、快照管理到踩坑排查的整个过程完整捋一遍。
内容主要适合两类人看:一类是完全没接触过实操环境的新手,想从零开始练RHCE,需要一个清晰的起步路径;另一类是已经看过不少资料、但练手环境总是不稳定,想把自己的实验平台整理得更干净更顺手的老哥。我不会讲太多理论大话,记录的基本都是实际敲过的命令和真实遇到过的故障,你可以直接照着搭。
1. 内容整体设计与思路拆解
1.1 考试形态决定了实验1必须优先解决“场地问题”
RHCE的考试形态有几个很鲜明的特点:全程真机操作、任务式命题、限时完成、环境不可逆。你在考试里做了什么操作,系统状态就变成什么样子,不会给你重来一次的机会。这个形态直接决定了平时练习的方式——你必须反复在“破坏系统”和“恢复系统”之间循环,才能真正练出肌肉记忆。
我见过太多人备考时犯同一个错误:拿自己日常用的机器当练习机,装一堆桌面环境,配了一堆个人习惯的工具,结果做一次配置实验就得小心翼翼,生怕把日常环境搞坏。练得束手束脚,根本谈不上高效。实验1的意义就是把这个核心矛盾先解决掉——你要建立一套独立的、可以随便破坏的、坏了能一键恢复的实验场地。场地不解决,后面所有练习都是空中楼阁。
所以实验1并不是一个“配置题目”,它是一套环境工程。核心目标不是学会某个具体的命令,而是把“练习的基础设施”建好。这个认知一旦建立起来,后面做实验就会顺畅很多。
1.2 实验1的目标拆解与验收标准
我给自己定实验1的完成标准只有三条,看起来简单,做起来涉及的内容其实不少:
-
控制节点可以免密SSH登录所有受管节点。这是后续做自动化配置练习的前提,没有免密登录,你不可能在批量操作时顺畅执行。
-
所有节点之间网络互通,IP地址固定。地址不固定,后面的主机清单、服务配置都会跟着乱掉。
-
快照机制有效。随便折腾坏一个节点,能在几分钟内恢复到一个干净、可用的初始状态。
验收方式也很粗暴:做一次破坏性操作,然后恢复快照,检查网络、主机名、SSH登录是否全部正常。只要这一套流程走通,实验1就算真正完成。很多人搭完环境就急着去练配置,从来不测试快照恢复,结果等到系统真被自己搞坏了才发现快照根本不可用,那个时间浪费得真心疼。
1.3 为什么实验1不直接做配置题
有朋友问过我:既然是RHCE备考,为什么不直接从配置题开始练,非要花时间搭环境?我的回答是:环境如果没搭好,你做配置题的时候会出现“配置命令本身没问题,但环境有问题导致结果错误”的情况,然后你就会浪费时间在排查环境故障上,而不是真正练习考点。
这就好比你要练做饭,结果厨房的煤气灶时好时坏、锅漏了一个洞、调料瓶还全都没贴标签——你练的根本不是厨艺,而是在修灶台、补锅、猜调料。实验1花半天时间把厨房彻底收拾利索,后面每次练习都直接在干净状态下开始,这才是最高效的路径。我在实验1上投入的这半天时间,后面至少帮我省了几十个小时的排错时间。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实验环境规划与选型
2.1 硬件底线与虚拟机数量
实验环境需要几台机器?我的建议是最少三台:一台控制节点、两台受管节点。RHCE考试的核心考点集中在自动化批量配置上,批量操作的对象至少要有两台机器才有意义。你如果只有一台机器,练不出“同时管理多台主机”的感觉,考试时面对任务清单里的多节点要求就容易手忙脚乱。
硬件方面,一台16G内存的电脑是比较舒服的配置,8G也能跑,但会比较紧张。三台虚拟机我一般这样分配内存:控制节点2G,两个受管节点各1.5G到2G,合计也就5到6G,电脑同时跑个浏览器和文档处理软件完全没有压力。CPU给每个虚拟机分配2核就够了,实验环境不是性能测试环境,给多了反而浪费物理机资源。
虚拟化平台我建议选择你熟悉、且支持快照功能的桌面虚拟化软件。判断标准很简单:能不能对虚拟机做快照、快照恢复是否稳定。因为实验1的核心目标之一就是建立快照恢复机制,这个功能不可用,整个实验1的根基就不成立。至于具体用哪款软件,纯粹看个人习惯,不需要过分纠结。
2.2 发行版版本与安装方式选择
RHCE考试围绕红帽系发行版展开,练习时当然也建议用同一路线的系统。版本方面,8和9都是不错的选择。我的个人建议是以考试对应的版本为准,同时考虑一点:网络管理和命令工具链在不同版本之间有一些差异,练习环境和考试环境保持一致,能减少考试时的陌生感。
安装方式只有一个原则:选择最小化安装,不要选带图形界面的版本。这一点我想重点强调。很多新手在虚拟机里装系统时看到“带GUI的服务器”选项手一滑就选了,理由是“有个界面方便操作”。但实际练习中你会发现自己根本不需要图形界面,RHCE的考点全部围绕命令行操作展开,平时就养成纯命令行的操作习惯,考试时反而更顺手。图形界面还会额外占用几百M内存和大量磁盘空间,让系统变重变慢,属于典型的“好心办坏事”。
2.3 网络规划与主机名设计
网络规划是整个实验环境里最容易被忽视、又最容易出问题的一环。我给三台虚拟机设计了一个非常简单的专用网络:使用虚拟网络里的仅主机模式或者NAT模式都行,关键是要保证三台机器处于同一个虚拟网络中,并且和物理机局域网隔离开。这样既能保证虚拟机之间互通,又不会和家里其他设备抢地址。如果你电脑用无线局域网,虚拟机网络用桥接模式很容易出现地址冲突,我建议直接用仅主机模式最省心。
IP地址规划我采用了一个固定段:控制节点192.168.56.101,两个受管节点分别是192.168.56.102和192.168.56.103。这样的好处是三个IP一眼就能对应到机器角色,后面写主机清单、配置服务时都不容易记混。
主机名设计也有讲究,我按角色来命名:控制节点叫controller,两个受管节点叫node1和node2。名字本身要能反映机器在环境里的职责,不要用一堆看不懂的编码当主机名。同时我会在每台机器的/etc/hosts里把三台机器的IP和主机名对应关系都写上,这样后面互访、解析都会快很多,也能避免SSH登录时因为解析问题而卡顿。
2.4 磁盘规划与快照策略
磁盘规划上,我给每台虚拟机分配20G系统盘。安装系统时直接使用自动分区就可以,不需要手工做复杂分区。后续练习如果涉及LVM、磁盘分区、扩容这类考点,我采取的策略是“后加盘”——在虚拟化软件里再给虚拟机挂一块独立的新磁盘,而不是一开始就在系统盘上划分预留空间。这样的好处是模拟了真实场景中添加新磁盘的过程,练习效果更贴近考试。
快照策略是实验1的灵魂。我先讲清楚一个观念:快照不是备份,它的目标是“快速回滚”,而不是“保存数据”。快照打完之后,你在虚拟机里做的任何操作都会被记入快照的变化中,一旦想回到打快照的时间点,关闭虚拟机做一次恢复即可。因此正确的用法是把快照当作“时间轴上的书签”,而不是数据保险。
我的习惯是:装完系统、完成所有基础配置后,立即打一个命名为“初始状态”的快照。这个快照是实验环境的原点,任何练习都不直接在这个原点上进行,而是再从原点复制出新的分支。每次开始新实验前,也要先恢复到原点再开始,确保每次练习起点一致。
3. 实验1实操全流程
3.1 创建虚拟机与最小化安装
新建虚拟机时需要设置的参数并不复杂。我习惯的配置是:内存控制节点2G、受管节点各1.5G,CPU每台2核,磁盘每台20G。操作系统类型选择对应的Linux发行版;安装镜像选择与考试版本一致的系统镜像。虚拟机创建完成后,正常启动并按引导进入安装界面。
安装过程中有几个关键点要特别注意。
-
软件选择界面一定要选择“最小化安装”,不要选带GUI的选项。我在前文提过,这能省下大量资源,也能强迫自己适应纯命令行操作。
-
安装目的地直接使用自动分区,不用手工调整。后续磁盘相关考点用独立加盘的方式来练,系统盘越简单越省心。
-
网络和主机名设置可以先跳过,等系统安装完成后再用命令行配置。安装界面里设置的网络参数不一定符合你的规划,装完再改反而更清晰。
-
创建root密码时可以用一个自己熟悉的强密码,同时创建一个普通用户。考试环境通常不建议直接用root操作,普通用户+提权的方式更贴近实际工作习惯。
安装过程根据硬件性能不同,大概需要十到二十分钟。装完重启后,第一件事是登录系统,然后执行ip addr命令查看当前IP地址。默认情况下虚拟机走DHCP,分到的地址不一定是规划里的固定IP,所以下一步就要手动配置静态IP。
3.2 静态IP、主机名与hosts解析配置
手动配置静态IP,推荐使用nmcli命令,这是红帽系发行版里管理NetworkManager的标准工具。我以控制节点为例,完整命令序列如下:
bash复制# 查看当前连接名称,一般默认是ens160或eth0
nmcli con show
# 修改连接为静态IP
nmcli con mod "系统连接名" ipv4.addresses 192.168.56.101/24 ipv4.gateway 192.168.56.1 ipv4.method manual ipv4.dns 192.168.56.1
# 重启连接使配置生效
nmcli con up "系统连接名"
# 验证配置结果
ip addr show
这里有个容易忽略的点:ipv4.method manual一定要写上,否则地址可能不会被正确应用。改完IP后建议用ping命令验证一下本机网络是否正常,再继续配置主机名。
主机名的修改用hostnamectl命令:
bash复制hostnamectl set-hostname controller
hostnamectl set-hostname node1 # 在node1上执行
hostnamectl set-hostname node2 # 在node2上执行
接下来在每台机器的/etc/hosts文件里,加入三台机器的解析记录:
bash复制192.168.56.101 controller
192.168.56.102 node1
192.168.56.103 node2
这一步很多人会跳过,但实际价值很大。它能让节点之间的解析不依赖任何外部服务,即使网络环境里没有提供DNS,机器之间也能快速识别主机名。我之前遇到SSH登录非常慢的问题,排查了半天,最后发现就是缺少hosts解析导致每次登录都要等超时,加上解析记录后立刻恢复。这个坑后面还会细讲。
3.3 软件仓库配置与基础工具安装
系统装完默认的仓库配置一般可用,但如果你是在内网环境里练习,建议把仓库地址整理清楚。我就吃过这个亏:练习时发现dnf install非常慢,甚至直接报错,后来才发现仓库配置指向了一个不稳定的地址。配置文件位于/etc/yum.repos.d/目录下,每个仓库以.repo文件结尾。一个基础的仓库配置大概长这样:
bash复制[BaseOS]
name=BaseOS
baseurl=指向仓库地址的路径
enabled=1
gpgcheck=1
gpgkey=指向公钥的路径
需要注意的是,红帽系发行版从8开始把仓库分成了BaseOS和AppStream两个部分,两者都要配置正确,否则一部分软件包能安装、另一部分就提示找不到。配置完成后执行dnf clean all && dnf makecache重新生成缓存,确认仓库可用。
基础工具的安装我一般用这样一条命令搞定:
bash复制dnf install -y vim tar net-tools bash-completion wget
这些工具都是日常排错和操作的基础。vim用来编辑配置文件,tar和net-tools是排查网络和打包时的常客,bash-completion能让你敲命令时自动补全,省下不少时间。我没有装任何开发工具组、图形界面相关的东西,因为这些不是核心考点,装了只会让系统变臃肿。
3.4 SSH免密登录与管理用户授权
控制节点需要能够免密登录两个受管节点。这个配置分为三步:
在控制节点上生成密钥对:
bash复制ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
-t ed25519是指定加密算法,比传统的RSA更安全也更快;-N ""表示不设置密钥密码,-f指定保存位置。生成后用ssh-copy-id把公钥复制到目标节点:
bash复制ssh-copy-id root@node1
ssh-copy-id root@node2
执行过程中会提示输入对方机器root密码,输入正确后公钥就自动写入到目标机器的/root/.ssh/authorized_keys文件里。完成后在控制节点执行ssh node1和ssh node2,如果能直接进入对方终端而不需要密码,说明免密登录配置成功。
这里我建议不要只用root账户做练习,还要创建一个专用的普通管理用户。以管理用户student为例:
bash复制useradd student
passwd student
然后给这个用户配置sudo免密权限。执行visudo,在文件里加入一行:
bash复制student ALL=(ALL) NOPASSWD: ALL
“NOPASSWD: ALL”表示使用sudo时不需要输入自己的密码,这在自动化任务里非常必要。试想一下,你写了一个批量脚本,脚本里执行到sudo命令时突然要求输入密码,整个自动化流程就会卡死在那里。平时练好普通用户+sudo的配合,后面做自动化配置实验会极其顺畅。
3.5 防火墙、SELinux与时间同步基线设置
环境基础配置不只是网络和SSH,还有三个系统级服务需要确认状态。
防火墙方面,红帽系发行版默认使用firewalld。装完最小化系统后,防火墙默认是开启的。我先检查状态并放行SSH端口:
bash复制systemctl status firewalld
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
后续如果有实验用到HTTP、NFS等服务,可以随时再用firewall-cmd添加对应服务或端口,只需要记住--permanent参数用于持久化,不加这个参数的规则会在重启后失效。
SELinux默认是强制模式,考试环境一般不会让你关闭它。很多新手一遇到SELinux导致的问题就粗暴地把它设为禁用,这恰恰是练习时的大忌。你应该学会查看SELinux的报错日志,并处理布尔值或文件上下文,这才是真正的考点。基础阶段只需要执行getenforce确认当前状态是Enforcing,然后继续往下走就行。
时间同步也是容易被忽略的一环。如果虚拟机之间时间不一致,后面看日志、排查问题时会非常痛苦:
bash复制dnf install -y chrony
systemctl enable --now chronyd
chronyc sources
启动成功后,chronyc sources会显示时间源状态,如果能看到外部时间源并且状态为正常,说明时间同步生效。三台机器都要执行同样的操作。
3.6 快照制作与回滚演练
基础配置全部完成后,就可以准备打快照了。这里我要强调一个操作习惯:打快照前最好关闭虚拟机,而不是在开机状态下直接打。虽然多数虚拟化软件支持在线快照,但关闭状态下的快照一致性更好、恢复时更保险。
控制节点和两个受管节点分别在关机状态下打快照,并命名为“初始状态-完成基础配置”。打完快照后重启虚拟机,验证一次基础功能都正常,然后进入破坏性演练环节。
我当时的演练操作是这样的:先把node1的网卡配置改坏,顺便停掉一个系统服务,然后关机,恢复到“初始状态”快照。恢复完成后马上验证几件事:
-
IP是否是192.168.56.102,主机名是否还是node1。
-
控制节点能否免密SSH登录。
-
基础服务是否还在运行。
如果这三项全部通过,说明快照机制真实可用。这件事一定要亲自完整演练一遍,不要觉得麻烦。因为只有真正走过一次“破坏—恢复—验证”的循环,你才对这套环境有底气。我在演练时就发现,如果恢复前没有关闭虚拟机,恢复后偶尔会出现网络接口名称变化的问题,正是这样的排查过程让我彻底理解了快照的使用边界。
3.7 实验1完成自检清单
最后我整理一份自检清单,每一项都快速验证一遍,全部通过就可以放心开始后面的实验了:
-
三台虚拟机都能互相ping通。在controller上执行ping node1、ping node2,在node1上执行ping controller。
-
控制节点能免密SSH登录node1和node2。执行ssh node1后能直接获得shell。
-
三台机器主机名正确,hosts解析正常。执行hostnamectl查看主机名,执行getent hosts node1查看解析结果。
-
快照恢复有效。把node2随便改坏再恢复到初始状态,确认能还原。
-
管理用户student能用sudo执行特权命令。在node1上执行sudo whoami,输出是root。
4. 常见问题与排查技巧实录
4.1 高频问题速查表
我在搭建实验1的过程中踩了不少坑,这里把最典型的问题整理成一张速查表,方便你遇到时对照处理:
| 现象 | 可能原因 | 解决思路 |
|---|---|---|
| 虚拟机之间互相ping不通 | 虚拟网络模式不一致、IP地址冲突、防火墙拦截ping | 确认三台虚拟机接入同一虚拟网络,检查IP是否在同一个网段,防火墙临时放行 |
| SSH免密登录失败,仍然要求输入密码 | 公钥没有正确复制、目标目录权限不对、SELinux上下文错误 | 重新执行ssh-copy-id,确认.ssh目录权限为700、authorized_keys权限为600,执行restorecon恢复上下文 |
| dnfinstall提示找不到软件包 | 仓库配置缺失、AppStream仓库未启用、GPG密钥错误 | 检查/etc/yum.repos.d/下的repo文件,确认baseurl可访问,执行dnf clean all和dnf makecache |
| 虚拟机可以ping通但SSH登录特别慢 | /etc/hosts缺少节点解析、DNS配置导致的超时 | 在hosts文件里补齐所有节点解析记录,检查sshd配置中UseDNS是否设置为no |
| 修改网络配置后重启丢失 | NetworkManager连接没有设置autoconnect | 使用nmcli con mod设置autoconnect yes,或者重新nmcli con up |
| 快照恢复后主机名或IP变化 | 网卡MAC变化导致系统生成新的连接配置文件 | 恢复快照后手动确认网卡状态,必要时清理/etc/NetworkManager/system-connections/下的旧连接 |
4.2 三个最值得展开的“坑”
第一个坑是快照恢复后的网卡变化。我有一次恢复快照后,发现当前系统出现了一个新的网卡名称,原来的网络配置全部失效,IP也丢了。排查后发现是因为之前的在线快照没有保留稳定的网卡配置记录,恢复后系统重新识别了网卡,NetworkManager把它当作新接口处理。这个问题可以通过统一网卡命名规则、并在打完快照后验证网络来解决。最稳妥的方案还是关机再打快照,从根源上避免。
第二个坑是SSH免密登录反复失败。命令行看起来都执行成功了,authorized_keys文件也存在,但就是还要输入密码。后来我用journalctl查看日志,发现SELinux拦截了SSH对授权文件的访问。执行restorecon -R -v /root/.ssh之后再测试,免密登录立刻生效。这个问题对新手非常不友好,因为表面现象和真实原因隔着一层SELinux机制,不知道这个背景的人往往折腾半天。
第三个坑是dnf源失效后整个环境“瘫痪”。我当时误删了仓库配置文件,导致所有软件安装命令全部报错,想装个排错工具都装不了。这在实验环境里是个死循环:没有工具就没法修,没法修就装不了工具。解决办法是提前准备一个本地仓库挂载方式,或者保留一份repo配置文件的备份。顺带一提,这也是为什么我后来坚持把基本的排错工具提前装好,而不是等用到时才临时安装。
4.3 我自己的几条实操经验
最后分享几条纯个人经验,不一定写在什么文档里,但对提升练习效率很有帮助。
一是坚持写操作日志。每次实验,我在终端里敲过的关键命令、踩过的坑、解决办法,都会单独记录在一个文本文件里。后面回看时特别有用,尤其是某个配置问题隔了很久又遇到时,翻一下记录能瞬间想起来。
二是每次只改一个配置并立即验证。很多人喜欢一口气把网络、主机名、防火墙、SSH全改完再一起测试,一旦出问题,根本不知道是哪一步导致的。正确的做法是改一步、验证一步、再继续下一步。虽然看起来慢,实际总时间反而更短。
三是把实验1的重复操作脚本化。我在环境搭完、确认快照可用之后,把所有基础配置写成了一个初始化脚本:包括IP配置、主机名设置、必要工具的安装、SSH免密登录的用户配置等。以后如果快照损坏需要重建环境,只要执行这个脚本就能把环境恢复到大体可用的状态。这个习惯后来帮了我大忙,因为我的虚拟机真的被我自己搞坏过好几次。
实验环境稳定之后,后面学到的每一个配置技能都能在一个“怎么折腾都不怕”的地基上反复打磨。我个人在实际操作中的体会是:实验1花掉的准备时间,会在后续每一次练习中成倍地还回来。如果你也正备考RHCE,别急着去啃厚厚的考点文档,先花半天时间把实验环境彻底收拾利索,这条路才是最高效的起点。
