现代 Linux 系统中,有多种方法可以配置网络。最流行的是使用 Network Manager
和 Systemd
。
网络接口的分类
Linux 系统区分两种类型的网络接口——物理网络接口和虚拟网络接口。
物理网络接口表示网络硬件设备,例如 NIC
(网络接口卡)、WNIC
(无线网络接口卡)或调制解调器。
虚拟网络接口不表示硬件设备,而是链接到网络设备。它可以与物理接口或虚拟接口相关联。
网络接口的命名方式
在早期的操作系统中例如fedora13
或者ubuntu15
之前网卡命名的方式为eth0
,eth1
,eth2
,属于biosdevname
命名规范。当然这是针对intel
网卡的命名规则,对于realtek
类型的网卡会命名为ens33
。但是这个编号往往不一定准确对应网卡接口的物理顺序,为了能够方便定位和区分网络设备,目前linux的主流操作系统采用一致网络设备命名(CONSISTENT NETWORK DEVICE NAMING
)规范。
一致网络设备命名规则(CONSISTENT NETWORK DEVICE NAMING
)
命名规范为:设备类型 + 设备位置
1. 设备类型
en
代表以太网
wl
代表无线局域网(WLAN
)
ww
代表无线广域网(WWANs
)
2. 设备位置
格式 | 含义 |
---|---|
o<on-board_index_number> | 主板 BIOS 内置的网卡 |
s<hot_plug_slot_index_number>[f<function>][d<device_id>] | 主板 BIOS 内置的 PCI-E 网卡 |
x<MAC> | MAC 地址 |
p<bus>s<slot>[f<function>][d<device_id>] | PCI-E 独立网卡 |
[P<domain_number>]p<bus>s<slot>[f<function>][u<usb_port>][…][c<config>][i<interface>] | USB 网卡 |
eno1
板载1号网卡
enp0s2
以太网0号PCI
扩展卡的2号端口
ens33
由主板 BIOS
内置的 PCI-E
接口的网卡
wlp1s0
无线第1号PCI
扩展卡的0号端口
systemd-udev
网卡命名规则
系统默认用于网卡设备重命名的服务是systemd-udevd
,我们可以使用systemctl status systemd-udevd
来查看目前该服务的状态
默认情况下,systemd-udev
会使用以下策略,采用支持的命名方案为接口命名:
Scheme 1(方案 1): 如果从BIOS
中能够取到可用的板载网卡的索引号,则使用这个索引号命名,例如: eno1
,如不能则尝试Scheme 2
Scheme 2(方案 2): 如果从BIOS
中能够取到可以用的网卡所在的PCI-E
热插拔插槽的索引号,则使用这个索引号命名,例如: ens1
,如不能则尝试Scheme 3
Scheme 3(方案 3): 如果能拿到设备所连接的物理位置信息,则使用这个信息命名,例如:enp2s0
,如不能则尝试Scheme 5
Scheme 4(方案 4): 使用网卡的MAC
地址来命名,这个方法一般不使用。enx78e7d1ea46da
Scheme 5(方案 5):传统的kernel
命名方法,例如: eth0
,这种命名方法的结果不可预知的,即可能第二块网卡对应eth0
,第一块网卡对应eth1
。
查询可用的网络接口
ls /sys/class/net
列出已安装在 Linux 服务器上的 NIC
(网络接口卡)接口的硬件详细信息
sudo lshw -class network -short
H/W path Device Class Description
/0/102/0/3/0 network Intel Corporation
/0/102/0/3/0.2 eno1
network Ethernet Connection X722 for 1GbE
/0/102/0/3/0.3 eno2
network Ethernet Connection X722 for 1GbE
/1 enp0s20f0u1u6
network Ethernet interface
参考网址
linux网卡命名规则与修改方法
Understanding and Configuring Linux Network Interface