Route
如何理解路由的輸出
說我正在配置 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.0
,0.0.0.0
和255.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。這通常是一個路由器,它將接收數據包並將其轉發到適當的下一跳網路。
這是一個簡短而甜蜜的範例-您可以通過一些搜尋找到更多詳細資訊…