ip addr add 配置的 IP 重启后消失是因为该命令仅修改内核运行时状态,不写入任何持久化配置文件;Debian/Ubuntu 应写入 /etc/network/interfaces,RHEL/CentOS 8+ 应用 nmcli 或 Netplan,且 Netplan 的 YAML 缩进和格式必须严格正确。
为什么
配置的 IP 重启后就没了
因为
是纯内存操作,改的是内核网络栈的运行时状态,不写入任何持久化配置文件。系统一重启,内核重载,所有临时配置清空。
常见错误现象:
能看到 IP,
后消失;或者
(Debian/Ubuntu)也失效——说明你没走对持久化路径。
使用场景:临时调试、CI 环境快速配网、容器宿主机手动测试
它和
一样,只作用于当前会话,别指望它扛过 reboot
没有“参数开关”能让它持久,硬加
或类似选项都是错的(那不是这个命令的功能)
Debian/Ubuntu 持久化该写进
这是传统 ifupdown 工具链的配置入口,
读的就是它。新装的 Ubuntu 22.04+ 默认不用这套,但只要没卸载
,它就依然生效且优先级高于 Netplan(除非你明确禁用)。
示例(给
配静态 IP):
Trae linux
Trae Linux 官方版本现已全面上线,开发者可直接访问 Trae 官网(trae.cn 国内版或 trae.ai 国际版)获取专属安装包。该版本完美适配主流 Linux 发行版,提供 .deb(适配 Ubuntu/Debian)、.rpm(适配 RHEL/Fedora)以及通用 .tar.gz 格式,并全面支持 x64 与 ARM64 架构。
下载
必须用
行声明接口启动,否则
都不会触发
写法才走 DHCP;写成
才走下面的
改完要执行
测试,别直接 reboot
如果系统同时启用了 Netplan(如 Ubuntu 18.04+ 默认),两个配置冲突会导致
服务启动失败,
里能看到 “interface already configured” 类错误
CentOS/RHEL 8+ 用
还是 Netplan?
RHEL 8+ 和 CentOS Stream 默认弃用
,转而通过
+
或
(若装了)管理。但很多用户仍习惯改
,结果
不生效、
报错“Failed to start network.service”。
真实情况:
在 RHEL 8+ 是被 mask 掉的,
并不能安全启用它
正确做法是用
:比如
,再
如果非要写文件,得用
下的 keyfile(格式类似 ini),而不是 ifcfg;手写容易少
导致加载失败
是唯一可信的“当前生效配置”来源,
只反映结果,不反映来源
Netplan 配置写错一个缩进,整个网络就起不来
Netplan 是 YAML 格式,缩进即语法。少一个空格、混用 tab、冒号后没空格——都会导致
失败,且错误提示极其简陋:
。
必须用空格缩进,严禁 tab;推荐用 2 空格,和官方示例一致
所有键名后必须跟
+ 一个空格,比如
不是
(后面没空格)或
(多一个空格也不行)
修改后先运行
,它会把 YAML 编译成 NetworkManager 或 systemd-networkd 的中间配置,出错就停在这步,比
安全
如果用了
,但系统没装
包,
会静默失败,
看不到接口 UP,得查
或
最麻烦的点在于:不同发行版默认 renderer 不同,同一份 YAML 在 Ubuntu 上跑 NetworkManager,在 Debian 上可能被 systemd-networkd 解析——行为差异藏在底层,不看
根本意识不到。
ip addr addip addr addip addr showrebootsystemctl restart networkingifconfig--permanent/etc/network/interfacessystemctl restart networkingifupdowneth0auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1autoifup eth0iface xxx inet dhcpinet staticaddresssudo ifdown eth0 && sudo ifup eth0networkingjournalctl -u networking/etc/sysconfig/network-scripts/ifcfg-xxxifcfg-*NetworkManagerkeyfileNetplanifcfg-eth0nmcli connection reloadsystemctl restart networknetwork.servicesystemctl unmask networknmclinmcli connection modify "System eth0" ipv4.addresses 192.168.1.100/24nmcli connection down "System eth0" && nmcli connection up "System eth0"/etc/NetworkManager/system-connections/[connection] id=xxxnmcli connection showip addrnetplan applyInvalid YAML at //etc/netplan/01-network-manager-all.yaml line 12 column 3: did not find expected key:addresses:addresses:addresses: sudo netplan generateapplyrenderer: NetworkManagerNetworkManagernetplan applyip linkjournalctl -u systemd-networkdjournalctl -u NetworkManagercat /etc/netplan/*.yaml | grep renderer