CentOS 7重启网络服务,CentOS 8为何弃用network-scripts
网卡突然罢工,远程连不上,第一反应多半是“重启网络”。在CentOS 7里,这条命令闭着眼睛都能敲:systemctl restart network,回车就能喝口咖啡等灯变绿。可同样的动作搬到CentOS 8,屏幕直接甩你一句“unit network.service not found”。别怀疑人生,不是手滑,是官方把整套network-scripts踢出了系统。

CentOS 7重启网络服务的正确姿势
先复习旧考卷。CentOS 7依旧沿用/etc/sysconfig/network-scripts/那一摞ifcfg-*文件,想改IP、改DNS、改网关,直接vi ifcfg-eth0就行。改完保存,执行:
systemctl restart network
这条指令会调用/usr/lib/systemd/system/network.service,它再去逐行扫描ifcfg文件,最后调用ifup、ifdown脚本把网卡拎起来。逻辑简单粗暴,用了十来年,坑也明明白白:
- 配置文件与运行态脱节,改完忘了重启,容易“配置生效没?”
- 脚本层层调用,出错信息被吞,排障靠猜。
- 不支持现代特性,像Wi-Fi漫游、IPv6前缀委派、SR-IOV热插拔,都得自己打补丁。

可它胜在“人人会”,网上一搜全是教程,所以CentOS 7至今在机房保有量依旧高。
CentOS 8为何直接砍掉network-scripts
红帽在8里拍板:默认网络栈交给NetworkManager,network-scripts包被挪到AppStream仓库,装也能装,但官方提示“请仅在升级场景临时使用”。换句话说,新装系统就别惦记了。原因三条,条条扎心:

1. 统一配置入口
NetworkManager提供nmcli、nmtui、nm-connection-editor,命令行、伪图形、图形界面全覆盖,一份配置多工具共享,不再出现“vi派”与“图形派”各写各的。
2. 热插拔与状态监控
网卡上线、下线、VPN切换、Wi-Fi漫游,NetworkManager通过D-Bus实时广播,其他服务能立即收到事件,写脚本再也不用定时轮询。
3. 云和容器友好
nm-cloud-setup子模块可自动识别AWS、Azure、GCP元数据,一键配置多网卡、多路由表;配合podman、docker的macvlan、ipvlan,NetworkManager能动态创建/销毁接口,而network-scripts只能靠人工ifup-eth0:1硬怼。
再加上systemd一统江湖,network.service这种SysV风格的脚本自然成了“遗产”。红帽干脆长痛不如短痛,直接移除,逼用户搬家。
NetworkManager接管后该怎么重启网络
CentOS 8里,网卡配置被拆成/etc/NetworkManager/system-connections/*.nmconnection,INI风格,键值对一目了然。想重启网络,有三条常用路:
- 单卡重启
nmcli connection down eth0 && nmcli connection up eth0好处:不影响其他网卡,SSH稳稳在线。
- 全局重载
nmcli networking off && nmcli networking on相当于把整台机的TCP/IP栈推倒重来,适合大规模改路由、改DNS后一次性生效。
- 直接编辑文件
改完
*.nmconnection后执行nmcli connection reload,再nmcli connection up,无需重启系统,也无需特权重启服务。
有人吐槽“命令太长”,其实nmcli con reload; nmcli con up eth0就能搞定,敲两次键盘比systemctl restart network多四个字母,换来的是热插拔、事件通知、云元数据自动配置,不亏。
老脚本迁移踩坑实录
如果机器从CentOS 7原地升级到8,ifcfg-eth0会被NetworkManager自动翻译成eth0.nmconnection,但以下细节常被忽略:
BOOTPROTO=none会被转成ipv4.method manual,可如果你原先手写IPADDR0=、PREFIX0=,却忘了写GATEWAY0=,升级后网关字段会被清空,导致“能内网不能外网”。
HWADDR与UUID冲突时,NetworkManager优先信任UUID,结果MAC地址绑定失效,虚拟机克隆场景最常见。解决方法是nmcli con delete旧连接,再nmcli con add新建,让系统自动生成新UUID。
ONBOOT=no会被忽略,NetworkManager默认所有连接随系统启动,如需“开机不启用”,必须nmcli con mod eth0 connection.autoconnect no。
把这些坑踩一遍,再回看官方文档那句“network-scripts不再维护”,就能体会红帽的潜台词:旧船票登不了新船,早换早省心。
总结与建议
CentOS 7下,systemctl restart network仍是救命稻草,但记得提前ip addr备份现场,防止配置回滚找不到北。新装或升级的CentOS 8,直接拥抱NetworkManager,用nmcli写脚本,用nmtui救急,别再yum install network-scripts走回头路。毕竟维护者已经散伙,哪天脚本里调用的ifup悄悄失踪,哭都来不及。
CentOS 7重启网络服务靠network.service,CentOS 8弃用network-scripts是官方逼你升级工具链,早点习惯nmcli,才能在下一次网卡罢工时,一杯咖啡喝完,SSH标签依旧绿得发亮。
