1. 程式人生 > >作業系統裡靜態路由和直連路由的優先順序

作業系統裡靜態路由和直連路由的優先順序

引言

在作業系統上, 同網段IP是通過二層方式直接通訊,  不經過閘道器,成為了一個根深蒂固的觀念,  就算在有直連路由的同時也配置同網段的靜態路由, 也不會有人懷疑直連路由的優先順序,  認為還是會優先二層通訊, 特別是玩過路由器的人, 都知道相同網段的情況下直連路由比靜態路由的優先順序高.  然而事實並非如此.:

Linux系統下的靜態路由與直連路由優先順序對比:

eth0配置 192.168.1.2/24 閘道器 192.168.1.1

然後再配置  route add -net 192.168.1.0/24 gw 192.168.1.1

結果如下:

帶閘道器的是靜態路由,可見2條路由的優先順序都是0, 但是根據實驗, 資料包會先發到閘道器, 也就是靜態路由優先(即便本機有arp記錄,也會靜態路由優先)

Windows(2003)系統下的靜態路由與直連路由優先順序對比:

本地連線1 配置 192.168.1.12/24 閘道器 192.168.1.1

然後再配置  route add  192.168.1.0 mask 255.255.255.0  192.168.1.1

結果如下:


可見直連路由的閘道器是本身,優先順序為10, 靜態路由的閘道器是192.168.1.1 , 優先順序為1, 明顯也是靜態路由優先, 實際測試也是如此.

華為三層交換機下的靜態路由與直連路由優先順序對比:

在vlanif 上配置 ip address 作為閘道器, 同時用 ip route-static 將同樣網段指到另一出口的互聯地址, 經測:

無論直連路由上有沒有活躍的目標IP(活躍的arp記錄) 都不會往靜態路由轉發.

用display routing-table 檢視, 也只能看到直連路由

可見是直連路由優先順序高

結論:

作業系統上靜態路由優先, 路由裝置上直連路由優先.  當然這都是在相同網段的前提下, 在網段不同的時候, 都遵循深度優先原則, 即網段越小優先順序越高.

現實意義:

或許有人說了, 這有什麼用呢? 有誰會在有直連路由的時候去配置相同的靜態路由呢?

1.在把Linux作為軟路由的時候, 難免會配置成這樣而導致異常

2.在南方普遍使用的雙線雙IP伺服器裡面一般都要配置靜態路由表,如果恰好包含本機IP段而且網段大小一致就會出現這種情形.

3.靜態路由優先的情況下, 根本的影響是同網段的二層通訊會走三層(走閘道器), 從而導致:

(1).增加閘道器的負載

(2).如果閘道器介面限速會影響頻寬

(3).如果閘道器介面計費的話增加費用

(4).如果閘道器上做了策略路由, 把inbound的包都策略走了, 可能導致同網段IP不通, 哪怕2個IP在同一個LAN的相鄰埠