Linux作業系統的路由

路由表產生的類型

每一部主機都有自己的路由表, 也就是說,你必須要透過你自己的路由表來傳遞你主機的封包到下一個路由器上頭。 若傳送出去後,該封包就得要透過下一個路由器的路由表來傳送了,此時與你自己主機的路由表就沒有關係啦! 所以說,如果網絡上面的某一部路由器設定錯誤,那封包的流向就會發生很大的問題。 我們就得要透過 traceroute 來嘗試瞭解一下每個 router 的封包流向。

OK!那你自己主機的路由表到底有哪些部分呢?我們以底下這個路由表來說明:

Linux操作系統的路由

首先,我們得知道在 Linux 系統下的路由表是由小網域排列到大網域, 例如上面的路由表當中,路由是由192.168.1.0/24 --> 169.254.0.0/16 --> 0.0.0.0/0 (預設路由)來排列的。 而當主機的網絡封包需要傳送時,就會查閱上述的三個路由規則來了解如何將該封包傳送出去。 那你會不會覺得奇怪,為什麼會有這幾個路由呢?其實路由表主要有這幾種情況來設計的:

依據網絡接口產生的 IP 而存在的路由:

例如 192.168.1.0/24 這個路由的存在是由於鳥哥的這部主機上面擁有 192.168.1.100 這個 IP 的關係! 也就是說,你主機上面有幾個網絡接口的存在時,該網絡接口就會存在一個路由才對。 所以說,萬一你的主機有兩個網絡接口時,例如 192.168.1.100, 192.168.2.100 時,那路由至少就會有:

Linux操作系統的路由

手動或預設路由(default route):

你可以使用 route 這個指令手動的給予額外的路由設定,例如那個預設路由 (0.0.0.0/0) 就是額外的路由。 使用 route 這個指令時,最重要的一個概念是:你所規劃的路由必須要是你的裝置 (如 eth0) 或 IP 可以直接溝通 (broadcast) 的情況才行。舉例來說,以上述的環境來看, 我的環境裡面僅有 192.168.1.100 及 192.168.2.100 ,那我如果想要連接到 192.168.5.254 這個路由器時, 下達:

Linux操作系統的路由

看吧!系統就會響應沒有辦法連接到該網域,因為我們的網絡接口與 192.168.5.0/24 根本就沒有關係嘛! 那如果 192.168.5.254 真的是在我們的實體網絡連接上,並且與我們的 eth0 連接在一起,那其實你應該是這樣做:

Linux操作系統的路由

這樣你的主機就會直接用 eth0 這個裝置去嘗試連接 192.168.5.254 了! 另外,上面路由輸出的重點其實是那個Flags 的 G 了!因為那個 G 代表使用外部的裝置作為 Gateway 的意思!而那個 Gateway (192.168.1.254) 必須要在我們的已存在的路由環境中。


分享到:


相關文章: