路由基本概念和命令介紹

一、路由功能介紹

    當有主機需要在不同網段之間進行相互訪問時,此時就需要引入路由器來進行路徑選擇。以實現不同網段之間的互聯。

    例如下圖中共有兩個不同的網段,分別是Network A192.168.0.0/24)和Network B192.168.1.0/24),這兩個網段是經由一部路由器(Server A)來進行互聯,下面來說明PC1傳送資料給PC2時,數據包的傳送過程:

  步驟:

  1. PC1IP數據包要傳送時,主機會查閱ip數據包表頭的目標ip地址

  2. PC1分析自己的路由表,當發現目標IP與本機IPNet_ID相同,則PC1會參考本身的ARP記錄而直接利用MAC來傳送數據包;

  3. 若目標IP與本機IPNet_ID不相同,則PC1會分析路由表當中是否有符合的路由設定,如果沒有的話就直接將該數據包送到默認路由器上(本例爲Server A)

  4. 當數據包送至Server A後,Server A分析數據包目標IP,後檢查自己的路由表。Server A 發現這個包的目標IP正好是Network B這個網段,因此Server A會接利用MAC來傳送數據包到PC2上。

 二、rout命令介紹

     [root@redflag ~]# route [-nee]

   [root@redflag ~]# route add/del [-net|-host] [網域或主機] netmask [mask] [gw|dev]

   觀察的參數:

   -n  :不使用通訊協議或主機名,直接使用IP或端口號(建議使用);

   -ee :使用更詳細的訊息來顯示

   增加(add)與刪除(del)路由的相關參數:

   -net    :表示後面接的路由爲一個網域;

   -host   :表示後面接的爲連接到單部主機的路由;

   netmask :設置子網掩碼的大小;

   gw      :設置網關

   dev     :指定使用那張網卡;

   範例一:

 

[root@redflag ~]# route -n  
Kernel IP routing table  
Destination  Gateway         Genmask         Flags Metric Ref    Use Iface  
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0  
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0  
0.0.0.0         192.168.10.30   0.0.0.0         UG    0      0        0 eth0  

 說明:

 DestinationGenmask:分別表示networknetmask

 Gateway:該網域是與哪個網關連接,若顯示0.0.0.0表示該路由是直接通過本節傳送,即通過MAC直接傳送;若顯示IP的話,表示該路由需經過路由器的幫忙才能夠傳送出去。

 Flags:代表意義如下:

 U (route is up):該路由是啓動的;

 H (target is a host):目標是一部主機 (IP) 而非網域;

 G (use gateway):需要透過外部的主機(gateway)來轉發數據包;

 R (reinstate route for dynamic routing):使用動態路由時,恢復路由訊息的標誌;

 D (dynamically installed by daemon or redirect):已經由服務或轉端口功能設定爲動態路由

 M (modified from routing daemon or redirect):路由已經被修改了;

 ! (reject route):這個路由將不會被接受(用來抵擋不安全的網域)

 Iface:這個路由由該端口傳送。

  此外,路由的順序是由小網域到大網域,最後是默認路由,所以說路由是有順序的。因此如果在路由表信息中有同一路由只是端口不同,是沒有意義的。

 

例如:  
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0  
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1  

 

  如果出現上面的情況,這時任何數據包均會由eth0傳送出去。

 

範例二:路由的增加與刪除  
[root@redflag ~]# route del -net 192.168.0.0 netmask 255.255.0.0 dev eth0  
# 在刪除的時候,需要將路由表上面出現的信息都寫上包括netmask、dev等  
[root@redflag ~]# route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0  
# 注意,這個路由必須能夠與你互通,否則無法添加。  
[root@redflag ~]# route add default gw 192.168.10.30  
# 增加默認路由的方法,只要有一個默認路由就夠了  
#最後改變路由信息後需要重啓網絡服務  

  三、靜態路由舉例

     網絡環境:有兩個網域分別是192.168.0.0/24 192.168.10.0/24Linux Router是內部路由而Route A是內外網連接路由,具體如下圖所示:

1.配置Linux Router

a. 配置eth0 

  1. [root@redflag ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0  
  2.     DEVICE=eth0 
  3.     BOOTPROTO=static 
  4.     BROADCAST=192.168.10.255  
  5.     IPADDR=192.168.10.254    //配置該IP後,自然就會有192.168.10.0這個網域的路由  
  6.     NETMASK=255.255.255.0  
  7.     NETWORK=192.168.10.0  
  8.     ONBOOT=yes 
   

 b.配置eth1 

  1. [root@redflag ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1  
  2.     DEVICE=eth1 
  3.     BOOTPROTO=static 
  4.     BROADCAST=192.168.0.255  
  5.     IPADDR=192.168.0.100  
  6.     NETMASK=255.255.255.0  
  7.     NETWORK=192.168.0.0  
  8.     GATEWAY=192.168.0.254    <==這個設置很重要  
  9.     ONBOOT=yes 

 c.啓動IP轉發

  1. [root@redflag ~]# echo "1" > /proc/sys/net/ipv4/ip_forward  

 d.重啓網絡服務,並觀察路由

 

  1. [root@redflag ~]# /etc/init.d/network restart  
  2. [root@redflag ~]# route -n  
  3.  Kernel IP routing table  
  4.  Destination     Gateway        Genmask         Flags Metric Ref Use Iface  
  5.  192.168.0.0     0.0.0.0        255.255.255.0   U     0      0     0 eth1  
  6.  192.168.10.0    0.0.0.0        255.255.255.0   U     0      0     0 eth0  
  7.  127.0.0.0       0.0.0.0        255.0.0.0       U     0      0     0 lo  
  8.  0.0.0.0         192.168.0.254  0.0.0.0         UG    0      0     0 eth1  

 2.配置PC2

  這裏假設PC2只有一張網卡,配置如下:

  1. [root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0  
  2.   DEVICE=eth0 
  3.   BOOTPROTO=static 
  4.   BROADCAST=192.168.10.255  
  5.   IPADDR=192.168.10.20  
  6.   NETMASK=255.255.255.0  
  7.   NETWORK=192.168.10.0  
  8.   GATEWAY=192.168.10.254     
  9.   ONBOOT=yes 
  10.  [root@linux ~]# /etc/init.d/network restart  
  11.  [root@linux ~]# route -n  
  12.  Kernel IP routing table  
  13.  Destination   Gateway         Genmask         Flags Metric Ref  Use Iface  
  14.  192.168.10.0  0.0.0.0         255.255.255.0   U     0      0      0 eth0  
  15.  127.0.0.0     0.0.0.0         255.0.0.0       U     0      0      0 lo  
  16.  0.0.0.0       192.168.10.254  0.0.0.0         UG    0      0      0 eth0  

3.配置Router A

  經過上面兩步PC2已經可以連接上Internet了,但是當有數據包從Internet上回傳回來時,由於Route A沒有與192.168.10.0/24網域的路由規則,所以數據包會丟失。此時需要在Router A上額外加一條規則來處理

  [root@linux ~]# route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.0.100

4.配置PC1

  PC1的路由爲192.168.0.254,所以當PC1PC2連通時,數據包將由:
  PC1 --> Router A --> Linux Router --> PC2
 
其實PC1PC2是都有連接到Linux Router上,所以可在PC1上加入一條路由規則實現PC1PC2直接通過Linux router連接

  [root@linux ~]# route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.0.100

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章