Routing

2個子網之間的奇怪路由行為

  • August 2, 2018

我有兩個子網,路由的工作方式如下: 在此處輸入圖像描述 客戶端 A 可以 Ping (ICMP) 客戶端 B

客戶端 B 無法 Ping (ICMP) 客戶端 A

子網 A中的接入點(Google Wifi Wlan 路由器 - 沒有很多選項,更不用說路由表)中沒有手動配置路由,並且兩者之間只有非託管交換機。

唯一連接到兩個子網的是Sonicwall 防火牆,但我不知道流量是否通過它路由?因為從技術上講,子網之間有更直接的路由。

任一設備上都沒有客戶端防火牆。事實上,我非常確定它與客戶完全無關(不同客戶的行為相同)

子網 A 中的預設網關是 Google Wifi 接入點。在子網 B 中,預設網關是 Windows 伺服器(上面有 DHCP 伺服器)。

我的問題是:

  1. 為什麼客戶端 A 可以 ping 客戶端 B 而不是相反?
  2. 如果我想搜尋配置錯誤的路由規則,我應該在哪裡查找?
  3. 如何實現路由在子網 A 和 B 的所有客戶端之間有效?

啊,所以 Google AP 是多宿主的,並且在兩個子網上。根據您的描述,聽起來 AP 正在為子網 A 上的所有內容提供 NAT。如果是這種情況,您將不得不在 windows 伺服器或 sonicwall 上添加一個路由(我假設它是 windows 的預設 gw伺服器)。該路由本質上會將任何發往子網 A 的內容髮送到Google AP 的子網 B 地址。

首先,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 只是從 AP 接入子網 B 上的交換機,則兩個子網之間沒有真正的安全性未配置為位於不同 VLAN 上的埠。

如果在任何客戶端設備上,您在子網 A 上為子網 B 添加零度量路由,並在子網 B 上執行相反操作(在子網 B 上為子網 A 添加零度量路由),系統將認為自己已連接到兩個網路。從該系統到另一個子網的流量將只使用 ARP 並直接發送到另一個子網,繞過任何第 3 層設備(路由器、l3 防火牆)並直接通信。

例如,如果在子網 B 上的 linux 主機上,您執行以下操作:

ip route add 192.168.86.0/24 metric 0 dev eth0

linux 主機會嘗試通過 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 的丟棄,讓路由器做路由。

引用自:https://serverfault.com/questions/924597