7.4 RHCSA 备考:网络配置与排错
预计阅读时间:17 分钟
📖 目录
RHCSA 考试要求考生能在 RHEL 系统上配置静态网络、管理网络接口、设置主机名、配置静态路由以及排查常见网络故障。网络配置是 RHCSA 中分值最重的考点之一,几乎每场考试都会涉及 2-3 道网络相关题目。
学习目标
- 掌握使用 nmcli/nmtui 配置 IPv4/IPv6 静态网络和 DHCP 连接
- 能够设置主机名、配置 /etc/hosts 本地解析,理解 DNS 解析顺序
- 熟练添加、删除静态路由,配置多网卡场景下的路由策略
- 运用 ip/ss/traceroute/dig 等工具快速定位并解决网络故障
前置知识
- 4.5:网络故障排查 网络故障排查——ping/traceroute 等排查命令
- 1.8:软件包管理 软件包管理——RHEL 环境准备
考试要点
| 考点 | 权重 | 典型题目 |
|---|---|---|
| nmcli 配置静态 IP | 30% | 为指定网卡配置 IP/掩码/网关/DNS |
| 网络接口管理 | 15% | 启用/禁用接口、激活/停用连接 |
| 主机名与 DNS | 15% | 设置 FQDN、编辑 /etc/hosts |
| 静态路由 | 20% | 添加到特定网段的静态路由 |
| 故障排查 | 20% | 诊断连通性/解析/DNS 问题 |
1. 使用 nmcli 配置网络
RHEL 9 使用 NetworkManager 管理网络。nmcli 是官方命令行工具,考试中 90% 的网络配置题都通过 nmcli 完成。
# 查看网络设备状态
nmcli device status
# 预期输出:DEVICE TYPE STATE CONNECTION
# eth0 ethernet connected eth0-static
# lo loopback unmanaged --
nmcli connection show
# 预期输出:NAME UUID TYPE DEVICE
# eth0-static xxxx-xxxx-xxxx-xxxx ethernet eth0
# 创建静态 IP 连接
sudo nmcli connection add type ethernet con-name eth0-static \
ifname eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 1.1.1.1" \
ipv6.method disabled \
autoconnect yes
# 预期输出:Connection "eth0-static" (xxxx) successfully added.
# 启用连接
sudo nmcli connection up eth0-static
# 预期输出:Connection successfully activated
# 验证 IP 地址
ip addr show eth0
# 预期输出:inet 192.168.1.100/24 brd 192.168.1.255 scope global noprefixroute eth0
# 修改现有连接
sudo nmcli connection mod eth0-static ipv4.addresses "192.168.1.101/24"
sudo nmcli connection mod eth0-static ipv4.dns "8.8.4.4"
sudo nmcli connection up eth0-static
# 添加第二个 IP 地址
sudo nmcli connection mod eth0-static +ipv4.addresses "10.0.0.10/24"
# 使用 DHCP
sudo nmcli connection add type ethernet con-name eth0-dhcp ifname eth0 \
ipv4.method auto
nmcli connection 参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
| type | 连接类型 | ethernet、wifi、bridge |
| con-name | 连接名称 | 自定义字符串 |
| ifname | 网卡名称 | eth0、ens160 |
| ipv4.method | IP 获取方式 | auto(DHCP)、manual(静态) |
| ipv4.addresses | IPv4 地址/掩码 | 192.168.1.100/24 |
| ipv4.gateway | 默认网关 | 192.168.1.1 |
| ipv4.dns | DNS 服务器 | "8.8.8.8 1.1.1.1" |
| autoconnect | 开机自启 | yes / no |
删除连接
# 删除指定连接
sudo nmcli connection delete eth0-static
# 查看所有连接
nmcli connection show
2. 使用 nmtui 交互式配置
nmtui 提供文本界面,适合不熟悉命令行的场景。考试中如果时间紧张,nmtui 也是快速配置的好选择:
sudo nmtui
# 选 Edit a connection → Add/Edit → 填写 IP/掩码/网关/DNS → OK → Quit
# 然后激活:nmcli connection up 连接名
# nmcli 还有更直观的交互模式
sudo nmcli editor eth0-static
nmcli vs nmtui 对比
| 特性 | nmcli | nmtui |
|---|---|---|
| 界面 | 纯命令行 | 文本菜单界面(TUI) |
| 脚本化 | 支持(适合自动化/批量) | 不支持(需手动操作) |
| 功能完整度 | 100%(所有 NetworkManager 功能) | 约 80%(缺少高级路由/桥接等) |
| 远程操作 | SSH 友好 | 需终端支持 ncurses |
| 考试推荐 | 首选(可复制粘贴命令) | 备选(时间紧张时快速配置) |
| 持久化 | 写入 /etc/NetworkManager/system-connections/ | 同左(共享同一后端) |
nmtui 操作流程
- 打开终端执行
sudo nmtui - 选择「Edit a connection」
- 选择网卡或点击「Add」新建连接
- 填写 IPv4 CONFIGURATION 为 Manual
- 输入 Address、Gateway、DNS servers
- 点击 OK 保存
- 回到主菜单选择「Activate a connection」激活
3. 管理网络接口
# 启用/禁用接口
sudo nmcli device disconnect eth0
sudo nmcli device connect eth0
# 或用传统方式
sudo ip link set eth0 down
sudo ip link set eth0 up
# 查看 IP 地址
ip addr show eth0
nmcli device show eth0
# 重启网络(谨慎,会断开 SSH)
sudo systemctl restart NetworkManager
# 启用/禁用 NetworkManager 管理某网卡
sudo nmcli device set eth0 managed yes
sudo nmcli device set eth0 managed no
4. 主机名与 hosts
# 查看/设置主机名
hostnamectl status
sudo hostnamectl set-hostname server01.example.com
# 查看主机名各组成部分
hostname # 短主机名
hostname -f # FQDN
hostname -d # 域名部分
hostname -i # IP 地址
# /etc/hosts 文件(本地 DNS 解析)
echo "192.168.1.100 server01.example.com server01" | sudo tee -a /etc/hosts
# 测试
getent hosts server01
ping -c 1 server01
DNS 解析顺序
Linux 系统的 DNS 解析顺序由 /etc/nsswitch.conf 中的 hosts: 行控制:
# 查看解析顺序
grep hosts /etc/nsswitch.conf
# 典型输出:hosts: files dns myhostname
# 含义:
# files → 先查 /etc/hosts
# dns → 再查 /etc/resolv.conf 中的 DNS 服务器
# myhostname → 最后解析本机名
5. 静态路由
# 查看路由表
ip route show
route -n
# 通过 nmcli 添加静态路由
sudo nmcli connection mod eth0-static +ipv4.routes "10.0.0.0/8 192.168.1.254"
# 通过 ip 命令临时添加
sudo ip route add 10.0.0.0/8 via 192.168.1.254
# 删除路由
sudo ip route del 10.0.0.0/8
# 添加默认网关
sudo nmcli connection mod eth0-static ipv4.gateway 192.168.1.1
路由优先级与 metric
# 添加带 metric 的路由(值越小优先级越高)
sudo ip route add 10.0.0.0/8 via 192.168.1.254 metric 100
# 通过 nmcli 设置 metric
sudo nmcli connection mod eth0-static ipv4.routes "10.0.0.0/8 192.168.1.254 100"
# 格式:网络/掩码 网关 跳数(metric)
6. DNS 解析配置
# RHEL 9 默认用 systemd-resolved
# /etc/resolv.conf 由 systemd-resolved 管理
# 查看当前 DNS
resolvectl status
# 通过 nmcli 设置 DNS
sudo nmcli connection mod eth0-static ipv4.dns "8.8.8.8"
sudo nmcli connection mod eth0-static +ipv4.dns "1.1.1.1"
sudo nmcli connection up eth0-static
# 测试 DNS 解析
dig example.com
nslookup example.com
getent hosts example.com
DNS 排查技巧
# 使用 dig 追踪完整解析链
dig +trace example.com
# 指定 DNS 服务器查询
dig @8.8.8.8 example.com
# 只返回 A 记录
dig +short example.com A
# 查看 /etc/resolv.conf 配置
cat /etc/resolv.conf
故障案例:nmcli 修改后连接冲突导致断网
现象
# 修改 eth0 连接的 IP 后,nmcli connection up 报错:
sudo nmcli connection mod eth0-static ipv4.addresses "192.168.1.200/24"
sudo nmcli connection up eth0-static
# Error: Connection activation failed because ...
# 或:Connection "eth0-static" is not available on device eth0
原因与修复
# 原因:同一网卡上存在多个连接(如 eth0-static 和 eth0-dhcp),
# 新连接激活时旧连接仍在占用设备,导致冲突
# 排查
nmcli connection show
# NAME UUID TYPE DEVICE
# eth0-static xxxx-xxxx-... ethernet eth0
# eth0-dhcp yyyy-yyyy-... ethernet eth0 ← 冲突源
# 修复:删除不需要的连接
sudo nmcli connection delete eth0-dhcp
sudo nmcli connection up eth0-static
ip addr show eth0 # 确认新 IP 生效
故障案例:静态路由不生效——重启后丢失
现象
# 用 ip route add 添加的路由,重启后消失:
sudo ip route add 10.0.0.0/8 via 192.168.1.254
ip route show | grep 10.0.0
# 10.0.0.0/8 via 192.168.1.254 dev eth0 ← 当前生效
# 重启后
ip route show | grep 10.0.0
# (空)← 路由丢失
原因与修复
# 原因:ip route add 是临时命令,不写入持久化配置
# nmcli connection mod 才会写入 NetworkManager 连接文件
# 修复:用 nmcli 添加持久化路由
sudo nmcli connection mod eth0-static +ipv4.routes "10.0.0.0/8 192.168.1.254"
sudo nmcli connection up eth0-static
ip route show | grep 10.0.0
# 10.0.0.0/8 via 192.168.1.254 dev eth0 ← 持久化生效
# 删除路由
sudo nmcli connection mod eth0-static -ipv4.routes "10.0.0.0/8 192.168.1.254"
故障案例:DNS 解析顺序被劫持——/etc/hosts 不生效
现象
# 在 /etc/hosts 中配置了 192.168.1.50 server01.example.com
# 但 ping server01.example.com 解析到公网 IP
cat /etc/hosts | grep server01
# 192.168.1.50 server01.example.com server01 ← 配置存在
ping -c 1 server01.example.com
# PING server01.example.com (93.184.216.34) ... ← 解析到公网
原因与修复
# 原因:/etc/nsswitch.conf 中 hosts 行的顺序决定了解析优先级
# 如果配置为 "dns files"(DNS 在前),先查 DNS 再查 hosts
# 排查
grep hosts /etc/nsswitch.conf
# hosts: dns myhostname ← 缺少 files,hosts 文件被跳过
# 修复:确保 files 在 dns 前面
sudo sed -i 's/^hosts:.*/hosts: files dns myhostname/' /etc/nsswitch.conf
grep hosts /etc/nsswitch.conf
# hosts: files dns myhostname
# 验证
ping -c 1 server01.example.com
# PING server01.example.com (192.168.1.50) ... ← 正确解析到本地 IP
7. 故障排查命令速查
| 命令 | 用途 |
|---|---|
| ping -c 4 目标 | 基础连通性测试 |
| ip addr show | 查看 IP 配置 |
| ip route show | 查看路由表 |
| ss -tlnp | 查看监听端口 |
| dig example.com | DNS 解析测试 |
| curl -v http://目标 | HTTP 连通性测试 |
| traceroute 目标 | 路由追踪 |
| mtr 目标 | 实时路由+丢包统计 |
| nmcli device show | NetworkManager 状态 |
网络故障排查思路
- 检查物理层:网线是否插好、网卡是否 UP
- 检查 IP 层:IP 地址是否正确、子网掩码是否匹配
- 检查路由层:默认网关是否正确、是否有到目标的路由
- 检查 DNS:解析是否正常、DNS 服务器是否可达
- 检查服务端:目标服务是否在监听、防火墙是否放行
常见错误
| 常见错误 | 原因分析 | 解决方法 |
|---|---|---|
| 配置后无法上网 | 网关配置错误或未激活连接 | 检查 gateway,执行 nmcli connection up |
| DNS 无法解析 | /etc/resolv.conf 被覆盖或 DNS 服务器不可达 | 检查 resolvectl status,用 dig 测试 |
| 重启后配置丢失 | 修改了 netplan 但未 apply | 使用 nmcli 确保配置持久化 |
| 多网卡路由冲突 | 默认路由走错接口 | 检查 ip route show,调整 metric |
| SSH 连接中断 | 重启 NetworkManager 导致 | 使用 nmcli connection up 而非 restart |
故障案例 1:nmcli connection up 失败
现象:执行 nmcli connection up eth0-static 后报错 Error: Connection activation failed: No suitable device found。
排查:① nmcli device status 查看网卡状态;② 发现 ens160 显示 "unmanaged"(未被 NetworkManager 管理);③ 检查 /etc/NetworkManager/NetworkManager.conf 中 managed=true 是否设置;④ 检查 ifcfg-ens160 中 DEVICE=ens160 是否正确。
解决:确保 NetworkManager 管理该接口:sudo nmcli device set ens160 managed yes → sudo systemctl restart NetworkManager → 重新 nmcli connection up。
故障案例 2:双网卡路由冲突
现象:配置两块网卡后,只有其中一个网段可访问。
排查:① ip route show 查看路由表;② 发现只有一条默认路由,指向其中一块网卡;③ 检查另一块网卡的路由是否正确添加。
解决:为第二块网卡添加特定网段路由:nmcli connection mod mgmt-static +ipv4.routes "172.16.0.0/12 192.168.1.1" → nmcli connection up mgmt-static → 验证:ip route show | grep 172.16。
故障案例 3:DNS 解析顺序问题
现象:ping www.example.com 失败,但 ping 8.8.8.8 正常。
排查:① dig www.example.com 超时;② cat /etc/resolv.conf 显示 DNS 服务器正确;③ grep hosts /etc/nsswitch.conf 发现 hosts 行为 dns files(DNS 在前)。
解决:修改 nsswitch.conf:sudo sed -i 's/^hosts:.*/hosts: files dns/' /etc/nsswitch.conf → 验证:getent hosts www.example.com。
实操练习
练习 1:配置双网卡静态网络
为服务器配置两个网卡的静态 IP,要求 eth0 连接内网(192.168.1.0/24),eth1 连接外网(10.0.0.0/24),且内网优先级高于外网。
练习 2:网络故障排查实战
模拟以下故障场景并修复:① DNS 配置错误导致无法解析域名;② 网关配置错误导致无法访问外网;③ 防火墙规则导致无法 SSH 连接。
nmcli 命令速查
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看设备状态 | nmcli device status | 显示所有网络设备状态 |
| 查看连接列表 | nmcli connection show | 显示所有已配置的连接 |
| 查看连接详情 | nmcli connection show eth0-static | 显示指定连接的详细配置 |
| 创建静态连接 | nmcli connection add type ethernet con-name eth0-static ifname eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 | 创建持久化静态 IP 配置 |
| 修改连接 | nmcli connection mod eth0-static ipv4.dns "8.8.8.8" | 修改现有连接的配置 |
| 激活连接 | nmcli connection up eth0-static | 激活指定连接 |
| 停用连接 | nmcli connection down eth0-static | 停用指定连接 |
| 删除连接 | nmcli connection delete eth0-static | 删除指定连接 |
| 添加路由 | nmcli connection mod eth0-static +ipv4.routes "10.10.0.0/16 192.168.1.254" | 添加静态路由 |
| 删除路由 | nmcli connection mod eth0-static -ipv4.routes "10.10.0.0/16 192.168.1.254" | 删除静态路由 |
| 设置自动连接 | nmcli connection mod eth0-static autoconnect yes | 设置开机自动激活 |
| 禁用自动连接 | nmcli connection mod eth0-static autoconnect no | 设置开机不自动激活 |
| 查看所有属性 | nmcli -f all connection show eth0-static | 显示连接的所有属性 |
| 重启 NetworkManager | systemctl restart NetworkManager | 重启网络管理服务 |
完整配置案例
案例:配置生产服务器网络
为一台 RHEL 9 服务器配置网络:ens160 连接生产网络(10.0.1.10/24,网关 10.0.1.1,DNS 8.8.8.8),主机名 web-server.example.com,添加到 172.16.0.0/12 的静态路由。
# 第一步:设置主机名
sudo hostnamectl set-hostname web-server.example.com
# 第二步:查看当前网络状态
nmcli device status
nmcli connection show
# 第三步:创建静态 IP 连接
sudo nmcli connection add type ethernet con-name prod-static ifname ens160 \
ipv4.method manual \
ipv4.addresses 10.0.1.10/24 \
ipv4.gateway 10.0.1.1 \
ipv4.dns "8.8.8.8 1.1.1.1" \
ipv6.method disabled \
autoconnect yes
# 第四步:添加静态路由
sudo nmcli connection mod prod-static +ipv4.routes "172.16.0.0/12 10.0.1.254"
# 第五步:激活连接
sudo nmcli connection up prod-static
# 第六步:验证配置
ip addr show ens160 # 确认 IP 地址
ip route show # 确认路由表
ping -c 2 10.0.1.1 # 测试网关连通性
ping -c 2 8.8.8.8 # 测试外网连通性
dig www.example.com # 测试 DNS 解析
hostnamectl status # 确认主机名
# 第七步:保存配置备份
nmcli connection show prod-static > /tmp/network-backup.txt
预期输出:IP 地址显示 10.0.1.10/24,路由表显示默认路由 via 10.0.1.1 和 172.16.0.0/12 via 10.0.1.254,ping 和 dig 均成功。
NetworkManager 配置文件详解
RHEL 9 使用 NetworkManager 管理网络,配置文件位于 /etc/NetworkManager/system-connections/ 目录。理解配置文件结构有助于故障排查。
| 配置项 | 含义 | 示例值 |
|---|---|---|
| [connection] | 连接元数据 | id=eth0-static, type=ethernet |
| [ipv4] | IPv4 配置 | method=manual, addresses=192.168.1.100/24 |
| [ipv4.method] | IPv4 方法 | auto(DHCP) 或 manual(静态) |
| [ipv4.addresses] | IPv4 地址 | 192.168.1.100/24 |
| [ipv4.gateway] | 默认网关 | 192.168.1.1 |
| [ipv4.dns] | DNS 服务器 | 8.8.8.8;1.1.1.1(分号分隔) |
| [ipv4.routes] | 静态路由 | 10.10.0.0/16 192.168.1.254 |
| [ipv6] | IPv6 配置 | method=auto 或 manual |
| [ipv6.addresses] | IPv6 地址 | 2001:db8::100/64 |
| [ipv6.gateway] | IPv6 网关 | 2001:db8::1 |
| [ipv6.dns] | IPv6 DNS | 2001:4860:4860::8888 |
| [autoconnect] | 开机自动连接 | yes 或 no |
配置文件示例(/etc/NetworkManager/system-connections/prod-static.nmconnection):
[connection]
id=prod-static
type=ethernet
autoconnect=true
[ipv4]
method=manual
addresses=10.0.1.10/24
gateway=10.0.1.1
dns=8.8.8.8;1.1.1.1
route1=172.16.0.0/12,10.0.1.254
[ipv6]
method=disabled
注意:直接编辑配置文件后需要重启 NetworkManager:sudo systemctl restart NetworkManager。考试中推荐使用 nmcli 命令,避免手动编辑配置文件出错。
nmcli vs nmtui 对比
| 特性 | nmcli | nmtui |
|---|---|---|
| 界面类型 | 命令行 | 终端图形界面 |
| 学习曲线 | 较陡(需记忆命令) | 较平(菜单操作) |
| 操作速度 | 快(熟练后) | 中等 |
| 功能完整性 | 完整(所有 NetworkManager 功能) | 部分(缺少高级配置) |
| 脚本化 | 支持(可编写脚本) | 不支持(需要交互) |
| SSH 远程操作 | 推荐(无需 X 转发) | 可用(需要终端支持) |
| 考试推荐 | ★★★★★(首选) | ★★★☆☆(备选) |
| 生产环境 | ★★★★★(自动化运维) | ★★☆☆☆(临时修改) |
考试建议:优先使用 nmcli,nmtui 作为备选。nmcli 更适合脚本化和自动化,且考试中大部分题目都需要 nmcli 完成。
# 步骤
sudo nmcli connection add type ethernet con-name eth0-int \
ifname eth0 ipv4.method manual \
ipv4.addresses 192.168.1.100/24
sudo nmcli connection add type ethernet con-name eth1-ext \
ifname eth1 ipv4.method manual \
ipv4.addresses 10.0.0.100/24 \
ipv4.gateway 10.0.0.1
# 验证
ip addr show
ip route show
练习 2:配置静态路由访问远程网段
添加到 172.16.0.0/16 网段的静态路由,网关为 192.168.1.254。
sudo nmcli connection mod eth0-static +ipv4.routes "172.16.0.0/16 192.168.1.254"
sudo nmcli connection up eth0-static
ip route show | grep 172.16
练习 3:排查 DNS 解析故障
模拟 DNS 配置错误并排查修复。
# 故意设置错误 DNS
sudo nmcli connection mod eth0-static ipv4.dns "192.0.2.1"
sudo nmcli connection up eth0-static
# 测试(应失败)
dig example.com
# 排查
resolvectl status
cat /etc/resolv.conf
# 修复
sudo nmcli connection mod eth0-static ipv4.dns "8.8.8.8"
sudo nmcli connection up eth0-static
dig example.com
练习 4:使用 hostnamectl 配置 FQDN
设置主机名为 web01.example.com,并确保 /etc/hosts 中正确配置。
sudo hostnamectl set-hostname web01.example.com
echo "192.168.1.50 web01.example.com web01" | sudo tee -a /etc/hosts
hostname -f
getent hosts web01
模拟题
题目 1
将系统主机名设置为 server01.example.com,配置 ens160 网卡的静态 IP 地址为 192.168.1.100/24,默认网关为 192.168.1.1,DNS 为 8.8.8.8。配置完成后验证网络连通性。
参考答案:sudo hostnamectl set-hostname server01.example.com → sudo nmcli connection add type ethernet con-name ens160-static ifname ens160 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 autoconnect yes → sudo nmcli connection up ens160-static → 验证:ip addr show ens160、ip route show、ping -c 2 192.168.1.1、ping -c 2 8.8.8.8、hostnamectl status。
题目 2
为系统添加一条静态路由:到 10.10.0.0/16 网段的数据包通过 192.168.1.254 转发。确保路由在重启后仍然生效。
参考答案:持久化方式(推荐):sudo nmcli connection mod eth0-static +ipv4.routes "10.10.0.0/16 192.168.1.254" → sudo nmcli connection up eth0-static → ip route show | grep 10.10 确认路由存在。临时方式(重启丢失):sudo ip route add 10.10.0.0/16 via 192.168.1.254。考试要求"重启后生效",必须用 nmcli。
题目 3
系统无法解析域名 www.example.com,请排查问题并修复。要求记录排查过程和使用的命令。
参考答案:排查步骤:① ping -c 2 8.8.8.8 确认网络层连通;② dig www.example.com 确认 DNS 解析失败;③ cat /etc/resolv.conf 检查 DNS 服务器配置是否正确;④ resolvectl status 查看 NetworkManager 下发的 DNS;⑤ grep hosts /etc/nsswitch.conf 确认解析顺序(files 应在 dns 前)。修复:若 DNS 服务器错误,sudo nmcli connection mod eth0-static ipv4.dns "8.8.8.8" → sudo nmcli connection up eth0-static;若 /etc/hosts 优先级问题,修正 nsswitch.conf 中 hosts 行顺序。
题目 4
系统有两块网卡 ens160(生产网络)和 ens192(管理网络)。要求 ens160 配置为 10.0.1.10/24,ens192 配置为 192.168.1.200/24,默认网关走 ens160,到 172.16.0.0/12 的流量走 ens192。
参考答案:分别创建两个连接:sudo nmcli connection add type ethernet con-name prod-static ifname ens160 ipv4.method manual ipv4.addresses 10.0.1.10/24 ipv4.gateway 10.0.1.1 autoconnect yes → sudo nmcli connection add type ethernet con-name mgmt-static ifname ens192 ipv4.method manual ipv4.addresses 192.168.1.200/24 ipv4.routes "172.16.0.0/12 192.168.1.1" autoconnect yes → 分别 up 两条连接 → 验证:ip route show 确认两条路由都存在。
题目 5
临时将 ens160 的 IP 地址改为 192.168.1.200/24(不修改现有连接配置),验证连通性后恢复原配置。
参考答案:使用 nmcli 的临时修改:sudo nmcli connection mod eth0-static ipv4.addresses 192.168.1.200/24 → sudo nmcli connection up eth0-static → 测试连通性 → 恢复原配置:sudo nmcli connection mod eth0-static ipv4.addresses 192.168.1.100/24 → sudo nmcli connection up eth0-static。或者使用 ip 命令临时修改:sudo ip addr add 192.168.1.200/24 dev ens160 → 测试 → sudo ip addr del 192.168.1.200/24 dev ens160(重启丢失)。
题目 6
配置系统使用两个 DNS 服务器:8.8.8.8(主)和 1.1.1.1(备),并确保 /etc/hosts 中的本地解析优先于 DNS。
参考答案:修改 DNS 配置:sudo nmcli connection mod eth0-static ipv4.dns "8.8.8.8 1.1.1.1" → sudo nmcli connection up eth0-static → 确认 /etc/nsswitch.conf 中 hosts 行为 files dns(files 在前,DNS 在后)→ 添加 hosts 条目:echo "192.168.1.50 myserver.local" | sudo tee -a /etc/hosts → 验证:getent hosts myserver.local 应返回 192.168.1.50。
题目 7
系统网络出现故障:ens160 接口显示 UP,但无法 ping 通网关。请排查问题并修复。
参考答案:排查步骤:① ip addr show ens160 检查 IP 配置是否正确;② ip route show 检查默认网关是否存在;③ ip neigh show 检查 ARP 表是否有网关的 MAC 地址;④ ping -c 2 网关IP 测试连通性;⑤ 若 ARP 表无条目,检查二层连通性(交换机端口、VLAN 配置);⑥ 检查防火墙:sudo firewall-cmd --list-all 或 sudo iptables -L -n。常见原因:网关 IP 配置错误、子网掩码错误、二层隔离(VLAN)、防火墙规则。
题目 8
配置系统使用 IPv6 地址 2001:db8::100/64,网关 2001:db8::1,DNS 2001:4860:4860::8888。同时保留现有的 IPv4 配置。
参考答案:修改现有连接的 IPv6 设置:sudo nmcli connection mod eth0-static ipv6.method manual ipv6.addresses 2001:db8::100/64 ipv6.gateway 2001:db8::1 ipv6.dns 2001:4860:4860::8888 → sudo nmcli connection up eth0-static → 验证:ip -6 addr show ens160、ip -6 route show、ping6 -c 2 2001:db8::1。
最佳实践
- 优先使用
nmcli connection而非ip addr,因为 nmcli 配置是持久化的,重启不会丢失 - 修改网络配置前先备份当前连接:
nmcli connection show eth0-static > /tmp/backup.txt - 不要在 SSH 远程操作时重启 NetworkManager,使用
nmcli connection up逐个激活 - 配置完成后立即验证:
ip addr show→ip route show→ping 网关→ping DNS - 考试中遇到不确定的网卡名称,先执行
nmcli device status确认
验证 checklist
ip addr show # IP 配置正确
ip route show # 默认网关和静态路由
ping -c 2 8.8.8.8 # 外网连通性
ping -c 2 目标主机 # 内网连通性
dig example.com # DNS 解析
hostnamectl status # 主机名
cat /etc/hosts # 本地解析
nmcli connection show # NetworkManager 连接状态
学习检查点
学完本章后,请检验自己是否掌握以下内容:
| 检查项 | 自测问题 | 验证方法 |
|---|---|---|
| 概念理解 | 能用自己的话解释 NetworkManager 和 nmcli 的工作原理 | 尝试向他人讲解 |
| 命令操作 | 能不查文档完成 nmcli 网络配置和连接管理 | 在终端实际执行 |
| 原理掌握 | 能说出静态 IP 和 DHCP 配置的区别及 DNS 解析原理 | 画出流程图 |
| 故障排查 | 能独立排查网络配置错误导致无法联网的问题 | 模拟故障并修复 |
| 最佳实践 | 能说明为什么生产环境建议使用静态 IP | 对比不同方案 |
本章总结
网络配置考点集中在 nmcli 的 11 个子命令体系与连接配置文件 /etc/NetworkManager/system-connections。记住"先查状态(nmcli dev status)→再改连接(nmcli con mod)→后激活(nmcli con up)"的配置顺序。hosts 文件与 DNS 解析顺序是易错点,考试中应用 nmcli 而非直接改 ifcfg 文件。
延伸阅读
- 4.5:网络故障排查 网络故障排查——tcpdump、mtr、ss