在 RHEL(Red Hat Enterprise Linux)的不同版本中,网卡配置文件的演进体现了从“传统脚本管理”向“NetworkManager 声明式管理”的过渡。以下是详细的对比总结:
1、 RHEL 7/Centos7 与 RHEL 9/10 的网卡配置异同
| 特性 | RHEL /centos 7 | RHEL 9/rockylinux9 | RHEL 10/rockylinux10 |
| 管理核心 | NetworkManager + network 脚本 | NetworkManager (强依赖) | NetworkManager (唯一核心) |
| 默认文件位置 | /etc/sysconfig/network-scripts/ | /etc/NetworkManager/system-connections/ | /etc/NetworkManager/system-connections/ |
| 文件格式 | ifcfg (Shell 变量) | Keyfile (INI 格式) | Keyfile (INI 格式) |
| ifcfg 脚本兼容性 | 完美支持 | 已弃用 (Deprecated),需插件支持 | 已移除 (Removed),彻底不支持 |
| 默认 DHCP 客户端 | dhclient | 内置客户端 / dhclient | 仅限内置客户端 (dhclient 已删) |
一、RHEL/CentOS 7(含 7)—— 传统 ifcfg 文件方式
这是经典的配置方法,虽然 8/9 已不推荐,但 7 及以下版本依然稳定使用。
1. 打开网络配置文件
配置文件位于 /etc/sysconfig/network-scripts/ifcfg-<接口名>。先确认你的网络接口名(如 eth0、ens33):
ip a
然后编辑对应文件,例如 ifcfg-ens33:
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
2. 修改为静态 IP
确保文件包含以下关键参数:
DEVICE=ens33 # 设备名,需与文件名一致
TYPE=Ethernet
BOOTPROTO=static # 将 dhcp 改为 static
ONBOOT=yes # 开机自启
IPADDR=192.168.1.100 # 你要设置的 IP
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1 # 网关
DNS1=114.114.114.114 # DNS 服务器
DNS2=8.8.8.8
保存并退出。
3. 重启网络服务生效
sudo systemctl restart network
# 或使用旧命令
sudo service network restart
4. 验证配置
ip addr show ens33 # 查看 IP 是否配置成功
ping -c 4 114.114.114.114 # 测试外网连通性
二、RHEL/CentOS 8/9(含 Rocky/AlmaLinux 8/9)—— nmcli 推荐方式
从 RHEL 8 开始,网络配置由 NetworkManager 统一管理,/etc/sysconfig/network-scripts/ 目录已被弃用。官方推荐使用 nmcli 命令或 nmtui 文本界面。
方法 A:使用 nmcli 命令行(最推荐,适合脚本)
nmcli 是 NetworkManager 的命令行工具,修改后立即生效,无需重启服务。
1. 查看当前网络连接和设备
nmcli connection show # 查看连接名(NAME 列)
nmcli device status # 查看设备状态
记下你的连接名(例如 ens33 或 Wired connection 1)。
2. 修改为静态 IP
# 设置 IP 地址、子网掩码(用 CIDR 格式)
sudo nmcli connection mod ens33 ipv4.addresses 192.168.1.100/24
# 设置网关
sudo nmcli connection mod ens33 ipv4.gateway 192.168.1.1
# 设置 DNS(多个用逗号分隔)
sudo nmcli connection mod ens33 ipv4.dns "114.114.114.114,8.8.8.8"
# 将获取方式改为手动(manual)
sudo nmcli connection mod ens33 ipv4.method manual
# 设置开机自动连接
sudo nmcli connection mod ens33 connection.autoconnect yes
注意:
ipv4.addresses用的是 CIDR 格式(如192.168.1.100/24),而非传统的IPADDR+NETMASK。
3. 重新激活连接使配置生效
sudo nmcli connection down ens33
sudo nmcli connection up ens33
或者直接重启 NetworkManager 服务:
sudo systemctl restart NetworkManager
4. 验证配置
ip addr show ens33
ip route show default # 查看默认网关
cat /etc/resolv.conf # 查看 DNS
方法 B:使用 nmtui 文本界面
如果不熟悉命令行参数,nmtui 提供了友好的界面。
1. 启动 nmtui
sudo nmtui
2. 操作步骤
- 选择 Edit a connection → 选中你的网卡(如
ens33)→ Edit。 - 将 IPv4 CONFIGURATION 从
Automatic改为Manual。 - 在 Addresses 后填写 IP/掩码(如
192.168.1.100/24)。 - 填写 Gateway 和 DNS servers。
- 选择 OK 保存,返回主菜单。
- 选择 Activate a connection,先 Deactivate 再 Activate 该连接。
3. 验证
同样使用 ip addr 和 ping 测试。
三、补充说明:RHEL 8/9 的网络配置文件新位置
如果习惯直接编辑文件,RHEL 8/9 的配置文件存储在 /etc/NetworkManager/system-connections/ 目录下,格式为 .nmconnection。
sudo vi /etc/NetworkManager/system-connections/ens33.nmconnection
内容示例:
[connection]
id=ens33
uuid=xxxx
type=ethernet
autoconnect=true
[ipv4]
method=manual
addresses=192.168.1.100/24
gateway=192.168.1.1
dns=114.114.114.114;8.8.8.8;
修改后需重启 NetworkManager:
sudo systemctl restart NetworkManager
四、常见问题快速排查
| 问题 | 排查命令/思路 |
|---|---|
| 修改后不生效 | 确保执行了 nmcli connection up 激活连接,或重启 NetworkManager。 |
| 网关冲突 | ip route show default 检查是否有多条默认路由,只保留一条正确的。 |
| DNS 不生效 | 确认 ipv4.dns 已设置,并检查 /etc/resolv.conf 是否被覆盖。 |
| 虚拟机网络不通 | 检查虚拟网络模式(Bridged/NAT)与宿主机网关设置。 |
发表回复