我有一个基于Linux的路由器,有四个接口(每个都有自己的私有子网)。
当我直接将设备直接连接到一个接口,另一个设备直接连接到另一个设备时(如没有交换机,只是一根跳线),如下所示,那么路由器就能正常工作。
DEVICE1 192.168.8.11 ------- 192.168.8.254 ROUTER 10.58.129.254 ------- DEVICE2 10.58.129.1
当我连接路由器与我们之间的交换机之间,如下所示,然后路由器不起作用。
DEVICE1 192.168.8.11 ----------- switch1 | switch2 | switch3 | 192.168.8.254 ROUTER 10.58.129.254 -------- switch3 | DEVICE2 10.58.129.1
所有交换机都是第3层,Switch1(Dell PowerConnect 3548P)与Switch2(Dell PowerConnect 6224F)的光纤连接,这是我们的核心交换机,可处理大多数VLAN之间的路由。 这通过光纤连接到Switch3(Dell PowerConnect 6224)。
在两台VLAN(192.168.8.11或10.58.129.254)上都没有启用核心交换机的路由。 原因是因为我们的核心交换机不支持基于策略的路由select,因此这个Linux机箱在这些VLAN上执行路由的原因。
在通过交换机连接的路由器上,从Device1可以ping通Linux路由器上的接口192.168.8.254,但不能ping通另一个接口(10.58.129.254)。
Switch2configuration/诊断
switch2#show ip route Route Codes: R - RIP Derived, O - OSPF Derived, C - Connected, S - Static B - BGP Derived, IA - OSPF Inter Area E1 - OSPF External Type 1, E2 - OSPF External Type 2 N1 - OSPF NSSA External Type 1, N2 - OSPF NSSA External Type 2 S 0.0.0.0/0 [50/0] via 10.58.3.16, vlan 3 C 10.58.3.0/24 [0/0] directly connected, vlan 3 C 10.58.4.0/24 [0/0] directly connected, vlan 4 C 10.58.5.0/24 [0/0] directly connected, vlan 5 C 10.58.9.0/24 [0/0] directly connected, vlan 9 C 10.58.10.0/24 [0/0] directly connected, vlan 10 C 10.58.11.0/24 [0/0] directly connected, vlan 11 C 10.58.12.0/24 [0/0] directly connected, vlan 12 S 10.58.64.0/24 [40/0] via 10.58.3.17, vlan 3 S 10.58.128.0/24 [40/0] via 10.58.3.254, vlan 3 S 10.58.129.0/24 [1/0] via 10.58.3.254, vlan 3 S 192.168.8.0/24 [1/0] via 10.58.3.254, vlan 3 switch2#ping 10.58.129.254 Pinging 10.58.129.254 with 64 bytes of data: ----10.58.129.254 PING Statistics---- 4 packets transmitted,0 packets received,100% packet loss round-trip (ms) min/avg/max = 0/NaN/0 switch2#ping 192.168.8.254 Pinging 192.168.8.254 with 64 bytes of data: ----192.168.8.254 PING Statistics---- 4 packets transmitted,0 packets received,100% packet loss round-trip (ms) min/avg/max = 0/NaN/0
路由器诊断
router# traceroute -d 192.168.8.11 traceroute to 192.168.8.11 (192.168.8.11), 30 hops max, 60 byte packets 1 192.168.8.11 (192.168.8.11) 0.237 ms 0.222 ms 0.211 ms router# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.58.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.58.128.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3 10.58.129.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 192.168.8.0 0.0.0.0 255.255.255.0 U 0 0 0 eth4 router# ping 192.168.8.11 PING 192.168.8.11 (192.168.8.11) 56(84) bytes of data. 64 bytes from 192.168.8.11: icmp_seq=1 ttl=128 time=2.23 ms 64 bytes from 192.168.8.11: icmp_seq=2 ttl=128 time=0.237 ms
Device1诊断
(device1)c:\>route print =========================================================================== Interface List 0x1 ........................... MS TCP Loopback interface 0x2 ...bc 30 5b d8 41 c3 ...... Broadcom NetXtreme 57xx Gigabit Controller - Pac ket Scheduler Miniport =========================================================================== =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.8.254 192.168.8.11 20 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 192.168.8.0 255.255.255.0 192.168.8.11 192.168.8.11 20 192.168.8.11 255.255.255.255 127.0.0.1 127.0.0.1 20 192.168.8.255 255.255.255.255 192.168.8.11 192.168.8.11 20 224.0.0.0 240.0.0.0 192.168.8.11 192.168.8.11 20 255.255.255.255 255.255.255.255 192.168.8.11 192.168.8.11 1 Default Gateway: 192.168.8.254 =========================================================================== Persistent Routes: None (device1)c:\>tracert -d 10.58.129.254 Tracing route to 10.58.129.254 over a maximum of 30 hops 1 * * * Request timed out. 2 * * * Request timed out. 3 * * * Request timed out. 4 * * * Request timed out. (etc. until 30 hops).
因此,从ping 10.58.129.254运行ping 10.58.129.254 ,并在Linux路由器的192.168.8.254接口上运行tcpdump ,我可以看到ICMP回显请求和回复
router# tcpdump -i eth4 17:08:08.326221 IP 192.168.8.11 > 10.58.129.254: ICMP echo request, id 512, seq 63746, length 40 17:08:08.326240 IP 10.58.129.254 > 192.168.8.11: ICMP echo reply, id 512, seq 63746, length 40
但答复永远不会返回到device1。
有人知道问题可能是什么吗? 在eth2,3&4上的tcpdump也显示出以下输出(我在eth0上看不到它,它是由核心交换机路由的上述一个VLAN):
19:49:16.246286 STP 802.1w, Rapid STP, Flags [Learn, Forward], bridge-id 8000.a4:ba:db:69:74:91.8014, length 43 19:49:18.257007 STP 802.1w, Rapid STP, Flags [Learn, Forward], bridge-id 8000.a4:ba:db:69:74:91.8014, length 43
我知道这是生成树,但是我不知道这是不是一件坏事。 这是否提供任何线索? 上面的STP消息中的硬件地址是switch3的硬件地址。
在您的第二个拓扑中,您似乎有一个拆分子网。 192.168.8.0/24跨越了多个交换机,你所说的是第3层。在你的switch2的输出中,你有一个静态路由来指向这个/ 24接口:
S 192.168.8.0/24 [1/0] via 10.58.3.254, vlan 3
这意味着到达192.168.8.254或192.168.8.11的交换机2将被转发到相同的下一跳。 至less有一个目的地
为了使这个工作,你打算,你有几个select:
由于无法解决这个问题,现在正在使用不同的方法,这将极大地简化configuration。 核心交换机不需要路由一些VLAN,而是通过Linux机器路由一些VLAN,现在我可以让核心交换机执行VLAN之间的所有路由,ACL将执行两台路由器提供的隔离。
我将把Linux机箱作为整个networking的默认网关,在iproute2的帮助下,执行基于源IP的路由,所以正确的系统使用正确的网关。