我有以下拓扑:
+--------------------------------------------------+
| Segment 192.168/24 |
| |
| Machine A Network Router R |
| +-----------------+ +-----------------+ |
| | 192.168.0.110 | | 192.168.0.1 | |
| | | | | |
| +-----------------+ +-----------------+ |
| +-------------------------+ |
| | Machine B | |
| | +-----------------+ | |
| | | 192.168.0.112 | | |
| | | 172.20.1.1 | | |
| | +-----------------+ | |
+--------------------------------------------------+
| Machine C |
| +-----------------+ |
| | | |
| | 172.20.1.100 | |
| +-----------------+ |
| |
| Segment 172.20/16 |
+-------------------------+192.168/24段是物理局域网,172.20/16段是虚拟专用网。我想使用机器B作为两个段之间的路由器。B是一台支持IP转发和NAT的Linux机器。
当我在机器A中创建到172.20/16网络(通过192.168.0.112)的路由时,我可以正确地到达机器C。
然而,当我在192.168/24段的默认网关(网络路由器R)中创建到172.20/16到192.168.0.112的路由时,对于试图到达机器C,以下是正确的:
我已经在每个节点中捕获了数据包,并且:
eth.dst是从A到R的原始MAC )。这是设置之间唯一的区别。显然,B正在丢弃具有错误MAC地址的帧。
有趣的是,我有完全相同的设置工作在另一个基础设施(主要是不同的硬件)。
我能做些什么来修复这个设置?
发布于 2016-10-03 14:56:30
您应该得到ICMP重定向消息,而不是您期望的ICMP回显答复。
主机192.168.0.110将ICMP回波请求发送到其默认网关192.168.0.1,该网关应将数据包重定向到192.168.0.112,以到达子网172.20.0.0/16。在这种情况下,网关将响应ICMP重定向(因为直接向192.168.0.112发送ping消息的时间较短)。
下面是一个相关的服务器故障柱。
为了在Linux机器上解决这个问题,我在发送机器192.168.0.110上添加了一个静态路由,如下所示:
$ sudo route add -net 172.20.0.0/16 gw 192.168.0.112添加此静态路由时,当试图到达172.20.0.0/16子网时,此计算机将不会与默认网关联系。
https://serverfault.com/questions/806790
复制相似问题