直接看 /sys/class/net/ 目录就能列出系统中所有网卡,包括物理网卡和虚拟网卡。
运行命令:
ls /sys/class/net/输出类似:
br-df65b94a220f docker0 enp0s31f6 lo veth1706661 wlp1s0这个列表包含所有网络接口:回环(lo)、物理以太网卡(enp0s31f6)、无线网卡(wlp1s0)、Docker桥接网卡(docker0)、OVS或Docker创建的虚拟网卡(br-*、veth*)等。
Linux 中判断依据是设备是否真实存在于 PCI 总线或 USB 总线。更实用的方法是检查路径是否存在物理设备链接:
/sys/devices/virtual/net/ —— 执行 ls /sys/devices/virtual/net/,结果中的网卡名(如 docker0、br-*、veth*、lo)全是虚拟的/sys/class/net/网卡名/device 是一个指向 PCI 设备的符号链接(如 ../../0000:00:1f.6)。可用命令验证:ls -l /sys/class/net/enp0s31f6/device 2>/dev/null,有输出即为物理网卡ip -br link show 可简洁列出所有接口名、状态(UP/DOWN)和 MAC 地址:
输出示例:
lo DOWN 00:00:00:00:00:00enp0s31f6UP e8:6a:64:xx:xx:xx
wlp1s0 UP d4:6d:6d:xx:xx:xx
docker0UP 02:42:ac:xx:xx:xx
veth1706661UP 9e:1c:2b:xx:xx:xx
虽然 ip 不直接标注“物理/虚拟”,但结合名称习惯可快速识别:
• 常见物理命名:enp0s31f6、ens33、eth0、wlp1s0
• 明确虚拟命名:docker0、virbr0、vethxxxx、br-xxxx、lo
若需进一步确认哪些是插在主板上的真实网卡,可用:
lspci | grep -i ethernet或更宽泛地:
lspci | grep -E "(Ethernet|Network)"输出会显示 PCI 总线上的以太网控制器型号和厂商,每条对应一块物理网卡(不含 USB 或虚拟设备)。