在 Linux 系统中,网络接口的配置是其核心功能之一。理解不同发行版中网卡配置文件路径的差异,对于系统管理员和开发者进行网络设置、故障排查和自动化运维至关重要。本文将详细介绍主流 Linux 发行版的网卡配置文件位置,并扩展相关配置知识。

Linux 发行版主要分为几个大家族,每个家族有其偏好的网络配置工具和配置文件路径。下表总结了常见发行版及其对应的网卡配置文件路径:
| 发行版家族 | 主要配置文件路径 | 配置工具/服务 | 备注 |
|---|---|---|---|
| Red Hat, CentOS, Fedora (传统方式) | /etc/sysconfig/network-scripts/ifcfg-<interface_name> | network-scripts (network.service) | 每个网卡一个独立文件,如 ifcfg-eth0。RHEL/CentOS 7 及更早版本的默认方式。 |
| Red Hat, CentOS, Fedora (NetworkManager) | /etc/NetworkManager/system-connections/<connection_name>.nmconnection | NetworkManager (NetworkManager.service) | RHEL/CentOS 8 及更新版本、Fedora 的默认方式。文件通常为加密的 INI 格式。 |
| Debian, Ubuntu (传统方式) | /etc/network/interfaces | ifupdown (networking.service) | 集中式配置文件,所有接口定义在一个文件中。Debian/Ubuntu 早期版本默认。 |
| Debian, Ubuntu (Netplan) | /etc/netplan/*.yaml | Netplan (systemd-networkd 或 NetworkManager) | Ubuntu 18.04 及更新版本、Debian 较新版本的默认方式。使用 YAML 格式。 |
| openSUSE, SUSE Linux Enterprise | /etc/sysconfig/network/ifcfg-<interface_name> | wicked (wicked.service) | 类似 Red Hat 传统路径,但位于不同目录下。也支持 NetworkManager。 |
| Arch Linux, Manjaro | /etc/netctl/<profile_name> 或 /etc/NetworkManager/... | netctl, NetworkManager, systemd-networkd | 路径取决于所选网络管理工具。netctl 是其传统工具。 |
除了配置文件路径本身,理解其格式和关联工具同样重要:
1. 传统 ifcfg 文件格式 (Red Hat/CentOS/SUSE): 这些文件通常是键值对格式。例如,一个基本的 ifcfg-eth0 文件可能包含:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
2. Netplan YAML 配置 (Ubuntu/Debian): Netplan 作为抽象层,将 YAML 配置转换为后端(如 systemd-networkd 或 NetworkManager)所需的配置。一个简单示例:
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
3. NetworkManager 连接文件: 虽然路径在 /etc/NetworkManager/system-connections/,但通常不建议直接编辑这些文件,因为它们可能被加密或由 NetworkManager 内部管理。更推荐使用 nmcli 或 nmtui 工具进行配置更改。
修改配置文件后,通常需要重启网络服务或特定的网络接口以使更改生效。命令因发行版和使用的网络管理工具而异:
传统 network-scripts (Red Hat/CentOS 7):
sudo systemctl restart network
或
sudo ifdown eth0 && sudo ifup eth0
NetworkManager (通用):
sudo nmcli connection reload
sudo nmcli connection down "YourConnectionName" && sudo nmcli connection up "YourConnectionName"
Netplan (Ubuntu):
sudo netplan apply
systemd-networkd (通用):
sudo systemctl restart systemd-networkd
扩展知识:网卡命名规则的变化
现代 Linux 系统(特别是使用 systemd 的发行版)已从传统的 eth0, eth1 命名转向可预测的网络接口名称。新命名基于:
en - 以太网
wl - 无线局域网
ww - 无线广域网
后跟设备位置信息(如 o 代表板载,s 代表热插拔槽位,p 代表 PCI 总线号)。例如,enp0s3 表示第一个 PCI 总线上的第 3 个槽位的以太网卡。
了解这一点很重要,因为配置文件名称(如 ifcfg-enp0s3)或 Netplan 中的接口标识符会随之改变。
实用命令
确定当前活跃的网卡接口:
ip link show 或 ifconfig -a (传统)
列出所有网络接口及其状态:
ip a
显示当前 IP 配置:
ip addr show
显示路由表:
ip route
显示 NetworkManager 管理的连接:
nmcli connection show
掌握网卡配置文件路径及其背后的配置机制,是有效管理 Linux 网络的基础。请始终根据您使用的具体发行版和版本,参考其官方文档以获取最准确的信息。