linux策略路由
策略性路由
策略性是指對於ip包的路由是以網路管理員根據需要定下的一些策略為主要依據進行路由的。例如我們可以有這樣的策略:「所有來直自網a的包,選擇x路徑;其他選擇y路徑」,或者是「所有tos為a的包選擇路徑f;其他選者路徑k」。
cisco 的網路作業系統 (cisco ios) 從11.0開始就採用新的策略性路由機制。而linux是在核心2.1開始採用策略性路由機制的。策略性路由機制與傳統的路由演算法相比主要是引入了多路由表以及規則的概念。
多路由表(multiple routing tables)
傳統的路由演算法是僅使用一張路由表的。但是在有些情形底下,我們是需要使用多路由表的。例如乙個子網通過乙個路由器與外界相連,路由器與外界有兩條線路相連,其中一條的速度比較快,一條的速度比較慢。對於子網內的大多數使用者來說對速度並沒有特殊的要求,所以可以讓他們用比較慢的路由;但是子網內有一些特殊的使用者卻是對速度的要求比較苛刻,所以他們需要使用速度比較快的路由。如果使用一張路由表上述要求是無法實現的,而如果根據源位址或其它引數,對不同的使用者使用不同的路由表,這樣就可以大大提高路由器的效能。
規則(rule)
規則是策略性的關鍵性的新的概念。我們可以用自然語言這樣描述規則,例如我門可以指定這樣的規則:
規則一:「所有來自192.16.152.24的ip包,使用路由表10, 本規則的優先級別是1500」
規則二:「所有的包,使用路由表253,本規則的優先級別是32767」
我們可以看到,規則包含3個要素:
什麼樣的包,將應用本規則(所謂的selector,可能是filter更能反映其作用);
符合本規則的包將對其採取什麼動作(action),例如用那個表;
本規則的優先級別。優先級別越高的規則越先匹配(數值越小優先級別越高)。
策略性路由的配置方法
傳統的linux下配置路由的工具是route,而實現策略性路由配置的工具是iproute2工具包。這個軟體包是由alexey kuznetsov開發的,軟體包所在的主要**為
。這裡簡單介紹策略性路由的配置方法,以便能更好理解第二部分的內容。詳細的使用方法請參考alexey kuznetsov寫的 ip-cfref文件。策略性路由的配置主要包括介面位址的配置、路由的配置、規則的配置。
介面位址的配置ip addr
對於介面的配置可以用下面的命令進行:
usage: ip addr [ add | del ] ifaddr dev string
例如:router># ip addr add 192.168.0.1/24 broadcast 192.168.0.255 label eth0 dev eth0
上面表示,給介面eth0賦予位址192.168.0.1 掩碼是255.255.255.0(24代表掩碼中1的個數),廣播位址是192.168.0.255
路由的配置ip route
linux最多可以支援255張路由表,其中有3張表是內建的:
表255 本地路由表(local table)本地介面位址,廣播位址,已及nat位址都放在這個表。該路由表由系統自動維護,管理員不能直接修改。
表254 主路由表(main table)如果沒有指明路由所屬的表,所有的路由都預設都放在這個表裡,一般來說,舊的路由工具(如route)所新增的路由都會加到這個表。一般是普通的路由。
表253 預設路由表 (default table)一般來說預設的路由都放在這張表,但是如果特別指明放的也可以是所有的閘道器路由。
表 0 保留
如果想檢視路由表的內容,可以通過命令:
ip route list table table_number
第一條命令是向主路由表(main table)即表254新增一條路由,路由的內容是設定192.168.0.4成為閘道器。
第二條命令代表向路由表1新增一條路由,子網192.168.3.0(子網掩碼是255.255.255.0)的閘道器是192.168.0.3。
在多路由表的路由體系裡,所有的路由的操作,例如網路由表新增路由,或者在路由表裡尋找特定的路由,需要指明要操作的路由表,所有沒有指明路由表,預設是對主路由表(表254)進行操作。而在單錶體系裡,路由的操作是不用指明路由表的。
規則的配置ip rule
在linux裡,總共可以定義 個優先順序的規則,乙個優先級別只能有一條規則,即理論上總共可以有條規則。其中有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規則,即尋找預設路由表。如果失敗,路由將失敗。重這裡可以看出,策略性路由是往前相容的。
還可以新增規則:
router># ip rule add [from 0/0] table 1 pref 32800
router >#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資訊
策略性路由的應用
基於源位址選路( source-sensitive routing)
如果乙個網路通過兩條線路接入網際網路,一條是比較快的adsl,另外一條是比較慢的普通的數據機。這樣的話,網路管理員既可以提供無差別的路由服務,也可以根據源位址的不同,使一些特定的位址使用較快的線路,而普通使用者則使用較慢的線路,即基於源址的選路。
根據服務級別選路(quality of service)
網路管理員可以根據
常用命令介紹
1、檢視某張路由表的路由資訊,如下面檢視cernet路由表的資訊:
ip route show table cernet或者
ip route ls table cernet
如果後面不加table cernet ,則預設顯示主表(main)的路由資訊
2、檢視ip位址資訊
ip address show
3、檢視策略路由規則
ip rule list
4、檢視arp快取
ip neigh show
5、建立路由表
[root@localhost ~]# echo "10
cnc" >> /etc/iproute2/rt_tables
注意:路由表前面的數字只是編號並不代表優先順序,路由表沒有優先順序,只有策略規則才有優先順序。
Linux 路由 策略路由
目錄二 ip策略 刪除ip策略規則 三 永久生效,寫入配置檔案 etc sysconfig network scripts rule ethx 注意 本文中使用 隔開的命令等價 從linux 2.2開始,核心把路由歸納到許多路由表中,這些表都進行了編號,編號數字的範圍是1到255。可以在路由表配置檔...
Linux策略路由
前面講的路由規則都是基於目標ip位址為匹配依據設定的路由規則,策略路由則更加靈活,它可以根據多個引數來配置路由。假設如下的使用場景 在192.168.10.0子網中,除了主機192.168.10.123要訪問網際網路時是通過電信運營商 192.168.20.0 24 之外,其他主機都使用移動運營商 ...
linux策略路由例項
linux雙網策略路由指令碼例項 雙網要比單網複雜的多。首先安裝linux高階路由包,用裡面的ip命令。apt get install iproute 先建立兩個表 修改 etc iproute2 rt tables如下 加t1自定義編號10 加t2自定義編號20 reserved values 2...