分类
devops

几种网络配置持久化

net-config

network-scripts服务

在 CentOS 和 RHEL 系统中,network 服务是用于管理网络接口的传统服务,它使用 /etc/sysconfig/network-scripts/ifcfg-* 文件来配置网络接口。

systemctl status -l network
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sat 2025-11-08 15:22:45 CST; 2h 51min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2051 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE)

Nov 08 15:22:45 centos1 systemd[1]: Starting LSB: Bring up/down networking...
Nov 08 15:22:45 centos1 network[2051]: Bringing up loopback interface:  [  OK  ]
Nov 08 15:22:45 centos1 network[2051]: Bringing up interface eth0:  Error: Connection activation failed: No suitable device found for this connection.
Nov 08 15:22:45 centos1 network[2051]: [FAILED]
Nov 08 15:22:45 centos1 network[2051]: Bringing up interface eth1:  Error: Connection activation failed: No suitable device found for this connection.
Nov 08 15:22:45 centos1 network[2051]: [FAILED]
Nov 08 15:22:45 centos1 systemd[1]: network.service: control process exited, code=exited status=1
Nov 08 15:22:45 centos1 systemd[1]: Failed to start LSB: Bring up/down networking.
Nov 08 15:22:45 centos1 systemd[1]: Unit network.service entered failed state.
Nov 08 15:22:45 centos1 systemd[1]: network.service failed.

networking.service(ifupdown)

/etc/network/interfaces

NetworkManager.service

systemctl status -l NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2025-11-08 15:22:58 CST; 2h 49min ago
     Docs: man:NetworkManager(8)
 Main PID: 3748 (NetworkManager)
    Tasks: 4
   Memory: 17.3M
   CGroup: /system.slice/NetworkManager.service
           ├─ 3748 /usr/sbin/NetworkManager --no-daemon
           └─44383 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/NetworkManager/dhclient-5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03-eth0.lease -cf /var/lib/NetworkManager/dhclient-eth0.conf eth0

Nov 08 18:11:43 centos1 dhclient[44383]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x1ed667fe)
Nov 08 18:11:43 centos1 dhclient[44383]: DHCPACK from 10.0.2.2 (xid=0x1ed667fe)
Nov 08 18:11:43 centos1 NetworkManager[3748]: <info>  [1762596703.3182] dhcp4 (eth0):   address 10.0.2.15
Nov 08 18:11:43 centos1 NetworkManager[3748]: <info>  [1762596703.3182] dhcp4 (eth0):   plen 24 (255.255.255.0)
Nov 08 18:11:43 centos1 NetworkManager[3748]: <info>  [1762596703.3183] dhcp4 (eth0):   gateway 10.0.2.2
Nov 08 18:11:43 centos1 NetworkManager[3748]: <info>  [1762596703.3183] dhcp4 (eth0):   lease time 86400
Nov 08 18:11:43 centos1 NetworkManager[3748]: <info>  [1762596703.3183] dhcp4 (eth0):   hostname 'vbox'
Nov 08 18:11:43 centos1 NetworkManager[3748]: <info>  [1762596703.3183] dhcp4 (eth0):   nameserver '10.0.2.3'
Nov 08 18:11:43 centos1 NetworkManager[3748]: <info>  [1762596703.3183] dhcp4 (eth0): state changed unknown -> bound
Nov 08 18:11:43 centos1 dhclient[44383]: bound to 10.0.2.15 -- renewal in 43065 seconds.

## 在早期的 Linux 发行版中,网络配置主要通过传统的 ifconfig 命令和相关脚本进行管理。为了简化网络接口的配置和管理,Red Hat 引入了 /etc/sysconfig/network-scripts/ 目录,用于存储网络接口的配置文件。
/etc/sysconfig/network-scripts/
/etc/NetworkManager/system-connections/
cat > /etc/NetworkManager/conf.d/99-unmanaged-devices.conf<<EOF
[keyfile]
unmanaged-devices=interface-name:docker0
EOF

## 重新加载 NetworkManager 配置:
systemctl reload NetworkManager

xref
https://gist.github.com/und3fined/e3b7eb511703ab7788dc15ae08254a7c
https://github.com/openSUSE/sysconfig/blob/opensuse-13.2/config/ifcfg.template

systemd-networkd.service

/etc/systemd/network/

netplan.io

netplan 不是网络服务,而是 Ubuntu 提供的网络配置生成器;真正干活的是 systemd-networkd 或 NetworkManager。

/etc/netplan

总结
network和networking服务都是比较古老的开机脚本(oneshot),开机只调用一次.后续发展出来的NetworkManager和systemd-networkd具备了daemon的能力,即监控后续的网卡硬件变动并作出相应的调整,他们不再是开机只调用一次的简单脚本了.

Linux 分支 默认网络配置服务
Debian ifupdown(旧) → systemd-networkd(新)
Ubuntu Server netplan → systemd-networkd
Ubuntu Desktop netplan → NetworkManager
RHEL / CentOS NetworkManager
Rocky / Alma NetworkManager
Fedora NetworkManager
Arch Linux systemd-networkd
openSUSE Leap Wicked
openSUSE MicroOS systemd-networkd
SLES Wicked
Alpine Linux ifupdown-ng
CoreOS / Flatcar systemd-networkd