Linux网络配置文件说明_持久化设置方法解析【教程】

12次阅读

linux网络配置生效取决于实际管理服务:debian/ubuntu用/etc.network/interfaces需restart networking;RHEL/centos 7+默认由NetworkManager接管,应使用nmcli/nmtui;systemd-networkd则读取/etc/systemd/network/*.network。

Linux网络配置文件说明_持久化设置方法解析【教程】

Linux 网络配置文件不是“改完就生效”的统一入口,不同发行版用的不是同一套机制,直接编辑文件可能被 NetworkManager 或 systemd-networkd 覆盖。

哪些文件真正影响持久化网络配置

关键看系统使用的网络管理服务:

  • Debian/Ubuntu(使用 ifupdown):主配置在 /etc/network/interfacesifup/ifdown 读它,systemctl restart networking 生效
  • RHEL/CentOS 7+(默认用 NetworkManager):不建议手动改 /etc/sysconfig/network-scripts/ifcfg-*,应优先用 nmtuinmcli;否则 NetworkManager 可能忽略或覆盖你的修改
  • systemd-networkd(常见于容器、云镜像、Arch):配置在 /etc/systemd/network/*.network,需 systemctl restart systemd-networkd
  • 所有发行版都认 /etc/hosts/etc/resolv.conf(但后者常被 resolvconfsystemd-resolved 动态管理)

为什么改了 /etc/network/interfaces 却没生效

常见原因不是语法错,而是服务未触发或被接管:

  • Ubuntu 18.04+ 默认启用 NetworkManager,它会绕过 ifupdown 直接管理接口 —— 此时改 /etc/network/interfaces 完全无效
  • 忘记运行 ifdown eth0 && ifup eth0,或漏掉 systemctl restart networking
  • 接口名变了(比如从 eth0 变成 enp0s3),配置里写的旧名不匹配
  • 配置中漏写 auto eth0,导致 ifup 不自动加载该接口
auto eth0 iface eth0 inet Static     address 192.168.1.100     netmask 255.255.255.0     gateway 192.168.1.1     dns-nameservers 8.8.8.8

/etc/sysconfig/network-scripts/ifcfg-* 的坑

RHEL 系风格配置看似直观,但几个字段极易引发静默失败:

  • ONBOOT=yes 必须设为 yes,否则开机不启;设成 no 或留空 = 接口不激活
  • BOOTPROTO=static(非 nonedhcp)才读取 ipadDR/NETMASK
  • DEVICE= 值必须和真实接口名完全一致(ip link show 查),大小写敏感
  • 改完别只 ifdown/ifup,要 nmcli connection reloadnmcli connection down/up "System eth0",否则 NetworkManager 不同步

如何确认当前谁在管网络

先搞清控制权归属,再决定动哪份文件:

  • 查服务状态:systemctl status NetworkManager systemd-networkd networking
  • 查接口管理方:nmcli device status(显示 connected 表示 NM 在管)
  • 查是否启用 systemd-resolvedsystemctl is-active systemd-resolved;若启用,/etc/resolv.conf 通常是软链到 /run/systemd/resolve/stub-resolv.conf,直接改它会被重置
  • 临时停用 NM 测试:systemctl stop NetworkManager,再试 ifconfigip addr 看接口是否还存在

最易被忽略的是:即使你用的是传统配置文件,只要 NetworkManager 处于 active 状态,它就可能在后台监听并覆盖你的设置——这不是 bug,是设计如此。

text=ZqhQzanResources