路由詳解

1. 策略路由

  1) 介紹

  策略路由是一種比基於目標網絡進行路由更加靈活的數據包路由轉發機制。html

  Linux最多能夠支持255張路由表,其中有3張表是內置的:存在文件/etc/iproute2/rt_tables中網絡

  表255 本地路由表(Local table) 本地接口地址,廣播地址,已及NAT地址都放在這個表。該路由表由系統自動維護,管理員不能直接修改併發

  表254 主路由表(Main table) 若是沒有指明路由所屬的表,全部的路由都默認都放在這個表裏,通常來講,舊的路由工具(如route)所添加的路由都會加到這個表。通常是普通的路由。app

  表253 默認路由表(Default table)通常來講默認的路由都放在這張表,可是若是特別指明放的也能夠是全部的網關路由。工具

  表0 保留spa

  2) 路由配置命令 IP Route

  Usage: ip route list SELECTORrouter

       ip route { change | del | add | append | replace | monitor } ROUTEhtm

  若是想查看路由表的內容,能夠經過命令:對象

  ip route list table <table_number>blog

  ip -6 route list table <table_number> (對於IPv6)

  對於路由的操做包括change、del、add 、append 、replace 、 monitor這些。例如添加路由能夠用:

  ip route add 0/0 via 192.168.0.4 table main

  ip route add 192.168.3.0/24 via192.168.0.3 table 1

  第一條命令是向主路由表(main table)即表254添加一條路由(而不是添加一條規則),路由的內容是設置192.168.0.4成爲網關。

  第二條命令表明向路由表1添加一條路由,子網192.168.3.0(子網掩碼是255.255.255.0)的網關是192.168.0.3.

  在多路由表的路由體系裏,全部的路由的操做,例如往路由表添加路由,或者在路由表裏尋找特定的路由,須要指明要操做的路由表,全部沒有指明路由表,默認是對主路由表(表254)進行操做。而在單表體系裏,路由的操做是不用指明路由表的。

  3) 規則的配置 IP Rule

  在Linux裏,總共能夠定義232個優先級的規則,一個優先級別只能有一條規則,即理論上總共能夠有232條規則。其中有3個規則是默認的。命令用法以下:

  Usage: ip rule [ list | add | del ] SELECTOR ACTION

  SELECTOR := [ from PREFIX ] [ to PREFIX ] [tos TOS ] [ dev STRING ] [ pref NUMBER ]

  ACTION := [ table TABLE_ID ] [ nat ADDRESS ] [ prohibit | reject | unreachable ] [ flowid CLASSID ]

  TABLE_ID := [ local | main | default | new | NUMBER ]

  首先咱們能夠看看路由表默認的全部規則:

  root@netmonster# ip rule list

  0: from all lookup local

  32766: from all lookup main

  32767: from all lookup default

  注:數字越小,優先級越高

  規則0,它是優先級別最高的規則,規則規定,全部的包,都必須首先使用local表(254)進行路由。本規則不能被更改和刪除

  規則32766,規定全部的包,使用表main進行路由。本規則能夠被更改和刪除。

  規則32767,規定全部的包,使用表default進行路由。本規則能夠被更改和刪除。

  在默認狀況下進行路由時,首先會根據規則0在本地路由表裏尋找路由,若是目的地址是本網絡,或是廣播地址的話,在這裏就能夠找到合適的路由;若是路由失敗,就會匹配下一個不空的規則,在這裏只有32766規則,在這裏將會在主路由表裏尋找路由;若是失敗,就會匹配32767規則,即尋找默認路由表。若是失敗,路由將失敗。 從這裏能夠看出,策略路由是往前兼容的。

  還能夠添加規則:

    ip rule add [from 0/0] table 1 pref 32800

  ip rule add from 192.168.3.112/32 [tos 0x10] table 2 pref 1500 prohibit

  第一條命令將向規則鏈增長一條規則,規則匹配的對象是全部的數據包,動做是選用路由表1的路由,這條規則的優先級是32800.

  第二條命令將向規則鏈增長一條規則,規則匹配的對象是IP爲192.168.3.112, tos等於0x10的包,使用路由表2,這條規則的優先級是1500,動做是丟棄。

  添加之後,咱們能夠看看系統規則的變化。

  router># ip rule

  0: from all lookup local

  1500 from 192.168.3.112/32 [tos 0x10] lookup 2

  32766: from all lookup main

  32767: from all lookup default

  32800: from all lookup 1

  上面的規則是以源地址爲關鍵字,做爲是否匹配的依據的。除了源地址外,還能夠用如下的信息:

  From -- 源地址

  To -- 目的地址(這裏是選擇規則時使用,查找路由表時也使用)

  Tos -- IP包頭的TOS(type of sevice)域

  Dev -- 物理接口

  Fwmark -- 防火牆參數

  採起的動做除了指定表,還能夠指定下面的動做:

  Table 指明所使用的表

  Nat 透明網關

  Action:

  prohibit 丟棄該包,併發送 COMM.ADM.PROHIITED的ICMP信息

  Reject 單純丟棄該包

  Unreachable丟棄該包,併發送 NET UNREACHABLE的ICMP信息

  4)IP Rule 與 IP Route 的區別

  不要混淆路由表(route)和規則(rule):規則指向路由表,多個規則能夠引用一個路由表,並且某些路由表能夠沒有策略指向它。若是系統管理員刪除了指向某個路由表的全部規則,這個表就沒有用了,可是仍然存在,直到裏面的全部路由都被刪除,它纔會消失。

   5)例子

Destination    Netmask    Gateway     Interface      Metric
0.0.0.0   0.0.0.0   192.168.123.254   192.168.123.88    1 #缺省路由,目的地址不在本路由表中的數據包,通過本機的 192.168.123.88 接口發到下一個路由器 192.168.123.254
127.0.0.0   255.0.0.0   127.0.0.1    127.0.0.1    1        #發給本機的網絡包
192.168.123.0    255.255.255.0    192.168.123.68    192.168.123.68    1 #直連路由。目的地址爲 192.168.123.0/24 的包發到本機 192.168.123.88 接口
192.168.123.88    255.255.255.255    127.0.0.1    127.0.0.1    1        #目的地址爲 192.168.123.88的包是發給本機的包
192.168.123.255    255.255.255.255    192.168.123.88    192.168.123.88    1 #廣播包的網段是 192.168.123.0/24,通過 192.168.123.88 接口發出去
224.0.0.0    224.0.0.0    192.168.123.88    192.168.123.88    1             #多播包,通過 192.168.123.88 接口發出去
255.255.255.255    255.255.255.255    192.168.123.68    192.168.123.68    1 #全網廣播包
Default Gateway: 192.168.123.254

  各字段說明:

  destination:目的網段

  mask:子網掩碼。子網掩碼對於 IP 網絡地址能夠是一適當的子網掩碼,對於主機路由是 255.255.255.255 ,對於默認路由是 0.0.0.0。若是忽略,則使用子網掩碼 255.255.255.255。定義路由時因爲目標地址和子網掩碼之間的關係,目標地址不能比它對應的子網掩碼更爲詳細。換句話說,若是子網掩碼的一位是 0,則目標地址中的對應位就不能設置爲 1。

  interface:到達該目的地的本路由器的出口ip

  gateway: 下一跳路由器入口的 ip,路由器經過 interface 和 gateway 定義調到下一個路由器的鏈路(因此網關地址不必定在本機上或本路由器上)。一般狀況下,interface 和 gateway 是同一網段的metric跳數,該條路由記錄的質量,通常狀況下,若是有多條到達相同目的地的路由記錄,路由器會採用metric值小的那條路由。

  http://www.cnblogs.com/sammyliu/p/4713562.html

相關文章
相關標籤/搜索