CentOS network-scripts被废弃后的替代方案
装完系统一瞅,/etc/sysconfig/network-scripts/里居然空荡荡,习惯了的ifcfg-eth0也没影,不少人当场傻眼。别急着回退老版本,红帽系早就把network-scripts标成“遗留件”,现在默认用NetworkManager管网卡,既省配置又带自动恢复,只是换了个玩法。把常用场景拆成三条路,照着抄命令就能上线,省得半夜被断网叫醒。

为什么network-scripts突然消失
早年的network-scripts靠一堆ifcfg-*文件+network服务,脚本层层调用,改个IP得翻好几处,一旦写错UUID就全军覆没。Systemd一统江湖后,NetworkManager自带D-Bus接口,能热插拔、能自动检测Wi-Fi、能配合云厂商的metadata,维护成本直线下降。红帽干脆把network-scripts踢出发行版,源码仓库留一份仅供考古,默认安装镜像里连包都不带,于是出现“文件去哪了”的幻觉。
方案一:nmcli一行命令搞定固定IP
最无痛的切法就是直接拥抱nmcli。它把IP、网关、DNS、路由全部收进NetworkManager的连接配置文件,支持回滚,语法比旧日期的ifcfg简洁。
查看现有连接名:
nmcli connection show

假设设备名是ens33,先备份原配置:
nmcli connection modify 'Wired connection 1' ipv4.addresses 192.168.1.88/24 ipv4.gateway 192.168.1.1 ipv4.dns '223.5.5.5 8.8.8.8' ipv4.method manual
立即生效:
nmcli connection up 'Wired connection 1'
改完ifconfig看一眼,地址已经稳如老狗,重启机器也不会丢。需要多网卡 bonding ?继续用nmcli加模式即可,不用再手写ifcfg-bond0。
方案二:nmtui文本菜单,拯救手残党

有人嫌背命令麻烦,可以进nmtui,在字符界面里上下键勾选。启动命令:
nmtui
选“Edit a connection”→找到对应网卡→IPv4 CONFIGURATION改成Manual→Addresses、Gateway、DNS一条条填完→OK→Back→Quit,全程不用敲长串参数。退出后NetworkManager自动写配置到/etc/NetworkManager/system-connections/,权限0600,root以外谁也改不了,比当年ifcfg的644安全得多。
方案三:原生keyfile,脚本批量下发
机房一次性上架五十台机器,点菜单能点到手抽筋,这时直接怼keyfile最快。keyfile其实就是INI风格,放在/etc/NetworkManager/system-connections/,例如static_ens33.nmconnection:
[connection]id=static_ens33
uuid=7b2c8e4a-5d1e-4e12-a744-3c7a3b5f3ab4
type=ethernet
interface-name=ens33
[ethernet]
mac-address-blacklist=
[ipv4]
address1=10.0.0.30/24,10.0.0.254
dns=114.114.114.114;1.2.4.8
method=manual
[ipv6]
method=disabled
写好模板后,Ansible、SaltStack循环替换IP、UUID,分发到目标机,再执行:
nmcli connection reload && nmcli connection up static_ens33
十秒完成整列机柜,比scp过去再/etc/init.d/network restart爽太多。
老脚本还能抢救吗
实在想继续用ifcfg格式,可以手动装废弃包:
yum install network-scripts
接着systemctl enable network && systemctl start network,世界瞬间回到十年前。但注意,红帽已停止维护,新内核若改驱动参数,network-scripts没人帮你适配,哪天启动失败只能自己啃日志。生产环境别赌命,迁到NetworkManager才是正道。
常见坑排雷
1. 装了双栈,NetworkManager默认开启IPv6,若上游没分配,ssh会卡三秒,记得在连接里method=disabled。
2. ifcfg文件和keyfile同时存在,优先级以keyfile为准,老文件成摆设,别傻傻改半天没效果。
3. 云主机内部经常靠cloud-init第一次写配置,手工nmcli改后会被下次重启覆盖,要么禁用cloud-init网络模块,要么把自定义脚本放到/etc/cloud/cloud.cfg.d/,让优先级高于默认。
network-scripts已成历史,nmcli、nmtui、keyfile三件套无缝接班,功能只增不减;早点换,早点睡整觉。
