早几年前,Linux 系统的网卡名称都是 eth0、wlan0,后来都变了个风格,就拿我的电脑举例:enp7s0, wlp6s0。
这到底是是什么原因呢?
最近突然好奇,去查了资料才知道为什么。
在 Fedora 的技术资料中找到,这个和 Systemd 有关,然后又在 freedesktop 官网 Systemd 的手册中找到了详细的说明。
现在的命名方案有好长一段,估计要看个半个小时(如果感兴趣可以仔细阅读一下),解开我的疑问却不需要那么复杂。
eth0 是什么意思?
系统自动选择的网络设备名称,名字来源于以太网 ethernet。
无线网卡就是 wlan,来自 Wireless LAN。
还有一些常见的名称 lo(Loopback), tun(Tunnel), br(Bridge) 等。
enp7s0 又是什么?
enp7s0 和 wlp6s0 的意思:
- en 代表 Ethernet,wl 代表 Wireless LAN。
- pXsY 则表示 PCI 位置
$ lspci
...
06:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
07:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL810xE PCI Express Fast Ethernet controller (rev 08)
...
为什么要改?
之前的命名方案是系统根据探测到网络驱动的顺序来的,这意味着理论上网络设备接口名称不固定。
不只是可能对部分应用产生不利影响,更有甚者,会影响一些网络防火墙的工作。
中间有一些改良的努力,试图来改变这个局面,各有局限,Systemd 还是认为当前的方案最佳。
当前方案叫做 biosdevname,看到有资料说可以在 grub 配置中加上 biosdevname=0
禁用这个方案。
参考资料与拓展阅读
- Fedora Documentation, Fedora >> 25 >> Networking Guide >> Chapter 8. Consistent Network Device Naming
- FreeDesktop.org, systemd.net-naming-scheme
- FreeDesktop.org, PredictableNetworkInterfaceNames
- ChinaUnix, LSPCI 命令详解分析,PCI 总线
- CSDN 博客, Ubuntu 修改网卡名称(enp0s 改为 eth)
- 知乎专栏, centos7/8 修改网卡名称
- 知乎专栏, 更改 Linux 系统的网卡名称