常见 Linux 网卡接口命名方式
在 Linux 系统中,网络接口拥有一套标准的命名方式,其中最常见的就是传统的 eth0、eth1 等形式。大多数网卡驱动程序都支持同时管理多个接口,当系统检测到多块网卡时,会按照设备被识别的顺序依次编号。例如,第一块网卡被命名为 eth0,第二块为 eth1,以此类推。
尽管这种简单的数字后缀命名法长期以来被广泛使用,便于用户和脚本通过固定的接口名称进行网络配置。不过需要注意的是,在现代 Linux 发行版中,出于一致性和可预测性的考虑,也出现了如 enp0s3 或 ens33 等基于固件或硬件拓扑的命名方式。
一张表总结清楚
| 前缀/名称模式 | 类型/含义 | 示例 |
|---|---|---|
lo | 本地回环接口 | lo |
eth | 传统以太网接口 | eth0, eth1 |
en | 以太网接口总前缀 | eno1, ens18, enp3s0 |
eno | 板载以太网接口 | eno1, eno2 |
ens | 按插槽编号命名的以太网接口 | ens18, ens33 |
enp | 按 PCI 总线位置命名的以太网接口 | enp3s0, enp5s0f1 |
enx | 按 MAC 地址命名的以太网接口 | enx001122334455 |
wlan | 传统无线网卡接口 | wlan0, wlan1 |
wl | 无线网卡接口总前缀 | wlp2s0, wlo1 |
wlo | 板载无线网卡接口 | wlo1 |
wlp | 按 PCI 总线位置命名的无线网卡接口 | wlp2s0 |
wlx | 按 MAC 地址命名的无线网卡接口 | wlx001122334455 |
br | Linux 网桥接口 | br0 |
vmbr | Proxmox 网桥接口 | vmbr0 |
docker | Docker 默认网桥接口 | docker0 |
virbr | libvirt 虚拟网桥接口 | virbr0 |
veth | 虚拟以太网接口 | veth0, vethabc123 |
tun | TUN 虚拟三层接口 | tun0 |
tap | TAP 虚拟二层接口 | tap0 |
wg | WireGuard 接口 | wg0 |
bond | 网卡绑定/链路聚合接口 | bond0 |
team | 网卡 Team 聚合接口 | team0 |
vlan | VLAN 接口 | vlan100 |
ethX.Y | 基于传统网卡名的 VLAN 子接口 | eth0.100 |
ensX.Y | 基于可预测网卡名的 VLAN 子接口 | ens18.100 |
brX.Y | 基于网桥的 VLAN 子接口 | br0.100 |
dummy | Dummy 虚拟网卡接口 | dummy0 |
ifb | 流量整形虚拟接口 | ifb0 |
下面我们来详细讲讲:
lo
lo 是 loopback(回环)的缩写,代表本地回环接口。它完全由软件实现,不依赖任何物理硬件,IP 地址通常为 127.0.0.1。任何发往该接口的数据包都会立即被本机接收,用于进程间通信和本地网络协议测试。
有些主机商镜像的 127.0.0.1/8 并不在 lo 上,点名批评。
eth0, eth1
eth 代表 Ethernet,数字按驱动程序检测设备的顺序依次编号(第一块为 eth0,第二块为 eth1)。这种命名方式简单直观,但缺点是硬件探测顺序变化可能导致接口名在重启后互换。因此现代 Linux 默认改用基于硬件位置的可预测命名,可以避免此类问题。
ens18
ens 表示 PCI 热插拔插槽网卡(Ethernet slot),数字直接来自固件或 BIOS 分配的插槽索引,如 ens18 即代表插槽 18。这种命名方式基于硬件拓扑,不依赖驱动加载顺序,重启后接口名稳定不变。注意 ens 后的数字完全由底层固件决定,数值大小不代表网卡优先级或速度。
eno1, ens3
可预测命名中的两种常见形式:eno(Ethernet onboard)表示板载网卡,数字来自 BIOS 提供的板载索引;ens(Ethernet slot)表示 PCI 热插拔插槽网卡,数字对应固件中的插槽编号。它们不依赖驱动加载顺序,名称固定可重现。
enp0s3, enp2s0
基于 PCI 总线地址的可预测命名:enp0s3 表示总线 0、插槽 3,enp2s0 表示总线 2、插槽 0。名称由硬件拓扑唯一确定,适合需要长期稳定网络配置的服务器或物理机。
wlp2s0, wlan0
无线网卡的两种命名:wlp2s0 是基于 PCI 位置的可预测命名(wl 表示 WLAN),稳定不变;wlan0 是传统命名,按驱动加载顺序编号,易发生漂移。现代发行版优先使用 wlpXsX 形式。
veth0, veth1
虚拟以太网设备(Virtual Ethernet),总是成对出现(类似管道的两端)。常用于容器(Docker、LXC)或网络命名空间,将容器网络与宿主机桥接。数字按创建顺序递增,无硬件绑定。
docker0
Docker 服务自动创建的默认网桥接口。它连接本机所有 Docker 容器,并为每个容器分配私有 IP,通过 NAT 访问外部网络。名称由 Docker 固定生成,用户也可自定义其他桥接网卡。
br0, br-lan
Linux 软件网桥,可像物理交换机一样将多个网络接口合并为一个逻辑接口。名称通常由用户自定义,如 br0 用于虚拟化桥接,br-lan 常见于 OpenWrt 路由器,vmbr0 常用于 PVE 环境。
bond0, bond1
链路聚合接口,将多块物理网卡聚合成一个逻辑接口,实现带宽叠加或故障切换。数字代表不同的绑定组(bonding group),通过内核 bonding 驱动管理。
tun0, tap0
虚拟隧道接口:tun0 工作在三层(IP 隧道);tap0 工作在二层(以太网桥接),常用于 QEMU/KVM 虚拟机网卡。两者数字按创建顺序动态分配,tun 处理路由,tap 处理网桥。
dummy0
Dummy 接口,完全由软件模拟的网卡,通常处于 UP 状态(创建后需要手动 set xxx up),常用于为服务绑定一个固定 IP 或测试路由策略。
usb0
传统 USB 网卡命名方式,usb0 表示第一个被识别的 USB 以太网或 4G 上网卡。若同一 USB 口热插拔不同设备,编号可能变化;现代系统也已为其引入基于 USB 拓扑的可预测命名(如 enu1s2)。
vlan10
VLAN 子接口,通常基于物理网卡创建(如 eth0.10 或 enp0s3.10)。名称中数字代表 VLAN ID(10 表示 802.1Q 标签 10),用于在同一物理链路上划分多个逻辑网络。
wg0
WireGuard 隧道接口,wg 为 WireGuard 缩写。相比传统软件,它配置简单、性能高且密钥交换更安全。数字由配置文件或手动指定,用于建立加密的点对点隧道。