ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RH124管理网络核心考点:nmcli与NetworkManager配置实战解析

RH124管理网络核心考点:nmcli与NetworkManager配置实战解析 1. 这章到底在讲什么先捋清RH124“管理网络”的复习主线先说个直白的结论RH124第11章“管理网络”是整门课程里最“值钱”的章节之一。为什么这么说因为红帽的考试机环境里网络配错了后面所有的题目都没法做——仓库连不上软件装不了服务起不来最后只能对着屏幕干瞪眼。我当年备考的时候这一章反复过了三遍每次做实验都能踩出新坑所以说这一章不光是背几个命令的事它是整个RHCSA备考的地基。这一章的官方知识点覆盖的范围其实很清晰NetworkManager体系、nmcli命令行工具、IP地址与子网掩码的计算、路由与默认网关、DNS解析、主机名管理、以及最基本的连通性排查。看上去内容不算多但考题可以出得很细尤其喜欢在“你为什么这么配”“这个文件改了之后要不要重启服务”“两个配置文件冲突时谁说了算”这类地方挖坑。所以这篇问答题整理我不打算只列标准答案我会把每个问题背后的原理和实际场景都点透方便你真正理解而不是死记。先说整体思路网络管理在RHEL里分为两层。上层是NetworkManager这个守护进程负责管理所有网络接口和连接配置提供统一的接口给管理员和桌面环境使用下层是内核网络协议栈负责真正的数据包收发、路由转发。nmcli就是NetworkManager的命令行客户端考试实操基本全靠它。理解这层关系后你就能明白为什么改网络配置的推荐方式不是直接编辑配置文件而是用nmcli——因为NetworkManager会把你的修改统一写入连接配置文件并且热加载生效避免配置漂移。2. 网络基础概念问答IP、子网掩码、路由和DNS这些必须烂熟于心2.1 IP地址和子网掩码为什么考试喜欢拿它出计算题问题给定IP地址和子网掩码如何确定网络地址、广播地址、可用主机范围先把原理讲透。IPv4地址是32位二进制数通常写成点分十进制。子网掩码的作用就是“划界”——掩码中连续的1对应的位是网络位0对应的位是主机位。网络地址就是把IP地址的主机位全部清零广播地址则把主机位全部置1。可用主机地址就是这两者之间的所有地址数量是2的N次方减2N是主机位数。举个例子IP地址192.168.1.130子网掩码255.255.255.192。这个掩码换算成二进制是11111111.11111111.11111111.11000000也就是/26。说明这个子网的主机位是6位可用地址数是2^6-262个。把130转成二进制是1000 0010后6位是000010网络地址就是IP与掩码做按位与得到192.168.1.128广播地址主机位全1是192.168.1.191所以可用地址范围就是192.168.1.129到192.168.1.190。考试做题的时候我建议你养成一个习惯先把掩码换算成斜杠表示法/前缀长度这样网络位和主机位一目了然。子网掩码255.255.255.0对应/24255.255.255.128对应/25255.255.255.192对应/26255.255.255.224对应/27。熟记这张换算表做题速度能快一大截。如果遇到不常见的掩码比如255.255.255.248你只要记住248对应二进制是11111000前5位是1所以是/29可用地址6个。注意实际配置里主机位全0是网络地址全1是广播地址这两个地址不能分配给主机用。但有一种情况特殊——cisco设备上ip subnet-zero命令允许使用子网0RHEL里你不需要管这个只要记得内核会拒绝把广播地址配置为本地IP就行了。2.2 静态IP与DHCP什么时候用手工配置什么时候交给动态分配问题静态地址和DHCP各有哪些适用场景混用时会出什么问题动态主机配置协议DHCP的好处是零维护客户端启动后自动从服务器获取IP、网关、DNS适合终端设备多、移动性强的场景。但服务器、网络设备、打印机这类需要固定访问入口的机器必须用静态地址否则哪天DHCP租约变了服务地址也跟着变别人就找不到了。在RHEL上一个连接配置可以选择IPv4的配置方法为manual手动或autoDHCP。如果你选择manual就必须同时手动指定IP、前缀、网关、DNS如果选autoNetworkManager会在DHCP租约到期后自动续期。有一个很容易被忽略的坑有些网卡会同时存在多个连接配置比如一个叫“有线连接1”用DHCP另一个叫“static”用手动IP。NetworkManager同一时间只激活一个连接配置但如果你不做任何设置启动时可能会自动激活第一个结果IP跟你预期的不一样。解决思路就是要么删除多余的连接配置要么用nmcli connection modify把你要用的连接设成autoconnect yes其他设成no。2.3 路由与默认网关数据包出网到底走了哪条路问题默认网关和路由表是怎么工作的添加静态路由的命令怎么敲路由表是内核数据包转发的决策依据。对于要发往非本网段的流量主机必须把数据包交给下一跳路由器这个“下一跳”就是默认网关。查看路由表用ip route你会看到类似default via 192.168.1.1 dev ens160这样的条目意思就是默认流量走ens160这个网卡网关是192.168.1.1。考试里可能会给你一个场景主机有两块网卡要求所有流量走默认网关但访问192.168.200.0/24网段时走另一个网关。这时候就需要添加静态路由。命令是ip route add 192.168.200.0/24 via 192.168.100.1 dev ens224。但要注意ip命令添加的路由是临时生效重启就没了。要持久化得通过nmcli把路由写进连接配置或者写到/etc/sysconfig/network-scripts/route-ens224文件里。用nmcli的话是nmcli connection modify ens224 ipv4.routes 192.168.200.0/24 192.168.100.1 nmcli connection up ens224这里有个细节ipv4.routes这个属性支持多条路由用空格分隔如果要删除某条路由把加号换成减号。修改后必须重新激活连接才能生效。我见过有人改了配置忘了nmcli connection up结果ping不通还以为是命令写错了。2.4 DNS解析/etc/resolv.conf、/etc/hosts、systemd-resolved的协同关系问题RHEL的DNS解析顺序是什么修改DNS后为什么有时候不生效RHEL的域名解析顺序由/etc/nsswitch.conf里hosts行的配置决定默认是files dns意思是先查/etc/hosts文件再查DNS服务器。这个顺序很重要——如果你在/etc/hosts里写了一个域名映射DNS服务器里即使配置了不同结果最终生效的也是hosts文件里的条目。/etc/resolv.conf里面的nameserver指定DNS服务器地址。但在NetworkManager管理的系统上这个文件通常是由NetworkManager动态生成的你手工修改后一重启网络服务就被覆盖了。所以正确做法是用nmcli把DNS写进连接配置nmcli connection modify ens160 ipv4.dns 8.8.8.8 114.114.114.114 nmcli connection up ens160如果服务器上跑着systemd-resolved情况会复杂一些resolv.conf可能是一个指向/run/systemd/resolve/stub-resolv.conf的软链接你需要根据实际环境判断该不该直接改。红帽考试里一般不考systemd-resolved重点还是在nmcli这一套上。3. nmcli实操问答考点最密集的章节命令和参数必须敲熟3.1 查看网络状态nmcli device与nmcli connection到底有什么区别问题nmcli device status和nmcli connection show分别能看出什么信息这个问题问的人很多。device指的是物理或虚拟网卡设备比如ens160、ens224、virbr0这种是设备connection指的是“配置”是一个定义了IP、网关、DNS等参数的集合一个设备上可以存在多个connection但同一时刻只能激活一个。打个比方设备就像一部手机connection就是插在手机里的SIM卡——手机在手上你随时可以换SIM卡但只有插着的那张卡能打电话。排查网络时我习惯先跑nmcli device status看一下有没有设备处于unmanaged状态再看nmcli connection show看一下激活状态。如果一个设备显示unmanaged说明NetworkManager不管它这通常是因为/etc/sysconfig/network-scripts/ifcfg-xxx里写了NM_CONTROLLEDno或者设备被手动纳入了非NetworkManager管理。考试遇到unmanaged先查这个。3.2 配置静态IP一条nmcli命令搞定连接修改问题如何用nmcli为一块网卡配置静态IP、掩码、网关和DNS标准答案如下nmcli connection modify ens160 ipv4.method manual \ ipv4.addresses 192.168.1.130/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns 192.168.1.1 \ ipv4.dns-search example.com nmcli connection up ens160第一行命令里的ipv4.addresses可以写成IP/前缀格式也可以写成IP 掩码格式比如192.168.1.130 255.255.255.0。考试里建议用斜杠格式少打几个字也不容易错。ipv4.method manual告诉NetworkManager“别用DHCP用我指定的静态地址”。这一步很多人会漏掉导致虽然配了地址但系统仍然尝试DHCP。关于DNS如果你要配置多个DNS用引号包起来空格分隔即可ipv4.dns 192.168.1.1 8.8.8.8。还有一个经常被忽略的ipv4.dns-search它定义的是主机名解析时的默认搜索域比如你在内网访问server1系统会尝试解析server1.example.com。考试可能不考这个但生产环境挺有用。改完配置后一定要执行nmcli connection up让配置生效。注意这里up的是connection名不是设备名。如果你忘了这一步配置不会自动热加载——除非你重启网络服务。我很不建议用systemctl restart NetworkManager来生效配置因为那会短暂中断所有网络接口如果远程连接着你执行这命令小心连不回来。3.3 配置DHCP把连接改回自动获取IP问题怎么把一个连接从静态改为DHCP命令非常简单nmcli connection modify ens160 ipv4.method auto nmcli connection up ens160ipv4.method auto代表网络管理器自动通过DHCP获取地址。你之前手动配置的ipv4.addresses、ipv4.gateway这些值不会自动删除但因为在auto模式下不生效所以不影响使用。不过我建议你顺手清掉旧配置nmcli connection modify ens160 ipv4.addresses ipv4.gateway 这样配置文件干净以后排查问题也不容易混淆。一个常见的坑是从DHCP切到静态后如果忘了把ipv4.method改成manual系统启动后还是走DHCP看起来IP“没变化”其实是DHCP给的地址。所以每次切换完都该用ip addr show确认一下实际生效的地址。3.4 新增连接配置为网卡创建独立的connection问题网卡上没有任何连接配置怎么用nmcli新建一个有时候系统装完之后网卡显示unmanaged或者没有连接配置这时候就要手动创建。命令格式如下nmcli connection add type ethernet con-name static-eth0 ifname ens160 \ ipv4.method manual ipv4.addresses 10.0.1.10/24 ipv4.gateway 10.0.1.1 nmcli connection up static-eth0con-name是连接配置的名字方便管理ifname是绑定的设备名。这里有个细节ipv4.method、ipv4.addresses这些参数不仅可以出现在modify里也能出现在add里你可以一次性配完所有参数。如果要用DHCP只需要把ipv4.method改成auto即可。创建完连接后你可以通过nmcli connection show检查状态。如果设备ens160之前处于unmanaged创建并激活连接后NetworkManager会自动接管这个设备。如果设备上已经有一个连接配置和你新建的冲突通常会报错提示你一个设备只能有一个活动连接。先删除旧的或者停用旧的再激活新的。3.5 修改主机名hostnamectl三种名称的含义问题系统的主机名有哪几种状态静态主机名和临时主机名有什么区别RHEL的主机名体系稍微绕一点但弄清楚了对排错很有帮助。hostnamectl status命令会显示三个名称Static hostname是存储在/etc/hostname里的静态主机名重启后依然保留Transient hostname是内核或DHCP临时分配的重启后消失Pretty hostname是一个自由格式的描述性名称比如“Web Server 01”主要用于显示。设置主机名的命令hostnamectl set-hostname webserver.example.com这条命令默认设置的是静态主机名如果系统之前有临时主机名它也会被同步覆盖。如果你只想改临时主机名可以用hostnamectl set-hostname --transient想清掉Pretty名称用--pretty 。改完之后可以用hostnamectl查看确认。提示/etc/hosts里常常也有一行“127.0.0.1 localhost localhost.localdomain”有人会误以为改主机名必须同步改这个文件。其实hostnamectl修改的只是内核主机名而DNS解析本地主机名是靠/etc/hosts。所以如果你希望机器能被其他主机用主机名访问得确保DNS或/etc/hosts里配置正确。这个区别考试偶尔会考别弄混。3.6 激活与重启网络到底什么时候用nmcli connection up什么时候用systemctl restart NetworkManager问题修改配置文件后让网络配置生效有哪几种手段各自的适用范围是什么这个问题如果深入理解了基本就不会再踩坑了。三种常见手段针对某个连接配置生效nmcli connection up 连接名。只会对这个连接做热加载不中断其他接口。重新加载所有连接配置nmcli connection reload。当你手工编辑了/etc/sysconfig/network-scripts/ifcfg-xxx文件后让NetworkManager重新读取配置文件。它不会重新激活连接只是让你能用nmcli connection up加载最新配置。重启整个NetworkManager服务systemctl restart NetworkManager。会把所有接口都重新初始化所有连接都会断开再重连。一般不建议在远程生产服务器上做这种操作。考试里你如果全程用nmcli命令修改配置其实根本不需要手工改配置文件也就不需要reload。但如果考点的问法变成了“请编辑ifcfg文件完成后让配置生效”你就要记得用nmcli connection reload然后再nmcli connection up。这算是一个区分度很高的考题。4. 网络故障排查与验证那些考试和工作中都必用的命令4.1 ping与连通性测试不要只看“通没通”要看“怎么不通”问题ping不通目标主机如何一步步定位问题ping是最基础的连通性测试工具但它的结果需要结合ICMP回显判断。ping得通说明本机到目标主机的双向链路、路由、防火墙策略都正常ping不通则可能是本机IP配置有问题、默认网关不可达、目标主机关机、中间防火墙拦截ICMP报文。排查顺序建议这样先ping自己ping 127.0.0.1确认本机TCP/IP协议栈正常。这一步看起来没什么用但能排除本机问题。再ping本网段其他主机比如你配置了192.168.1.130就ping 192.168.1.1。通了说明二层和三层基础配置没问题不通就要看IP、掩码、网线/交换机状态。再ping默认网关确认本机到网关的链路。最后ping公网或远端地址比如ping 8.8.8.8排除DNS因素。如果内网通、公网不通重点查默认路由和出口防火墙。如果ping外网域名时ping www.redhat.com报“Name or service not known”那就是DNS解析问题先检查/etc/resolv.conf和nmcli里的dns配置。注意ICMP有时被防火墙drop所以“ping不通”不一定代表服务不可达有时候得换个方式验证比如用ss检查端口或者用curl测试HTTP服务。4.2 ip命令全家桶addr、route、link的常用姿势问题查看IP、路由、链路状态分别用什么命令关键字段怎么看ip addr show查看所有接口的IP地址和状态。重点看UP/LOWER_UP状态和inet字段。UP代表接口被启用LOWER_UP代表物理链路连通。ip route show查看路由表。重点关注default条目确认默认网关正确。ip link show查看链路层状态。可以配合ethtool ethX命令查看协商速率和双工模式。这三条命令是排障第一步。举个例子ip addr show ens160输出了inet 192.168.1.130/24 brd 192.168.1.255 scope global ens160说明IP配上了掩码/24也对。如果输出的状态是DOWN需要nmcli connection up把它激活或者ip link set ens160 up。注意ip link set是立即生效但不持久化考试里如果要求的是持久配置应该用nmcli。4.3 检查监听端口和服务状态用ss不迷路问题怎么判断一个服务是否在监听预期的端口这个问题在“管理网络”里经常被引申出来因为网络通不通最终还是得落到应用层。ss命令是最常用的socket统计工具。比如检查HTTP服务是否跑在80端口ss -tlnp | grep :80-t显示TCP-l显示监听-n不做反向域名解析直接显示端口号-p显示进程信息。如果命令输出为LISTEN状态并有对应的进程名就说明服务正常。如果啥都没有可能是服务没启动或端口被占用/改过。配合systemctl status httpd和firewall-cmd --list-all可以快速判断服务到底有没有起来、防火墙是否放行了端口。很多时候网络问题不是IP配错了而是SELinux或firewalld拦截了。课程里虽然不深入讲防火墙配置但考试题目里偶尔会出现开放端口的设置要求这也是网络配置的一部分。4.4 按需抓包分析tcpdump、ping -I指定出口接口问题多网卡主机上ping外网时怎么确认流量走了哪块网卡默认情况下系统根据路由表选择出接口。但排查问题时你需要手动指定源接口来验证特定网卡是否通网ping -I ens160 8.8.8.8这样数据包会强制从ens160出去如果通说明这个接口的网络和网关正常如果不通再检查这个接口对应的连接配置。在物理服务器上排查双网卡链路时这招很有用。更彻底的做法是用tcpdump抓包tcpdump -i ens160 icmp。可以看到ICMP请求和回显是否到达该接口。如果有请求但没回显大概率是防火墙丢弃了回包如果任何包都没抓到说明流量没走这个接口。tcpdump在RH124课上不一定会细讲但作为“管理网络”的进阶技能面试或生产环境都用得上。4.5 综合案例分析配置后所有流量不通怎么快速定位问题我按步骤配好了静态IPnmcli connection up也执行了但网络就是不通怎么排查这种场景几乎每个人都遇到过。我分享一个真实排障案例一台RHEL虚拟机双网卡ens160和ens224手工配了ens160的静态地址192.168.1.130/24网关192.168.1.1。配置后ping网关不通ping自己也不通。排查过程nmcli device status发现ens160是connected连接正常ens224也是connected。ip addr show ens160看到了IP配置——说明NetworkManager配置层面没有错。ip route show发现默认路由走的是ens224网关192.168.1.1——问题来了网关是192.168.1.1应该走ens160但系统选了ens224作为默认路由因为ens224也存在一个default路由条目而且路由优先级或连接激活顺序导致它被优先选中。解决删除ens224上的默认网关配置或者调整连接配置的默认路由权重ipv4.route-metric让ens160的默认路由优先级更高。这类问题的根源往往是多网卡默认网关冲突。如果你配了多个连接都有默认网关系统会选metric小的或者最后激活的。避免方法很简单只给一张网卡设置默认网关其他网卡只配IP和静态路由。考试题目也可能故意构造这种多网关冲突的场景来考你所以nmcli connection show 连接名时记得看看ipv4.gateway和ipv4.route-metric的值。5. 配置文件与network-scripts搞清楚ifcfg文件的“水有多深”5.1 手工编辑ifcfg文件哪些参数必填哪些容易写错问题/etc/sysconfig/network-scripts/ifcfg-ens160文件里的关键参数都代表什么虽然RHEL推荐用nmcli但考试和实际环境里你总得能看懂ifcfg文件。一个完整的静态IP配置长这样DEVICEens160 TYPEEthernet BOOTPROTOnone NAMEens160 UUIDxxxxxx ONBOOTyes IPADDR192.168.1.130 PREFIX24 GATEWAY192.168.1.1 DNS1192.168.1.1BOOTPROTOnone代表不使用DHCP等价于nmcli里的ipv4.method manual。IPADDR和PREFIX指定地址和前缀长度也可以写成NETMASK255.255.255.0。GATEWAY指定默认网关DNS1/DNS2指定DNS服务器。ONBOOTyes表示开机自动激活这个连接如果设成no重启后网络就不通这是最容易被忽略的坑。手动修改这个文件后要让NetworkManager重新识别必须执行nmcli connection reload。如果你连reload都不执行直接nmcli connection up可能还是会用旧配置。编辑文件时注意格式行内不要有空格缩进键值等号两边不要空格否则配置文件解析会报错。5.2 NetworkManager配置文件的优先级ifcfg、keyfile、nmcli到底谁说了算问题RHEL中网络配置有多种存储方式判断最终生效配置的依据是什么这可能是最容易让人晕的点。新装RHEL 9系统默认用keyfile格式存储位置在/etc/NetworkManager/system-connections/目录下文件名以.nmconnection结尾旧版系统和通过anaconda安装的RHEL 7/8可能用ifcfg格式在/etc/sysconfig/network-scripts/下。ifcfg格式在RHEL 9里默认不再生成但NetworkManager仍然支持读取。关键还是要形成操作习惯不管底层文件是什么格式统一用nmcli命令修改。nmcli会把修改正确地写入对应的存储格式。手工编辑文件也能改但一旦格式写错或者字段冲突排查成本特别高。如果你发现nmcli修改的内容没有写到预期的文件里可以使用nmcli -p connection show 连接名查看所有属性再从属性值反推底层配置。5.3 回落配置DHCP服务器不可用时的备用方案问题连接配置为auto时如何设置一个备用静态IP生产环境里有个需求很常见服务器通过DHCP获取地址但如果DHCP服务器挂了希望设备能自动“掉落”到一个保留地址保证远程访问不中断。nmcli里可以通过ipv4.addresses设置fallback地址nmcli connection modify ens160 ipv4.method auto ipv4.addresses 192.168.1.200/24 ipv4.dhcp-timeout 15 nmcli connection up ens160这样在DHCP请求超时15秒后接口会自动使用192.168.1.200这个地址。这个知识点并不在RH124必修范围里但考试可能会给你一个“DHCP超时后自动启用某地址”的场景多知道一点没坏处。6. 考试与实战锦囊这一章的易错点和小技巧6.1 题目中隐藏的“坑”这些表述你得学会翻译复习问答题的时候最怕的不是题难而是没看懂题目到底在问什么。以下是我整理的一些“翻译”经验题目说“系统重启后仍然生效”优先用nmcli写配置而不是ip命令。ip命令是临时生效。题目说“使用NetworkManager进行管理”别直接改ifcfg文件除非题目明确说编辑文件。用nmcli connection modify是标准做法。题目说“配置两块网卡分别用于业务和管理”注意默认网关只能出现在一张网卡上。如果业务网卡需要访问外网默认路由给业务网卡管理网卡走静态路由。题目说“配置主机名并且永久生效”用hostnamectl set-hostname不要只修改/etc/hostname用echo。题目说“增加一个IP地址到网卡上”用ip addr add是临时的用nmcli connection modify ens160 ipv4.addresses xxx是永久的。注意加号代表“追加”不加加号代表“替换”。6.2 实操中我最常用的验证清单做完网络配置后我习惯按这个清单走一遍确认所有步骤都到位nmcli device status确认设备状态是connected而不是unmanaged。ip -br addr show确认IP地址和前缀是否与预期一致。-br是“brief”缩写输出更紧凑适合快速检查。ip route show确认默认路由的网关对应的网卡正确。ping -c 3 网关IP确认本地网段的链路通。cat /etc/resolv.conf确认DNS服务器没有被NetworkManager覆盖成旧值。hostnamectl status确认主机名修改成功。其实最后一条比较坑有时候你明明执行了hostnamectl set-hostname但第二次登录终端时看到的提示符还是旧主机名。这是shell缓存导致的重新登录shell或source /etc/bashrc一般就能解决。不算配置问题但一提出来很多人会以为是失败。6.3 关于复习节奏和实验方法的一点心得RH124第11章的知识点不算多但命令量不少。我的建议是别光看题一定要搭一个虚拟机环境亲手敲命令。每配完一个连接配置就重启一下网络服务或者直接重启虚拟机看看配置是否持久生效。多试几次之后哪些命令是“临时的”哪些是“持久的”不用背也能形成肌肉记忆。另外虚拟机实验可以给自己挖点坑比如故意给ens160配一个和网关冲突的静态路由或者把ONBOOT设成no然后重启观察结果。这样做的价值在于考试时你见到异常现象不至于慌——因为你在实验里已经见过一遍“如果配置错了会发生什么”。这种试错式学习对网络管理这种实践性很强的内容特别有效。最后再分享一个小技巧如果考试时不确定某个连接配置的当前状态别靠猜。用nmcli connection show 连接名把详细信息打出来逐项和题目要求比对。这个命令的信息量非常大把ipv4.method、ipv4.addresses、ipv4.gateway、ipv4.dns这几个字段确认好网络配置题基本就稳了。平时做题时反复使用这些命令比死记硬背知识点有用得多。
返回列表