靜態路由中網關的IP位址如何影響路由

靜態路由中網關的IP位址如何影響路由

我一直使用 Windows 7 電腦連接到位於相同實體網路但不同子網路的 Windows 10 電腦。在我為 Windows 7 新增靜態路由之前,所有流量都會上行至主路由器,然後返回 Windows 10。我犯了一個錯誤,但最終成功了,我不知道為什麼。

網路圖

網路圖

Windows 7 的靜態路由

1. None
2. route add 10.1.1.0 mask 255.255.255.0 10.1.0.99
3. route add 10.1.1.0 mask 255.255.255.0 10.1.1.3
  • 使用route 1 tracert節目10.1.0.98 -> 10.1.0.1 -> 10.1.0.99 -> 10.1.1.4
  • 使用route 2 tracert節目10.1.0.98 -> 10.1.0.99 -> 10.1.1.4
  • 使用route 3 tracert節目10.1.0.98 -> 10.1.0.99 -> 10.1.1.4

我明白為什麼route 2有效,但我不知道為什麼route 3也有效。

PS:如果有人可以建議一個更清晰的標題,請這樣做。

答案1

路由 3 的工作原理取決於 Ubuntu 電腦處理 ARP 封包的方式。針對 10.1.1.3 的 ARP 請求在 10.1.0.0/24 上發出並在 10.1.0.99 介面上接收。自從那台電腦擁有 10.1.1.3,它用其 10.1.0.99 的硬體位址回應。當 Windows 7 電腦稍後嘗試與 Windows 10 電腦建立 RDP 連線時,它會傳送發送至 10.1.1.3 閘道的封包,但攜帶相同子網路上電腦的 MAC 位址,交換器可以直接轉送該封包。

嘗試驗證一下

在 Windows 7 上

.\Arping.exe -i 10.1.0.98 -T 10.1.1.3

在Ubuntu上

22:19:51.275116 (Windows 7 MAC) > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 10.1.1.3 tell 10.1.0.98, length 46

答案2

路由 3 的神奇之處部分在於位址解析協議,部分在於轉發表,部分在於路由演算法。

維基百科

位址解析協定 (ARP) 是一種通訊協議,用於發現與給定網際網路層位址(通常是 IPv4 位址)關聯的鏈結層位址,例如 MAC 位址。

許多作業系統在啟動期間執行免費 ARP。這有助於解決可能發生的問題,例如,最近更改了網卡(更改了 IP 位址到 MAC 位址的對應),而其他主機的 ARP 快取中仍然保留了舊的對應。

因此,Ubuntu 在啟動時已在其連接的兩個子網路上(即整個網路)宣布其存在和介面。 Windows 10 所做的任何類似公告僅在其子網路內進行,因此永遠不會到達Windows 7。 ,以詢問「誰有 10.1.1.4」。

這裡的一個重要提示是該tracert命令沒有列出躍點中的路由器。10.1.1.4即使 Windows 7 不知道,要求也會直接傳送到 Ubuntu 電腦10.1.1.4

我們在這裡看到的運行的是Windows IP路由表:路由確定過程

  • 對於路由表中的每個項目,在目標 IP 位址和網路遮罩之間執行位元邏輯與。將結果與條目的網路 ID 進行比較以尋找匹配項。

  • 匹配路由列表已編譯。具有最長匹配的路線(與目標 IP 位址匹配最多位數的路由)被選擇。最長的匹配路由是到達目的IP位址最具體的路由。如果找到具有最長匹配的多個條目(例如,到相同網路 ID 的多個路由),則路由器將使用最低度量來選擇最佳路由。如果存在多個最長符合和最低度量的條目,則路由器可以自由選擇使用哪個路由表條目。

Windows 7 路由發現 10.1.1.410.1.1.3之間有一個共同的前綴10.1.1。其他可能性是位於 的路由器或 Ubuntu 10.1.0.99,但其公共前綴僅為10.1,因此未選擇它們。

我們在這裡看到運行中的轉發表建立在路由表之上。雖然 路由表 根據IP位址編譯路由,轉發表包含對應的MAC位址。因此轉發表包含一個條目:「對於10.1.1.X,將封包轉送到 Ubuntu 電腦的 MAC 位址」。一旦封包到達 Ubuntu 計算機,它就非常清楚如何將其轉發到10.1.1.4.

這就是來自 Windows 7 的封包最終到達 Windows 10 的方式,反之亦然。

相關內容