我有一个运行 OpenWrt(一种用于路由器的嵌入式 Linux)的小型家用路由器。它有五个以太网端口,一个标记为 WAN,四个标记为 LAN 1 到 4。它具有以下定义的网络接口ifconfig:
root@TIBERIUS: ~ > ifconfig | grep Link
br-lan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
eth0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan1 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan2 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan3 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan4 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lo Link encap:Local Loopback
pppoe-wan Link encap:Point-to-Point Protocol
wan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
wlan0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
Run Code Online (Sandbox Code Playgroud)
如您所见,设备数量众多,但只有一个 MAC 地址。
我知道其中一些设备是虚拟的。让我们抛开lo和pppoe-wan,这是回环设备和我的PPPoE连接。但是对于其余的,我应该如何分辨它们是物理的还是虚拟的?我知道有一个命名约定来标记虚拟接口,如eth0.1,但显然这里没有遵守。让我们看看其中ifconfig两个接口的输出:
root@TIBERIUS: ~ > …Run Code Online (Sandbox Code Playgroud) 这是运行 Linux 3.11(Mint 发行版,但我认为这无关紧要)的老式机器(AMD K8、Nvidia 芯片组)上的驱动程序问题。
claudius ~ # uname -a
Linux claudius 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
claudius ~ # lspci
00:00.0 Host bridge: NVIDIA Corporation nForce3 250Gb Host Bridge (rev a1)
00:01.0 ISA bridge: NVIDIA Corporation nForce3 250Gb LPC Bridge (rev a2)
00:01.1 SMBus: NVIDIA Corporation nForce 250Gb PCI System Management (rev a1)
00:02.0 USB controller: NVIDIA Corporation CK8S USB Controller (rev a1)
00:02.1 USB controller: NVIDIA Corporation CK8S USB …Run Code Online (Sandbox Code Playgroud)