跳转至

3. 网络配置

本章介绍 RHEL 10 的网络配置管理,以 NetworkManager 为核心工具,涵盖静态 IPv4/IPv6 地址配置、DNS 管理、连接激活与基础网络诊断。稳定的网络配置是后续订阅注册、SSH 远程访问、软件安装等一切操作的前提条件。

知识点:NetworkManager

RHEL 10 中所有网络接口均由 NetworkManager 统一管理,配置文件存储于 /etc/NetworkManager/system-connections/,格式为 keyfile(.nmconnection)。旧版 /etc/sysconfig/network-scripts/ 脚本格式自 RHEL 9 起即被标记为废弃,RHEL 10 已彻底移除该组件,不应再使用,也无法通过安装 network-scripts 包找回。


3.1 前提条件

  • RHEL 10 已完成安装(第 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 10 使用 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

操作路径:

  1. 选择 Edit a connection
  2. 选择接口 ens33,按 Enter 编辑
  3. 将 IPv4 CONFIGURATION 从 <Automatic> 改为 <Manual>
  4. Addresses:192.168.1.100/24
  5. Gateway:192.168.1.1
  6. DNS servers:8.8.8.8(添加第二条 8.8.4.4)
  7. 按 OK 保存,返回主界面
  8. 选择 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.3.4 配置 IPv6 地址(RHCSA 官方考点)

RHCSA 明确要求同时掌握 IPv4 与 IPv6 地址配置。本教程实验环境以 IPv4 为主([ipv6] method=disabled),但需理解并能够配置 IPv6。

# 方法一:nmcli 配置静态 IPv6 地址
nmcli connection modify ens33 ipv6.method manual
nmcli connection modify ens33 ipv6.addresses 2001:db8:1::100/64
nmcli connection modify ens33 ipv6.gateway 2001:db8:1::1
nmcli connection modify ens33 ipv6.dns "2001:4860:4860::8888"

# 应用变更(需重新激活连接)
nmcli connection up ens33

# 验证
ip -6 addr show ens33
ip -6 route show
ping6 -c 4 2001:4860:4860::8888

对应的 keyfile 写法(在 [ipv6] 段落中):

[ipv6]
method=manual
address1=2001:db8:1::100/64,2001:db8:1::1
dns=2001:4860:4860::8888;

IPv6 常用 method 取值:

method 说明
disabled 完全禁用 IPv6(本教程实验环境默认值)
auto 通过 SLAAC/DHCPv6 自动获取地址(类似 IPv4 的 dhcp)
manual 手动指定静态地址(同上例)
link-local 仅启用链路本地地址(fe80::/10),不参与路由

IPv6 地址格式要点

IPv6 地址为 128 位,以冒号分隔的 8 组十六进制数表示,连续的全零组可用 :: 缩写一次(一个地址中只能出现一次 ::,否则无法确定省略的组数)。/64 是最常见的子网前缀长度,对应网络位固定为 64 位,主机位也固定为 64 位。RHCSA 考试中常要求"验证 IPv6 地址已正确配置",ip -6 addr show 是最直接的验证命令。


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 实践任务

  1. 执行 nmcli device status 查看接口状态。
  2. 使用 nmcli connection modify 方式,将 ens33 配置为:
    • IP:192.168.1.100/24,网关:192.168.1.1,DNS:8.8.8.8 8.8.4.4
  3. 激活连接并完整验证:

    nmcli connection up ens33
    ip addr show ens33
    ip route show default
    ping -c 3 8.8.8.8
    dig google.com
    
  4. 使用 nmtui 查看(不修改)相同连接的配置,熟悉交互界面。

  5. 执行 firewall-cmd --list-all,确认 SSH(端口 22)已在防火墙开放规则中。

3.9 自测问题

Q1:RHEL 10 中为什么不能直接编辑 /etc/sysconfig/network-scripts/ 下的文件?

该组件已在 RHEL 10 中被彻底移除(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 服务器地址。

Q4:IPv6 地址中的 :: 缩写规则是什么?为什么一个地址中只能出现一次?

:: 表示"一段或多段连续的全零组",可以省略中间任意长度的连续 0000 组以简化书写。若允许出现两次 ::,解析时无法确定每处 :: 各自代表省略了多少组零,地址会产生歧义,因此 IPv6 规范规定一个地址中 :: 最多只能出现一次。


3.10 章节总结

本章介绍了 RHEL 10 网络配置的三种标准方法:nmcli(脚本化首选)、nmtui(交互式)和 keyfile 直接编辑,并补充了 IPv6 地址的配置方式(ipv6.method 的 disabled/auto/manual/link-local 四种取值)。所有配置均通过 NetworkManager 管理,确保持久性。稳定的网络配置为后续用户管理、SSH 配置、订阅注册提供了可靠的连接基础。