路由表linux routing table

如果连路由器都ping不通,首先检查自己的IP地址有没有设置,再用如下命令设置网关:route add default gw 网关地址 eth0(根据自己的实际网卡名称修改)。

 

路由

我們在網路基礎裡面談到過路由的相關概念, 他最大的功能就是在幫我們規劃網路封包的傳遞方式與方向。 至於路由的觀察則可以使用 route 或者是 netstat 來查閱與設定。 好了,那麼路由的形式有哪些?您又該如何確認路由是否正確呢?

 

路由表

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

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

[root@linux ~]# route -n

Kernel IP routing table
Destination  Gateway     Genmask        Flags Metric Ref  Use Iface
192.168.1.0  0.0.0.0     255.255.255.0  U     0      0      0 eth0 <== 1
127.0.0.0    0.0.0.0     255.0.0.0      U     0      0      0 lo   <== 2
0.0.0.0      192.168.1.2 0.0.0.0        UG    0      0      0 eth1 <== 3

首先,我們得知道在 Linux 系統下的路由表是由小網域排列到大網域, 例如上面的路由表當中,路由是由『 192.168.1.0/24 --> 127.0.0.0/8 --> 0.0.0.0/0 (預設路由) 』來排列的。 而當主機的網路封包需要傳送時,就會查閱上述的三個路由規則來瞭解如何將該封包傳送出去。

你會不會覺得奇怪,為什麼會有這幾個路由呢?其實路由表主要有這幾種情況來設計的:
依據介面而存在的路由
例如 192.168.1.0/24 這個路由的存在是由於鳥哥的這部主機上面擁有 192.168.1.11 這個 IP 的關係! 也就是說,你主機上面有幾個網路介面的存在時,該網路介面就會存在一個路由才對。 所以說,萬一你的主機有兩個網路介面時,例如 192.168.1.11, 192.168.2.11 時,那路由至少就會有:

   
   
   
   
  • [root@linux ~]# route -n
    Kernel IP routing table
    Destination  Gateway     Genmask        Flags Metric Ref  Use Iface
    192.168.1.0  0.0.0.0     255.255.255.0  U     0      0      0 eth0 
    192.168.2.0  0.0.0.0     255.255.255.0  U     0      0      0 eth1
    .....以下省略.....
    
    手動或預設路由(default route)
    你可以使用 route 這個指令手動的給予額外的路由設定,例如那個預設路由 (0.0.0.0/0) 就是額外的路由。 使用 route 這個指令時,最重要的一個概念是:『你所規劃的路由必須要是你的裝置 (如 eth0) 或 IP 可以直接溝通 (broadcast) 的情況』才行。舉例來說,以上述的環境來看, 我的環境裡面僅有 192.168.1.11 及 192.168.2.11 ,那我如果想要連接到 192.168.100.254 這個路由器時, 下達:
    [root@linux ~]# route add -net 192.168.100.0  /
    > netmask 255.255.255.0 gw 192.168.100.254
    SIOCADDRT: Network is unreachable
    
    看吧!系統就會回應沒有辦法連接到該網域,因為我們的網路介面與 192.168.100.0/24 根本就沒有關係嘛! 那如果 192.168.100.254 真的是在我們的實體網路連接上,那其實你應該是這樣做:
    [root@linux ~]# route add -net 192.168.100.0  /
    > netmask 255.255.255.0 dev eth0
    [root@linux ~]# route -n
    Kernel IP routing table
    Destination    Gateway      Genmask        Flags Metric Ref Use Iface
    192.168.100.0  0.0.0.0      255.255.255.0  U     0      0     0 eth0
    192.168.1.0    0.0.0.0      255.255.255.0  U     0      0     0 eth0
    0.0.0.0        192.168.1.2  0.0.0.0        UG    0      0     0 eth1
    
    這樣你的主機就會直接用 eth0 這個裝置去嘗試連接 192.168.100.254 了! 另外,上面路由輸出的重點其實是那個『Flags 的 G 』了!因為那個 G 代表使用外部的裝置作為 Gateway 的意思!而那個 Gateway (192.168.1.2) 必須要在我們的已存在的路由環境中。 這可是很重要的概念喔! ^_^

你可能感兴趣的:(linux,table,NetWork,路由器)