我有一个简单的家庭用户路由器 (D-Link DIR-300),带有嵌入式 Linux(内核 2.6.21)和一堆网络工具。通过 telnet 检查该系统的内部结构,我得到了以下命令的输出(稍微修改和剥离;lo
并ifbN
跳过)ifconfig -a
:
br0 Link encap:Ethernet HWaddr CB:B2:32:9C:4D:2E
inet addr:192.168.5.1 Bcast:192.168.5.255 Mask:255.255.255.0
RX bytes:94887799 (90.4 MiB) TX bytes:1042490563 (994.1 MiB)
br8 Link encap:Ethernet HWaddr CB:B2:32:9C:4D:2E
RX bytes:974053699 (928.9 MiB) TX bytes:0 (0.0 B)
eth2 Link encap:Ethernet HWaddr CB:B2:32:9C:4D:2E
collisions:0 txqueuelen:1000
RX bytes:2150801235 (2.0 GiB) TX bytes:2142220936 (1.9 GiB)
Interrupt:3
eth2.1 Link encap:Ethernet HWaddr CB:B2:32:9C:4D:2E
RX bytes:17544 (17.1 KiB) TX bytes:994732248 (948.6 MiB)
eth2.2 Link encap:Ethernet HWaddr CB:B2:32:9C:4D:2E
RX bytes:0 (0.0 B) TX bytes:72669 (70.9 KiB)
eth2.3 Link encap:Ethernet HWaddr CB:B2:55:9C:4D:2E
RX bytes:96947373 (92.4 MiB) TX bytes:1045811045 (997.3 MiB)
eth2.4 Link encap:Ethernet HWaddr CB:B2:32:9C:4D:2E
RX bytes:0 (0.0 B) TX bytes:72669 (70.9 KiB)
eth2.5 Link encap:Ethernet HWaddr CB:B2:32:9C:4D:2F
inet addr:ex.te.rn.al Bcast:ex.te.rn.255 Mask:255.255.255.0
RX bytes:2024079220 (1.8 GiB) TX bytes:99321148 (94.7 MiB)
eth2.5.35 Link encap:Ethernet HWaddr CB:B2:32:9C:4D:2E
... PROMISC ...
RX bytes:984221760 (938.6 MiB) TX bytes:22318 (21.7 KiB)
物理上有 5 个以太网套接字,但从上面的信息可以看出,有 2 个硬件 NIC(CB:B2:32:9C:4D:2E 和 CB:B2:32:9C:4D:2F),并且出现此情况逻辑上:LAN 和 WAN。也许我是错的,但eth2.5
似乎是唯一的普通的情况(其自己的IP/MAC)。其他 8 条记录很难理解那里发生了什么:所有 8 条记录都有相同的 MAC (CB:B2:32:9C:4D:2E),只有br0
一个分配的 IP,eth2
似乎很特殊txqueuelen:1000
,并且有一个中断(其他记录没有)有中断,甚至eth2.5
),eth2.2
并且eth2.4
与相同数量的 TX 字节相同,并且它们不接收字节,br8
只是接收字节。
那么,这个网络是如何实现的呢?魔法工作?许多不同的设备名称、相同的 MAC、不同的属性
NIC、MAC 地址、设备名称之间有什么关系?
答案1
根据网桥与 NIC 组合?:
当您希望组合两个网络连接但不一定让它们执行相同的任务时,通常会使用桥接(例如,如果您希望虚拟机在网络上显示为真实计算机)。您可以将虚拟机的软件网卡(如果有)与物理卡桥接,使其直接访问 LAN(而不是进行 NAT)
它确实使计算机将它们视为 1,但它们只有一个到 LAN/Internet 的连接。
要知道创建桥使用的接口桥接工具在Linux中。例如brctl 显示 br0,然后会显示用于创建网桥 br0 的接口,并且 br0 的硬件地址(MAC 地址)是用于创建网桥 br0 的第一个接口的 MAC 地址。这是运行后您将看到的第一个界面brctl显示是eth2。看到 ifconfig 结果后,似乎在接口 eth2 和其他接口(例如 eth1、eth3、eth4 和 eth5,名为 eth2.1 等)之间存在一座桥梁。您会看到 eth2.5 的 MAC 地址不同,因为在网桥创建过程中 eth5 被视为第一个接口。