背景介绍, 如上图所示:
1, SW1,SW2,SW3 运行 MSTP,SW1 为 MSTP 的根桥;
2, FW1 上策略全开, 在 FW1 上做镜像, 将 GE1/0/1 端口入流量镜像到 GE0/0/1 端口进行分析;
3, 地址分配如下: SW1 与 FW1 使用三层对接, 地址为 192.168.1.0/24(交换机为 1, 防火墙为 2),SW2 模拟二层交换机, 放通 SW1 与 FW1 对接使用的 VLAN10;SW3 与 FW1 使用 192.1682.0/24 对接, 使用 vlan20;
测试及定位过程:
1, 先在 SW1 及 SW3 上 ping 测试 FW1 防火墙上对接地址, 确认三层对接无故障, 测试 SW1 访问 SW3 无故障;
2, 通过上面测试可以发现设备之间互访没有问题, 现在我们在 FW1 防火墙上配置镜像后, 再测试互通性;
3, 通过上面测试可以发现, SW1 无法访问 FW1 防火墙地址, 问题应该就在 SW2 和 FW1 上面, 可以通过在 SW2 与 FW1 互连的接口上抓包查看;
4, 可以看到有两台设备发了 STP 的 BPDU, 但是防火墙是不支持 STP 的, 那么另一台发送 STP 的设备是哪台呢?
5, 可以看到在 SW2 和 FW1 互连接口收到了 SW3 发送的 BPDU 报文, 难道是 STP 导致 SW1 访问 FW1 地址不通的?
6, 可以看到是 SW2 连接 FW1 防火墙的端口变为 discarding 状态了, 为什么会有这种情况产生呢? 就因为防火墙把 SW3 的 BPDU 报文镜像过来了?
7, 可以看到, SW2 收到 SW3 发送的 认为自己是根桥的 BPDU, 但 SW2 发现 SW1 发送的才是最优的 (优先级为 0), 那么他先将自己的端口状态改为 discarding, 同时向对端发送更优的 BPDU, 但是却一直无法改变对端状态, 所以本地端口状态就一直是 discarding, 这也是 STP 防止临时环路的一种方法.
来源: http://www.bubuko.com/infodetail-2912383.html