Linux网络配置持久化方法_重启生效机制说明【指导】

9次阅读

NetworkManager 与 systemd-networkd 冲突导致配置不生效,需停用 NetworkManager 并启用 systemd-networkd;使用 .network 文件配置静态 IP 和路由,修改后重启服务生效;临时命令配置重启即丢失,应通过 systemd-networkd 或 nmcli 持久化。

Linux 网络配置持久化方法_重启生效机制说明【指导】

network-manager 与 systemd-networkd 冲突导致配置不生效

Linux 发行版默认启用 NetworkManager 时,手动修改 /etc/network/interfaces 或直接写 /etc/systemd/network/*.network 文件通常会被忽略——NetworkManager 会接管所有接口,覆盖静态配置。

  • 检查当前管理器:systemctl list-units | grep -E "(NetworkManager|systemd-networkd)"
  • NetworkManager.service 处于 active 状态,需停用并禁用它:sudo systemctl stop NetworkManager && sudo systemctl disable NetworkManager
  • 启用 systemd-networkdsudo systemctl enable --now systemd-networkd
  • 注意:Ubuntu Desktop 默认强依赖 NetworkManager,改用 systemd-networkd 后 GUI 网络托盘将失效

使用 systemd-networkd 实现 IP 和 路由 持久化

systemd-networkd 通过 .network 文件定义接口行为,文件名无特殊要求,但需以 .network 结尾、放在 /etc/systemd/network/ 下,且权限为 644

  • 示例:为 eth0 配置静态 IP:
    [Match] Name=eth0  [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8
  • [Match] 区块必须存在,否则该文件被跳过;Name 支持通配符(如 en*),但不推荐用于生产环境
  • 若需多 IP,可重复写 Address= 行;网关只支持单个,多个需用 Route 小节手动添加
  • 修改后必须运行:sudo systemctl restart systemd-networkd,而非仅 reload

ifconfig / ip 命令配置为何重启丢失

所有通过 ip addr addifconfig eth0 192.168.1.5 等命令做的临时配置,都只存在于内核网络 中,不写入任何持久化 配置文件,系统重启或 systemd-networkd 重载时必然清空。

  • 验证是否为临时配置:ip -details addr show eth0 | grep "dynamic|temporary" —— 若无输出,说明是手动加的,非 DHCP 分配
  • 不要在 /etc/rc.local 里写 ip 命令:该文件在多数现代发行版中默认不执行,且执行时机早于网络服务就绪,大概率失败
  • 真正可靠的“临时转持久”路径只有两条:写入 systemd-networkd 配置,或为 NetworkManager 创建 nmcli connection modify 配置

NetworkManager 下如何正确保存静态配置

若必须保留 NetworkManager(如桌面环境),应使用其原生方式配置,而非编辑底层文件。直接改 /etc/NetworkManager/system-connections/ 下的 keyfile 是高危操作,容易因格式错误导致连接无法激活。

  • 查看现有连接:nmcli connection show
  • 修改 IPv4 设置(例如关闭 DHCP、设静态 IP):nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.1.200/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8" ipv4.ignore-auto-routes yes
  • 关键一步:必须重新激活连接才能生效:nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"
  • 配置保存即持久,重启后自动加载;但注意 ipv4.ignore-auto-routes 必须显式设为 yes,否则 DHCP 获取的路由仍会残留

最易被忽略的是服务依赖顺序和配置生效边界:哪怕文件放对了位置、语法也正确,如果对应的服务没启动、或者被另一个网络管理器锁住接口,一切配置都是空转。动手前先确认谁在管你的 eth0,比反复试错快得多。

text=ZqhQzanResources