我办公室的网络出现了一个奇怪的问题,我搞不清楚。特别是我不知道这是交换机的问题还是配置的问题。
我们的服务器机房机架顶部有一台 Cisco SG300-52 交换机 (sw01),连接到另一台用作核心交换机 (core01) 的 SG300-28。两者都只运行第 2 层,我们的防火墙在 VLAN 之间进行路由。它们之间有十几个 VLAN。sw01 上的 Gi1 是一个中继端口,连接到 core01 上的 gi1。
(披露:我们的环境中还有其他交换机,但我很确定我已将问题归结为这两个。如有必要,很乐意提供更多信息。)
我看到的行为仅限于一个 VLAN,即 vlan 12 - 或者,至少在我检查过的其他 VLAN 上没有发生这种情况(很难保证没有数据包),并且它是:sw01 正在将两个都插入 sw01 的主机之间的流量转发到 core01(我之所以注意到这一点,是因为我们防火墙中的 IDS 对流量给出了误报,而这应该不是到达防火墙。)
我们主要在我们的两个 dhcp/dns 服务器 net01(10.12.0.10)和 net02(10.12.0.11)之间注意到了这一点。net01 是物理硬件,而 net02 在 VMware ESX 服务器上。net01 连接到 sw01 上的 gi44,而 net02 的 ESX 服务器连接到 gi11。
[net01]----gi44-[sw01]-gi1----gi1-[core01]
[net02]----gi11/
让我们看看一些接口!请记住,vlan 12 是问题 vlan。对于其他 vlan,我明确验证了 vlan 27 是不是做作的。
这是两个主机的端口:esx01 包含 net02。
sw01#sh run int gi11
interface gigabitethernet11
description esx01
lldp med disable
switchport trunk allowed vlan add 5-7,11-13,100
switchport trunk native vlan 27
!
sw01#sh run int gi44
interface gigabitethernet44
description net01-1
lldp med disable
switchport mode access
switchport access vlan 12
!
这是 sw01 上的主干。
sw01#sh run int gi1
interface gigabitethernet1
description "trunk to core01"
lldp med disable
switchport trunk allowed vlan add 4-7,11-13,27,100
!
以及 core01 上的中继的另一端。
interface gigabitethernet1
description sw01
macro description switch
switchport trunk allowed vlan add 2-7,11-16,27,100
!
我在 core01 上有一个监视端口,因此:
core01#sh run int gi12
interface gigabitethernet12
description "monitor port"
port monitor GigabitEthernet 1
!
core01 上的监控端口看到 net01 和 net02 之间的单播流量,两者都在 sw01 上!我已经用 sw01 上的监控端口验证了这一点,该端口也看到 net01-net02 的单播流量通过 gi1 离开。
sw01 知道这两个主机均位于非其中继端口上:
:) ratchet$ arp -a | grep net
net02.2ndsiteinc.com (10.12.0.11) at 00:0C:29:1A:66:15 [ether] on eth0
net01.2ndsiteinc.com (10.12.0.10) at 00:11:43:D8:9F:94 [ether] on eth0
sw01#sh mac addr addr 00:0C:29:1A:66:15
Aging time is 300 sec
Vlan Mac Address Port Type
-------- --------------------- ---------- ----------
12 00:0c:29:1a:66:15 gi11 dynamic
sw01#sh mac addr addr 00:11:43:D8:9F:94
Aging time is 300 sec
Vlan Mac Address Port Type
-------- --------------------- ---------- ----------
12 00:11:43:d8:9f:94 gi44 dynamic
我还在 sw01 上的 vlan 12 上启用了一个未使用的端口,但单播流量(据我所知)不是从该端口输出。因此,sw01 似乎并未将其从所有端口输出,只是从正确的端口输出还有 gi1!
我已经验证 sw01 没有填满其地址表:
sw01#sh mac addr count
This may take some time.
Capacity : 8192
Free : 7983
Used : 208
core01 和 sw01 的完整配置均可用:core01,sw01。
最后,版本:
sw01#sh ver
SW version 1.1.2.0 ( date 12-Nov-2011 time 23:34:26 )
Boot version 1.0.0.4 ( date 08-Apr-2010 time 16:37:57 )
HW version V01
core01#sh ver
SW version 1.1.2.0 ( date 12-Nov-2011 time 23:34:26 )
Boot version 1.1.0.6 ( date 11-May-2011 time 18:31:00 )
HW version V01
所以我的理解是这样的:sw01 应该接收 net01 的单播流量,并只将其从 net02 的端口发送出去,反之亦然;任何流量都不应该从 sw01 的上行链路发出。但是 core01 在 gi1 上接收它所知道的主机的流量是在 gi1 上,将其所有端口发送出去是正确的。(也就是说:sw01 行为不当,但 core01 正在根据具体情况做它应该做的事情。)
我的问题是:为什么 sw01 要从其上行链路 gi1 发送单播流量?
(并且先发制人:是的,我知道 SG300 还有很多不足之处,是的,我们应该启用生成树,但这就是我现在的情况。)
答案1
我会查看捕获的数据包中的 mac 地址。如果某个主机上的掩码、arp 表或网关错误,则可能设置了错误的目标 mac 地址。