linux怎么保存网卡配置

在Linux系统中,网络配置的持久化是一项核心运维技能。很多用户在使用ifconfig或ip addr命令临时修改网卡参数后,一旦重启系统或重启网络服务,更改便会丢失。这是因为这些命令只修改了内核中的运行时网络参数,并未写入任何配置文件。真正要“保存”网卡配置,必须针对不同的网络管理工具和发行版,将配置写入对应的持久化配置文件中。本文将从传统ifcfg体系、Netplan体系、systemd-networkd以及NetworkManager三大主流体系出发,给出专业、可落地的保存方案,并附上常用配置数据表。
| 配置体系 | 典型发行版 | 持久化配置文件路径 | 重启网络服务命令 | 是否推荐 |
|---|---|---|---|---|
| ifcfg(传统) | RHEL/CentOS 7、openSUSE | /etc/sysconfig/network-scripts/ifcfg-eth0 | systemctl restart network | 旧系统常用 |
| Netplan | Ubuntu 18.04+、Debian 12+ | /etc/netplan/01-netcfg.yaml | netplan apply | 现代云环境 |
| systemd-networkd | Arch、Fedora(最小化)、CoreOS | /etc/systemd/network/10-eth0.network | systemctl restart systemd-networkd | 轻量高效 |
| NetworkManager | Fedora、RHEL 8+、Ubuntu桌面 | /etc/NetworkManager/system-connections/ | nmcli connection reload | 桌面/动态场景 |
在RHEL/CentOS系列中,网卡配置文件通常位于/etc/sysconfig/network-scripts/目录下,文件名以ifcfg-开头,例如ifcfg-eth0或ifcfg-enp0s3。要永久保存静态IP配置,需要编辑该文件。关键参数包括:BOOTPROTO=static表示静态地址;ONBOOT=yes表示开机自动启用;IPADDR设置IPv4地址;NETMASK设置子网掩码;GATEWAY设置默认网关;DNS1和DNS2设置首选与备用DNS。编辑完成后,执行systemctl restart network使其生效。如果使用NetworkManager管理,还需要写入NM_CONTROLLED=yes,或直接用nmcli命令保存连接配置。
对于Ubuntu从18.04开始推荐的Netplan系统,其核心配置文件位于/etc/netplan/下,常见文件名如01-network-manager-all.yaml或50-cloud-init.yaml。Netplan使用YAML格式描述网络结构。例如,为以太网卡配置静态IP,可以写为:network: ethernets: ens33: dhcp4: false addresses: [192.168.1.100/24] routes: - to: default via: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] version: 2。保存文件后,必须运行sudo netplan generate验证语法,再运行sudo netplan apply应用配置。注意,Netplan的配置文件对缩进极其敏感,任何空格错误都会导致应用失败,所以建议使用严格缩进。
| Netplan常用配置项 | 含义 | 典型值 |
|---|---|---|
| dhcp4 | 是否启用IPv4 DHCP | true / false |
| addresses | 静态IPv4/IPv6地址列表 | [192.168.1.100/24, '2001:db8::1/64'] |
| gateway4(已废弃) | IPv4默认网关(Netplan 0.104+用routes) | 192.168.1.1 |
| routes | 静态路由定义 | - to: default via: 192.168.1.1 |
| nameservers | DNS服务器列表 | addresses: [8.8.8.8] |
| renderer | 后端渲染器 | networkd / NetworkManager |
在采用systemd-networkd的系统中,配置保存在/etc/systemd/network/目录下,文件名以.network结尾。该体系与Netplan不同,它使用类似INI的键值对。一个典型的静态配置如下:[Match]部分通过Name=eth0匹配网卡;[Network]部分设置Address=192.168.1.100/24、Gateway=192.168.1.1和DNS=8.8.8.8。保存后需要执行systemctl restart systemd-networkd。如果希望网卡通过DHCP获取地址,只需在[Network]中写入DHCP=yes。systemd-networkd的优点是依赖少、启动快,非常适合容器和精简服务器。
针对使用NetworkManager的桌面或服务器环境,推荐使用nmcli命令来保存配置。nmcli是NetworkManager的命令行工具,能够将连接配置持久化到/etc/NetworkManager/system-connections/目录下。例如,要修改现有连接“Wired connection 1”为静态IP,可以执行:nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8,然后执行nmcli connection up "Wired connection 1"。此时配置已自动写入文件,无需手动编辑。对于新连接,可用nmcli connection add con-name static-eth0 ifname eth0 type ethernet ipv4.method manual ipv4.addresses 192.168.1.100/24创建并保存。
需要特别强调的是,云服务器上的网卡配置往往由cloud-init托管。如果直接手动修改配置文件,重启后可能被cloud-init覆盖。此时应使用cloud-init的配置或通过厂商控制台修改。另外,虚拟网桥、VLAN、bonding等高级配置也需要在对应的配置文件中持久化。例如,在Netplan中支持bridges:和vlans:段落;在ifcfg体系中则有ifcfg-br0和ifcfg-eth0.10文件。保存这些配置时,务必同步检查路由表和DNS解析,避免出现网络不通但接口激活的假象。
此外,保存网卡配置时,还需要掌握几个通用的验证命令。修改配置后,可以先使用ip addr show查看IP地址是否生效;使用ip route show检查默认路由;使用cat /etc/resolv.conf确认DNS配置;通过ping网关和外部地址测试连通性。如果远程连接服务器,请务必保持当前会话存活,并准备回滚方案。例如,对于ifcfg体系,可以提前备份原文件,用cp ifcfg-eth0 ifcfg-eth0.bak;对于Netplan,可保留原始yaml文件,或者使用netplan try命令,该命令会在120秒后自动回滚,防止因配置错误导致断网。
| 操作场景 | 推荐永久保存方式 | 验证命令 |
|---|---|---|
| 临时修改IP | 无需保存,重启失效 | ip addr show |
| RHEL/CentOS静态IP | 编辑ifcfg文件 | systemctl restart network; ip addr |
| Ubuntu静态IP | 编辑/etc/netplan/*.yaml | netplan apply; ip addr |
| Arch等systemd环境 | 编辑/etc/systemd/network/*.network | systemctl restart systemd-networkd |
| NetworkManager连接 | nmcli connection modify | nmcli device show eth0 |
总结来看,linux怎么保存网卡配置没有统一答案,关键在于识别当前系统使用的是哪种网络管理栈。判断方法很简单:如果存在/etc/netplan/则使用Netplan;如果存在/etc/sysconfig/network-scripts/则使用ifcfg;如果systemd-networkd服务处于运行状态,则使用.network文件;如果NetworkManager服务运行,则用nmcli管理。对于生产环境,强烈建议先执行ethtool eth0确认网卡链路状态,再结合nmcli device status查看设备被哪个服务管理。只有将配置写入正确的持久化文件,才能保证系统重启后网卡配置依然生效,这也是Linux运维中最基础也最关键的操作之一。