策略路由基礎(chǔ)命令(Linux)
策略路由是一種比基于目標(biāo)網(wǎng)絡(luò)進(jìn)行路由更加靈活的數(shù)據(jù)包路由轉(zhuǎn)發(fā)機(jī)制。我們主要講解了策略路由配置的相關(guān)命令,希望讓您對(duì)策略路由有一個(gè)更加深刻的理解...
策略路由
策略性是指對(duì)于IP包的路由是以網(wǎng)絡(luò)管理員根據(jù)需要定下的一些策略為主要依據(jù)進(jìn)行路由的。例如我們可以有這樣的策略:"所有來(lái)直自網(wǎng)A的包,選擇X路徑;其他選擇Y路徑",或者是"所有TOS為A的包選擇路徑F;其他選者路徑K"
Linux最多可以支持255張路由表,其中有3張表是內(nèi)置的:
存在文件/etc/iproute2/rt_tables中
表255 本地路由表(Local table)本地接口地址,廣播地址,已及NAT地址都放在這個(gè)表。該路由表由系統(tǒng)自動(dòng)維護(hù),管理員不能直接修改。
表254 主路由表(Main table)如果沒有指明路由所屬的表,所有的路由都默認(rèn)都放在這個(gè)表里,一般來(lái)說(shuō),舊的路由工具(如route)所添加的路由都會(huì)加到這個(gè)表。一般是普通的路由。
表253 默認(rèn)路由表(Default table)一般來(lái)說(shuō)默認(rèn)的路由都放在這張表,但是如果特別指明放的也可以是所有的網(wǎng)關(guān)路由。
表0 保留
路由配置命令的格式如下:
Usage: ip route list SELECTOR
ip route { change | del| add | append | replace | monitor } ROUTE
如果想查看路由表的內(nèi)容,可以通過(guò)命令:
ip route list table table_number
ip -6 route list table table_number(對(duì)于IPv6)
對(duì)于路由的操作包括change、del、add 、append 、replace 、 monitor這些。例如添加路由可以用:
router># ip route add 0/0 via 192.168.0.4 table main
router># ip route add 192.168.3.0/24 via192.168.0.3 table 1
第一條命令是向主路由表(main table)即表254添加一條路由,路由的內(nèi)容是設(shè)置192.168.0.4成為網(wǎng)關(guān)。
第二條命令代表向路由表1添加一條路由,子網(wǎng)192.168.3.0(子網(wǎng)掩碼是255.255.255.0)的網(wǎng)關(guān)是192.168.0.3.
在多路由表的路由體系里,所有的路由的操作,例如網(wǎng)路由表添加路由,或者在路由表里尋找特定的路由,需要指明要操作的路由表,所有沒有指明路由表,默認(rèn)是對(duì)主路由表(表254)進(jìn)行操作。而在單表體系里,路由的操作是不用指明路由表的。
規(guī)則的配置 IP Rule
在Linux里,總共可以定義232個(gè)優(yōu)先級(jí)的規(guī)則,一個(gè)優(yōu)先級(jí)別只能有一條規(guī)則,即理論上總共可以有條規(guī)則。其中有3個(gè)規(guī)則是默認(rèn)的。命令用法如下:
Usage: ip rule [ list | add | del ] SELECTORACTION
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
首先我們可以看看路由表默認(rèn)的所有規(guī)則:
root@netmonster# ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
注:數(shù)字越小,優(yōu)先級(jí)越高
規(guī)則0,它是優(yōu)先級(jí)別最高的規(guī)則,規(guī)則規(guī)定,所有的包,都必須首先使用local表(254)進(jìn)行路由。本規(guī)則不能被更改和刪除。
規(guī)則32766,規(guī)定所有的包,使用表main進(jìn)行路由。本規(guī)則可以被更改和刪除。
規(guī)則32767,規(guī)定所有的包,使用表default進(jìn)行路由。本規(guī)則可以被更改和刪除。
在默認(rèn)情況下進(jìn)行路由時(shí),首先會(huì)根據(jù)規(guī)則0在本地路由表里尋找路由,如果目的地址是本網(wǎng)絡(luò),或是廣播地址的話,在這里就可以找到合適的路由;如果路由失敗,就會(huì)匹配下一個(gè)不空的規(guī)則,在這里只有32766規(guī)則,在這里將會(huì)在主路由表里尋找路由;如果失敗,就會(huì)匹配32767規(guī)則,即尋找默認(rèn)路由表。如果失敗,路由將失敗。重這里可以看出,策略性路由是往前兼容的。
還可以添加規(guī)則:
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
第一條命令將向規(guī)則鏈增加一條規(guī)則,規(guī)則匹配的對(duì)象是所有的數(shù)據(jù)包,動(dòng)作是選用路由表1的路由,這條規(guī)則的優(yōu)先級(jí)是32800.
第二條命令將向規(guī)則鏈增加一條規(guī)則,規(guī)則匹配的對(duì)象是IP為192.168.3.112,tos等于0x10的包,使用路由表2,這條規(guī)則的優(yōu)先級(jí)是1500,動(dòng)作是。添加以后,我們可以看看系統(tǒng)規(guī)則的變化。
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
上面的規(guī)則是以源地址為關(guān)鍵字,作為是否匹配的依據(jù)的。除了源地址外,還可以用以下的信息:
From -- 源地址
To -- 目的地址(這里是選擇規(guī)則時(shí)使用,查找路由表時(shí)也使用)
Tos -- IP包頭的TOS(type of sevice)域
Dev -- 物理接口
Fwmark -- 防火墻參數(shù)
采取的動(dòng)作除了指定表,還可以指定下面的動(dòng)作:
Table 指明所使用的表
Nat 透明網(wǎng)關(guān)
Action prohibit 丟棄該包,并發(fā)送 COMM.ADM.PROHIITED的ICMP信息
Reject 單純丟棄該包
Unreachable丟棄該包,并發(fā)送 NET UNREACHABLE的ICMP信息