在我的工作场所,我们使用思科交换机在第 2 层实施自定义流量传输机制。自定义软件将特定目标 mac 放在以太网帧上,而 VLAN 将流量隔离到不同的位置,同时创建静态 mac 地址表条目以将其定向到特定端口。整个传输系统相当静态,因此对我们来说效果相当好。我没有创建它,但我相当了解它。
现在,我试图更好地理解它,因为我看到交换机的一些奇怪行为。我有两个端口:
gi1/10
switchport mode access vlan 10
gi1/20
switchport mode trunk
switchport trunk allowed vlan 10-13
以及两个用户输入的 MAC 地址表行:
mac-address-table static 0101.0000.0101 vlan 10 interface gi1/10
mac-address-table static 0101.0000.0000 vlan 13 interface gi1/20
端口配置不同,以评估技术的差异。
我有两台 Linux 主机,每台都连接到上述端口。每台都配置了相同的四个子接口:
eth1.10, eth1.11, eth1.12, and eth1.13.
主接口或任何子接口上都没有 IP 地址。我有两个流量源正在发送流量。每个流量源都发送带有两个目标 mac 地址的以太网帧,但一个流量源位于 vlan 10 上,另一个位于 vlan 13 上。
在主机 1(连接到端口 1/10 的主机)上,当我嗅探 eth1.10、11、12 或 13 时看不到任何流量,但当我运行“tcpdump -i eth1”时确实看到了流量。这对我来说很有意义,因为这些子接口只期望使用 VLAN 相应 VLAN ID(10、11、12 或 13)标记的流量,并且此交换机端口已配置为访问。我的理解正确吗?
奇怪的是,主机 1 的 tcpdump 输出还显示另一个 mac,尽管静态条目明确表示只从端口发送一种类型的流量。这怎么可能呢?
主机 2(连接到中继端口的主机)的情况同样奇怪。他只看到一个 mac 地址(正确的 mac 地址),但他在 eth1.10 和 eth1.13 上都看到了这个地址。现在我很困惑。这怎么可能,即使两个 VLAN 都有两个目标 mac?mac 地址表不应该将其限制为仅输入其中的内容吗?
答案1
我为感兴趣的人确定了我的问题。第三个流量源被错误地配置为发送到 0101.0000.0000,但在 vlan 10 上。由于该 mac 不为 vlan 10 所知,因此它被广播到属于该 vlan 的所有接口,这就是为什么我看到 Linux 主机上的 mac 连接到该接口。
这也解释了为什么我在另一台主机的 vlan 10 和 13 上都能看到该 mac。它被中继到两个 vlan 中,并且每个 vlan 上的 linux 主机都能看到它。
答案2
您对 g1/10 的解释是正确的。“模式访问”端口不会发送任何带有 vlan 标签的数据包。
您显示的那些 mac 地址实际上是您使用的吗?多播位已设置(第一个(最左边)01 是多播位),这可能解释了为什么您会在多个端口上看到这些数据包。