2.3.7 网络配置在不同发行版的差异

不同发行版的网络配置核心概念一致(接口、IP、网关、DNS),但配置文件路径、管理服务与生效方式不同。先确认发行版与网络管理栈,再做配置变更,避免被其他工具覆盖。

网络配置栈关系示意图:

文章图片

发行版差异与核心文件#

  • RHEL/CentOS/AlmaLinux/Rocky
  • 旧版:/etc/sysconfig/network-scripts/ifcfg-*
  • 新版:NetworkManager 默认,推荐 nmcli
  • Debian/Ubuntu
  • 旧版:/etc/network/interfaces + ifup/ifdown
  • Ubuntu 18.04+:/etc/netplan/*.yaml + netplan apply
  • SUSE/openSUSE
  • wickedNetworkManager
  • 配置在 /etc/sysconfig/network/ifcfg-*

典型静态IP配置示例(含命令解释)#

RHEL系(NetworkManager + nmcli)#

# 1) 查看接口名(如 ens33/eth0)
ip link

# 2) 创建/修改连接并设置静态IP
nmcli con mod "System ens33" ipv4.addresses 192.168.10.20/24 \
  ipv4.gateway 192.168.10.1 ipv4.dns "8.8.8.8,114.114.114.114" \
  ipv4.method manual

# 3) 启用连接
nmcli con up "System ens33"

# 4) 验证
ip addr show ens33
ip route
resolvectl status

命令解释
nmcli con mod 修改连接配置;ipv4.method manual 指定静态IP;nmcli con up 让配置立即生效。

Ubuntu 20.04+(Netplan)#

/etc/netplan/01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      addresses: [192.168.10.30/24]
      gateway4: 192.168.10.1
      nameservers:
        addresses: [8.8.8.8,114.114.114.114]

生效与验证:

# 应用配置
sudo netplan apply

# 验证
ip addr show ens33
ip route
resolvectl status

关键点renderer 选择 networkdNetworkManager,与当前系统管理栈一致。

SUSE(wicked)#

# 1) 查看接口
ip link

# 2) 编辑配置文件
sudo vi /etc/sysconfig/network/ifcfg-eth0

文件示例:

BOOTPROTO='static'
IPADDR='192.168.10.40/24'
GATEWAY='192.168.10.1'
DNS1='8.8.8.8'
STARTMODE='auto'

生效:

sudo wicked ifdown eth0
sudo wicked ifup eth0

DNS配置差异示例#

NetworkManager 管理的 DNS#

nmcli con mod "System ens33" ipv4.dns "1.1.1.1,8.8.8.8"
nmcli con up "System ens33"
resolvectl status

说明:直接编辑 /etc/resolv.conf 可能被覆盖,应通过上层工具配置。

systemd-resolved 手动临时变更#

sudo resolvectl dns ens33 1.1.1.1 8.8.8.8
resolvectl status

迁移/排错步骤(可执行流程)#

# 1) 确认网络管理器
systemctl status NetworkManager
systemctl status systemd-networkd
systemctl status wicked

# 2) 检查是否有多个管理器冲突
nmcli general status
ps -ef | egrep 'NetworkManager|networkd|wicked'

# 3) 查看IP与路由
ip addr
ip route

# 4) DNS与连通性验证
resolvectl status
ping -c 3 8.8.8.8
curl -I https://www.example.com

常见问题与解决#

  1. 配置不生效或被覆盖
    - 原因:多管理器并存(如 NetworkManager 与 network-scripts)。
    - 解决:保留一种管理器,停用另一种并统一配置入口。
  2. DNS 解析失败但 IP 可达
    - 原因:resolv.conf 被自动生成。
    - 解决:改用 nmclinetplan 配置 DNS。
  3. 重启后丢失 IP
    - 原因:配置文件未持久化。
    - 解决:确认对应发行版的配置文件路径与生效命令。

练习题(含目标与验证)#

  1. RHEL系:使用 nmcliens33 设为静态IP 192.168.56.10/24,网关 192.168.56.1,DNS 8.8.8.8
    - 验证:ip addr show ens33ip routeresolvectl status
  2. Ubuntu:编写 Netplan 文件设置静态IP 10.0.0.20/24,网关 10.0.0.1
    - 验证:netplan applyip addrping 10.0.0.1
  3. 排错:模拟 DNS 失效(将 DNS 改为不存在的地址),用 resolvectl statusdig 排查并修复。