Linux 网卡名称解析:从eth0到enp0s3的演变历程 (linux 网卡名称)
在Linux操作系统中,网卡是一项非常重要的组件。它们使计算机能够连接到局域网或Internet。为了管理不同的网络环境,不同的网卡需要被正确地标识和命名。很多年前,Linux中默认的网卡名称是“eth”,后跟数字表示第几个。比如,之一个网卡被称为“eth0”,第二个网卡被称为“eth1”,以此类推。然而,在一些情况下,这种命名方式不够灵活,不能满足更多的需求。因此,为了提高可用性和可读性,Linux内核从2.6.32开始采用了新的网卡命名约定,此后,网卡的名称改变了。
本文将解析Linux网卡名称的演变历程,介绍其中的原因和背景。
一、传统的网卡命名方式
在传统的网卡命名方式中,网卡名称是以“eth”开头的,后跟一个数字。该数字表示网卡在计算机中的位置。比如,之一个网卡称为“eth0”,第二个网卡称为“eth1”,以此类推。这种命名方式通常使用在较旧的Linux发行版中。
以Ubuntu 14.04为例,通过命令“ifconfig”可以看到以下输出:
“`
eth0 Link encap:Ethernet HWaddr 11:22:33:44:55:66
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::1111:2222:3333:4444/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:476685 errors:0 dropped:38 overruns:0 frame:0
TX packets:254273 errors:0 dropped:3 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:747348472 (747.3 MB) TX bytes:28052237 (28.0 MB)
“`
其中,“eth0”标识计算机上的之一个网卡。
二、新的网卡命名约定
在Linux内核版本2.6.32中,一种新的网卡命名约定被引入。这种约定是由Systemd开发团队提出的,目的是为了更好地描述网卡在系统上的物理与逻辑位置。在这种命名约定中,网卡名称是基于网卡总线信息、位置信息和设备固件信息来命名的。
这种命名方式的语法是:
“`
[网络接口类型][位置信息]-[设备固件信息]:[介质类型]
“`
在该命名约定中,网卡名称会根据网卡所连总线类型而变化。比如,PCI总线和USB总线上的网口名称将分别不同。网络接口类型可以为以下几种:
* b:表示InfiniBand网络
* c:表示NETLINK网络
* e:表示PCIe总线上的一般型号网口
* f:表示Hot plug PCI网口
* g:表示PCI段交换机网口
* p:表示PCMCIA沟槽的网络接口
* s:表示底层的子系统
位置信息是以设备路径的形式表示的。例如,“0000:03:00.0”表示PCIe总线上第3个设备中的第1个功能。设备固件信息是以MAC地址或UUID的形式命名的。介质类型表示网卡所使用的传输介质。例如,“np”表示使用的是网线连接。
例如,在Ubuntu 18.04版本中,通过命令“ip addr”可以看到以下输出:
“`
enp5s0f0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 08:00:27:f0:8c:44 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.106/24 brd 192.168.1.255 scope global dynamic noprefixroute enp5s0f0
valid_lft 43147sec preferred_lft 43147sec
inet6 fe80::dea6:32c8:eddd:bc1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
“`
其中,网卡名称成为了“enp5s0f0”。
三、新的网卡命名约定的优点
新的网卡命名约定带来的一大优点就是,对于系统管理员和用户而言,网卡名称更加直观。它们能够清楚地了解网卡在系统中的物理位置和逻辑位置。这使得管理和维护Linux系统更加容易。
新的网卡命名约定也避免了硬件配置更改所带来的问题,如网卡位置的更改。在传统的命名约定中,如果计算机中的PCI总线上的网卡设备顺序发生了变化,那么网络管理员将不得不手动更改所有相关的网络配置。这是一项耗时且容易出错的工作。然而,在新的命名约定中,网卡设备在重新启动后会自动获得它们以前的名称。这将有助于提高操作效率并减少错误。
四、