在 Linux 系统中,网络接口的命名规则已经经历了几次重要变化,特别是从传统的以 eth
和 wlan
开头的名称,转变到更现代、更具描述性的命名方式。以下是这些变化的概述:
1. 传统命名约定
在早期的 Linux 发布版本中,网络接口通常遵循如下命名约定:
- 以太网接口:
eth0
、eth1
等,其中数字代表设备的顺序。 - 无线接口:
wlan0
、wlan1
等。
这种命名方式简单直观,但在多网卡场景下可能导致命名冲突和不一致,尤其是在硬件更换或多个网络接口动态出现时。
2. udev 中的持久性网络设备命名
为解决设备命名的一致性和可预测性问题,Linux 引入了基于 udev
的持久性命名规则:
- 基于 MAC 地址:通常是
eth_id_MAC
,其中MAC
是网络接口的 MAC 地址的一部分。 - 基于总线位置:如
eth_bus_info
,根据设备在系统总线上的位置来命名。
这种方法提高了网络接口命名的稳定性,但名称往往较长且不易记忆。
3. systemd 和 Predictable Network Interface Names(可预测的网络接口名称)
最近,systemd 引入了一种新的网络接口命名方案,称为Predictable Network Interface Names。这种方法的目标是提供一种更加稳定和可预测的方式来命名网络接口,且不依赖于接口顺序或设备路径,减少了命名冲突的可能性。常见的接口名称包括:
- en:代表以太网 (Ethernet) 接口。
eno1
、eno2
:基于板载网络接口的逻辑编号。enp2s0
:其中p2s0
表示第 2 个 PCI 总线上的第 0 个设备。
- wl:代表无线 LAN 接口。
wlp3s0
:无线接口在第 3 个 PCI 总线上的第 0 个设备。
- ww:代表 WWAN 设备,如 LTE 模块。
wwp0s20u3
:WWAN 接口在 USB 总线上的设备。
这种命名方式大大降低了环境变化导致接口名称变动的情况,特别是在使用多网络接口和在虚拟环境中非常有用。
总结
Linux 网络接口的命名方法已从简单的 eth
/wlan
转变为基于物理位置、设备功能和总线信息的更稳定和可预测的命名规则。这一变化主要旨在提高在复杂系统中的管理有效性和减少配置错误。当然,管理员可以通过 udev 规则自定义这些名称以满足特定需求。