我有两个子网,路由工作如下:
客户端 A 可以 Ping 通 (ICMP) 客户端 B
客户端 B 无法 Ping 通 (ICMP) 客户端 A
没有路线手动在接入点中配置(谷歌无线上网Wlan 路由器 - 没有太多选项,更不用说路由表)在子网 A 中,并且中间只有非托管交换机。
唯一连接到两个子网的是Sonicwall 防火墙但我不知道流量是否通过那里路由?因为从技术上讲,子网之间有一条更直接的路由。
两台设备上都没有客户端防火墙。事实上,我非常确定它与客户端完全无关(不同客户端的行为相同)
子网 A 中的默认网关是 Google Wifi 接入点。子网 B 中的默认网关是 Windows 服务器(上面有 DHCP 服务器)。
我的问题是:
- 为什么客户端 A 可以 ping 通客户端 B 而客户端 B 却不能 ping 通呢?
- 如果我想搜索配置错误的路由规则,我应该去哪里查找?
- 如何实现子网 A 和子网 B 的所有客户端之间的路由?
答案1
啊,所以 Google AP 是多宿主的,并且位于两个子网上。从您的描述来看,AP 似乎为子网 A 上的所有内容提供 NAT。如果是这种情况,您必须在 Windows 服务器或 SonicWall 上添加路由(我假设它是 Windows 服务器的默认网关)。该路由基本上会将绑定到子网 A 的任何内容发送到 Google AP 的子网 B 地址。
答案2
首先,192.168.15.0/21(255.255.248.0)不是命名该网络的正确方式,它实际上是 192.168.8.0/21(255.255.248.0),范围从 192.168.8.0 - 192.168.15.255。
其次,如果两个子网位于交换机上的同一个交换机/VLAN 上(如图表所示),或者子网 A 上的 wifi AP 只是从未配置为不同 VLAN 的 AP 端口接入子网 B 上的交换机,那么两个子网之间就没有真正的安全性。
如果在任何客户端设备上,您在子网 A 上为子网 B 添加零度量路由,并在子网 B 上执行相反的操作(在子网 B 上为子网 A 添加零度量路由),则系统将认为自己已连接到两个网络。从该系统到另一个子网的流量将仅使用 ARP 并直接发送到另一个子网,绕过任何第 3 层设备(路由器、l3 防火墙),并直接通信。
例如,如果在子网 B 上的 Linux 主机上,您执行了如下操作:
ip 路由添加 192.168.86.0/24 metric 0 dev eth0Linux 主机将尝试通过 ARPing 将数据包直接发送到子网 A 上的节点。显然,如果您依靠防火墙或路由器在两个子网之间提供某种安全性,这将失败。
现在,问题已经解决了,这是一个相当简单的 IP 路由问题。您需要在子网 A 的默认网关上设置一条路由,该路由指向 192.168.86.0/24(子网 B)的有效网关。您需要在子网 B 的默认网关上设置一条路由,该路由指向 192.168.8.0/21(子网 A)的有效网关。有效网关是可从源路由器/网关直接访问的路由器,它知道如何到达目标网络,要么通过下一跳路由,要么直接连接到目标网络。
一旦确定了这一点,您必须确保没有任何防火墙阻止子网之间的通信。默认情况下,Windows 防火墙具有相当严格的规则。如果启用了防火墙,它几乎肯定会以某种方式阻止两个子网之间的通信。如果子网 B 上的 AP 的下拉是第 3 层(例如,VLAN 端口而不仅仅是另一个交换机端口),那么它的防火墙(假设它有一个)也可能阻止通信。
总的来说,您可能需要看一下这个网络架构,并想出一些更合理的想法。例如,您应该在中心有一个路由器,而不仅仅是一个交换机。如果是 L3 交换机,您可以简单地将端口分离到不同的 VLAN 上,并让交换机充当两个子网之间的核心路由器,摆脱从 AP 到子网 A 的丢弃,让路由器进行路由。