在进行运行环境迁移,特别是从 CentOS 7.6 迁移到 CentOS 8.0 时,网络配置方面存在一些关键区别。这些变化主要体现在网络管理工具、配置文件格式、默认服务和命名约定等方面。以下是详细的对比:
1. 网络管理工具的变化
| 特性 | CentOS 7.6 | CentOS 8.0 |
|---|---|---|
| 默认网络管理器 | NetworkManager(可选)传统使用 network.service(基于 ifcfg-* 文件) |
默认启用并推荐使用 NetworkManagernetwork.service 已被弃用(从 RHEL/CentOS 8 开始) |
| 命令行工具 | system-config-network, nmtui, nmcli |
主要使用 nmcli 和 nmtuisystem-config-network 被移除 |
✅ 说明:CentOS 8 中传统的
network.service(即/etc/sysconfig/network-scripts/ifcfg-*配置方式)虽然仍可用,但已被标记为废弃(deprecated),官方推荐全面转向NetworkManager。
2. 配置文件位置与格式
| 项目 | CentOS 7.6 | CentOS 8.0 |
|---|---|---|
| 网络接口配置文件 | /etc/sysconfig/network-scripts/ifcfg-<interface>例如: ifcfg-ens33 |
同样支持该路径下的文件(兼容),但建议通过 nmcli 或 NetworkManager 的 keyfile 存储(如 /etc/NetworkManager/system-connections/) |
| 推荐的配置方式 | 编辑 ifcfg-* 文件 |
使用 nmcli 命令或图形界面配置,避免手动编辑文件 |
⚠️ 注意:在 CentOS 8 中,若使用
NetworkManager,直接修改ifcfg-*文件可能导致配置不一致,应优先使用nmcli。
3. 网络接口命名规则
| 项目 | CentOS 7.6 | CentOS 8.0 |
|---|---|---|
| 默认网卡命名 | 支持传统 eth0(可通过内核参数启用)默认使用 一致性网络设备命名(Consistent Network Device Naming),如 ens33, enp0s3 |
继续使用一致性命名(如 ens33)更严格地遵循 systemd 命名规则 |
🔧 可通过内核参数(如
biosdevname=0和net.ifnames=0)恢复eth0命名,但不推荐。
4. 命令行工具使用差异
CentOS 7.6 常见操作:
# 启动/重启网络服务
systemctl restart network
# 查看 IP
ip addr show
# 修改 ifcfg 文件后重载
ifdown eth0 && ifup eth0
CentOS 8.0 推荐操作:
# 使用 nmcli 管理连接
nmcli connection show
nmcli connection up "System ens33"
nmcli connection modify "System ens33" ipv4.addresses 192.168.1.100/24
nmcli connection down "System ens33" && nmcli connection up "System ens33"
# 重启 NetworkManager(相当于“重启网络”)
systemctl restart NetworkManager
📌 提示:不要随意重启
NetworkManager服务,可能影响 SSH 连接。
5. DHCP vs 静态 IP 配置示例对比
CentOS 7.6 (/etc/sysconfig/network-scripts/ifcfg-ens33):
DEVICE=ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
CentOS 8.0(使用 nmcli 设置静态 IP):
nmcli connection modify "System ens33"
ipv4.method manual
ipv4.addresses 192.168.1.100/24
ipv4.gateway 192.168.1.1
ipv4.dns "8.8.8.8"
然后重新激活连接:
nmcli connection down "System ens33"
nmcli connection up "System ens33"
6. 防火墙与网络服务集成
- CentOS 8 使用
firewalld作为默认防火墙(与 CentOS 7 相同),但更紧密集成NetworkManager。 - 区域(zone)管理通过
firewall-cmd,且接口绑定区域由 NetworkManager 自动处理。
7. 其他注意事项
| 项目 | 说明 |
|---|---|
ifconfig 命令 |
在 CentOS 8 中默认不再安装(属于 net-tools 包),推荐使用 ip addr 和 ss |
hostnamectl |
两个版本都支持,用于设置主机名 |
| DNS 配置 | 更多由 NetworkManager 管理,写入 /etc/resolv.conf(可能由 systemd-resolved 控制) |
✅ 迁移建议
- 评估当前网络配置方式:确认是否使用
network.service或NetworkManager。 - 逐步迁移到
nmcli:避免直接编辑ifcfg-*文件,改用nmcli管理。 - 测试前备份配置:迁移前备份
/etc/sysconfig/network-scripts/和 NetworkManager 配置。 - 更新自动化脚本:将
ifup/ifdown、service network restart替换为nmcli命令。 - 检查云环境兼容性:在 AWS、OpenStack 等环境中,通常已适配
NetworkManager。
总结
| 方面 | CentOS 7.6 | CentOS 8.0 |
|---|---|---|
| 网络服务 | network.service(主) |
NetworkManager(主,network.service 废弃) |
| 配置方式 | 手动编辑 ifcfg-* |
推荐 nmcli / nmtui |
| 工具支持 | ifconfig, service network restart |
ip, nmcli, systemctl restart NetworkManager |
| 兼容性 | 支持传统命名 | 一致性命名为主 |
🔄 迁移核心:从“文件驱动 + network.service”向“声明式 + NetworkManager”转变。
如有进一步需求(如批量迁移脚本、Ansible playbook 示例),可继续提问。
云小栈