3. 网络配置
本章介绍 RHEL 9 的网络配置管理,以 NetworkManager 为核心工具,涵盖静态 IP 配置、DNS 管理、连接激活与基础网络诊断。稳定的网络配置是后续订阅注册、SSH 远程访问、软件安装等一切操作的前提条件。
知识点:NetworkManager
RHEL 9 中所有网络接口均由 NetworkManager 统一管理,配置文件存储于 /etc/NetworkManager/system-connections/,格式为 keyfile(.nmconnection)。旧版 /etc/sysconfig/network-scripts/ 脚本格式已在 RHEL 9 中废弃,RHEL 10 已彻底移除,不应再使用。
3.1 前提条件
- RHEL 9 已完成安装(第 1 章),主机名
linuxdc,Vim 已配置(第 2 章)。 - 通过控制台或 SecureCRT(SSH 端口 22)以 root 身份登录。
确认 NetworkManager 已启用:
systemctl is-active NetworkManager
3.2 查看网络状态
# 查看所有网络设备状态
nmcli device status
# 查看所有连接配置
nmcli connection show
# 查看指定接口的 IP 信息(简洁)
ip -brief address show
# 查看指定接口详细信息
ip addr show ens33
# 查看默认路由
ip route show default
# 查看 DNS 配置
nmcli device show ens33 | grep IP4.DNS
网络接口命名
RHEL 9 使用 systemd 可预测网络接口命名:VMware 第一块网卡通常为 ens33,物理机按 PCI 位置命名(如 enp3s0)。执行 ip link show 查看实际接口名称。
3.3 配置静态 IP
安装时已在向导中配置了静态 IP(192.168.1.100/24)。本节通过 NetworkManager 对配置进行规范化管理,确保持久生效。
3.3.1 方法一:nmcli 命令行(推荐,适合脚本化)
修改现有连接为静态 IP:
nmcli connection modify ens33 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 8.8.4.4" \
ipv4.dns-search "linuxdc.local" \
connection.autoconnect yes
# 重新激活连接以使配置生效
nmcli connection up ens33
两步缺一不可
modify 只修改持久化配置,不立即生效;connection up 才能激活变更。两步必须都执行。
新增连接(适用于新网卡):
nmcli connection add \
type ethernet \
ifname ens33 \
con-name ens33-static \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection up ens33-static
检查点
执行 ip addr show ens33,确认显示 192.168.1.100/24;执行 ping -c 3 8.8.8.8 确认外网连通。
3.3.2 方法二:nmtui 文本交互界面(适合交互操作)
nmtui
操作路径:
- 选择 Edit a connection
- 选择接口
ens33,按Enter编辑 - 将 IPv4 CONFIGURATION 从
<Automatic>改为<Manual> - Addresses:
192.168.1.100/24 - Gateway:
192.168.1.1 - DNS servers:
8.8.8.8(添加第二条8.8.4.4) - 按
OK保存,返回主界面 - 选择 Activate a connection,激活
ens33
3.3.3 方法三:直接编辑 keyfile(适合精确控制)
# 查找配置文件路径
nmcli -f NAME,FILENAME connection show
# 编辑配置文件
vim /etc/NetworkManager/system-connections/ens33.nmconnection
配置文件标准格式:
[connection]
id=ens33
type=ethernet
interface-name=ens33
autoconnect=true
[ethernet]
[ipv4]
method=manual
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;8.8.4.4;
dns-search=linuxdc.local;
[ipv6]
method=disabled
设置权限并重载:
# 权限必须为 600,否则 NetworkManager 拒绝加载
chmod 600 /etc/NetworkManager/system-connections/ens33.nmconnection
nmcli connection reload
nmcli connection up ens33
文件权限要求
.nmconnection 文件权限必须为 600(仅 root 可读写)。权限过宽(如 644)会被 NetworkManager 拒绝,连接将无法激活。
3.4 配置双网卡
企业服务器通常需要独立的管理网络和业务网络,避免路由冲突:
# 配置第二块网卡 ens34 为管理网(不设置默认路由)
nmcli connection modify ens34 \
ipv4.method manual \
ipv4.addresses 10.0.0.100/24 \
ipv4.never-default yes \
connection.autoconnect yes
nmcli connection up ens34
ipv4.never-default
该参数阻止此连接产生默认路由,避免多网卡场景下路由表冲突。每台主机只允许一条默认路由。
3.5 防火墙端口管理
NetworkManager 负责网络连接,firewalld 负责流量过滤,两者协同工作。
# 查看当前防火墙状态
firewall-cmd --list-all
# 开放端口(永久生效)
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --reload
# 开放标准服务(推荐,语义更清晰)
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 验证
firewall-cmd --list-ports
firewall-cmd --list-services
第 5 章说明
第 5 章(SSH 配置)将把 SSH 端口从 22 更改为 2222,届时需要同步更新防火墙规则。本章无需提前修改。
3.6 网络诊断
# 连通性测试
ping -c 4 192.168.1.1 # 测试网关
ping -c 4 8.8.8.8 # 测试外网 IP
ping -c 4 google.com # 测试 DNS 解析
# DNS 解析测试
dig google.com # 详细 DNS 查询
nslookup google.com # 简单 DNS 查询
# 端口与服务监听
ss -tuln # 查看所有监听端口
ss -tulnp | grep sshd # 查看 sshd 监听端口
# 接口统计
ip -s link show ens33 # 查看收发包统计
# 路由追踪(需安装)
dnf install -y traceroute
traceroute 8.8.8.8
3.7 常见问题与排查
| 问题现象 | 排查步骤 |
|---|---|
connection up 后 IP 未生效 |
检查语法:nmcli connection show ens33;确认 method=manual 已保存 |
| DNS 解析失败 | nmcli device show ens33 | grep DNS;检查 /etc/resolv.conf |
| 重启后 IP 恢复为 DHCP | 确认 connection.autoconnect yes 且 ipv4.method manual 已持久化 |
.nmconnection 文件无法加载 |
ls -l 确认权限为 600;chmod 600 修正后重载 |
# NetworkManager 日志(排查连接问题)
journalctl -u NetworkManager --since "30 minutes ago"
3.8 实践任务
- 执行
nmcli device status查看接口状态。 - 使用
nmcli connection modify方式,将ens33配置为:- IP:
192.168.1.100/24,网关:192.168.1.1,DNS:8.8.8.8 8.8.4.4
- IP:
-
激活连接并完整验证:
nmcli connection up ens33 ip addr show ens33 ip route show default ping -c 3 8.8.8.8 dig google.com -
使用
nmtui查看(不修改)相同连接的配置,熟悉交互界面。 - 执行
firewall-cmd --list-all,确认 SSH(端口 22)已在防火墙开放规则中。
3.9 自测问题
Q1:RHEL 9 中为什么不能直接编辑 /etc/sysconfig/network-scripts/ 下的文件?
该格式已在 RHEL 9 中废弃,NetworkManager 不会读取这些文件。所有网络配置必须通过 NetworkManager 管理(nmcli、nmtui 或 keyfile),否则配置不会生效且可能在系统升级后丢失。
Q2:nmcli connection modify 执行后为何 IP 没有立即变化?
modify 只写入持久化配置,不中断当前连接。需执行 nmcli connection up ens33 重新激活连接,新配置才会生效。
Q3:如何查看 NetworkManager 为某个接口分配了哪些 DNS 服务器?
执行 nmcli device show ens33 | grep IP4.DNS,该命令显示 NetworkManager 实际下发的 DNS 服务器地址。
3.10 章节总结
本章介绍了 RHEL 9 网络配置的三种标准方法:nmcli(脚本化首选)、nmtui(交互式)和 keyfile 直接编辑。所有配置均通过 NetworkManager 管理,确保持久性。稳定的网络配置为后续用户管理、SSH 配置、订阅注册提供了可靠的连接基础。