Route

如何理解路由的輸出

  • July 20, 2020

說我正在配置 Ubuntu 系統的網路。所以我可以編輯/etc/network/interfaces如下:

...
address x.x.x.x
netmask x.x.x.x
gateway 192.168.1.1

然後我執行命令route,我可以得到這樣的輸出:

default       gateway    genmask
192.168.1.0   0.0.0.0    255.255.255.0

我不知道我怎麼理解192.168.1.00.0.0.0255.255.255.0

路線手冊頁很好地解釋了它:

OUTPUT
  The output of the kernel routing table is organized in the following columns

  Destination
         The destination network or destination host.

  Gateway
         The gateway address or '*' if none set.

  Genmask
         The netmask for the destination net; '255.255.255.255' for a host destination and '0.0.0.0' for the default route.

所以 192.168.1.0 是您的目標網路,0.0.0.0 是您的網關,255.255.255.0 是您的網路遮罩。

如果您不確定為什麼您的網關是 0.0.0.0這個答案很好地解釋了它

一個簡單的例子可能會有所幫助。假設這個路由表條目(來自 Linux 下的“route -an”命令輸出,並沒有顯示所有列,只有我們需要的那些 - 這是“獲勝”條目,其他條目未顯示):

Destination   Gateway  Genmask          Iface
192.168.69.0  0.0.0.0  255.255.255.0    eth7
.... other entries not shown ....

現在假設我們正在路由目標 IP 為 192.168.69.25 的出站數據包。這些是發生的步驟。它們(理論上)出現在路由表中的每個條目上;我們只顯示“獲勝”條目。

Extract destination IP:  192.168.69.25
AND it with the Genmask: 192.168.69.25 AND 255.255.255.0 ==> 192.168.69.0
Match the result against the 'Destination' field of the entry.
They match:   192.168.69.0 matches 92.168.69.0
The entry matches (and we presume it's the 'best' match, for simplicity).

匹配條目的網關欄位是 0.0.0.0,意思是“沒有網關,不需要”。這意味著與此條目匹配的 IP 可直接用於此主機,並且可以使用指定的介面“eth7”訪問。將 192.168.69.25 的 ARP 發送到 eth7 所連接的網路;應該有該主機的 MAC 的回复。將數據包發送到該 MAC 地址。

如果網關不是 0.0.0.0,它應該是在 eth7 網路上找到的設備的 IP。向 eth7 發送網關的 ARP 並獲得回复。將數據包發送到該 ARP。這通常是一個路由器,它將接收數據包並將其轉發到適當的下一跳網路。

這是一個簡短而甜蜜的範例-您可以通過一些搜尋找到更多詳細資訊…

引用自:https://unix.stackexchange.com/questions/433734