Linux中策略路由實作原理

轉自ToToSun 协议森林
概念

Linux中策略路由實作原理
傳統路由只使用一張路由表,但在某些情況下,需要使用多路由表(multiple Routing Tables)。策略路由指對IP包根據特定策略進行路由,例如“所有來自網路A的包,選擇X路徑;其他選擇Y路徑”,或者是“所有TOS為A的包選擇路徑X;其他選號路徑Y” 。
規則是策略路由關鍵概念,什麼樣的包,將應用本規則(RULE),符合本規則的包將對其採取什麼動作(ACTION);本規則優先級別越高,規則越先匹配,數值越小優先等級越高。
iproute2工具

實作策略路由配置工具一般用iproute2工具包。 Linux最多可以支援255張路由表,其中有3張表是內建的:

表255:本地路由表(Local table)本地介面位址,廣播位址以及NAT位址都存放在這張表。此路由表由系統自動維護,管理員不能直接修改。

表254:主路由表(Main table)如果沒有指明路由所屬表,所有的路由都預設放在這個表裡,一般來說,舊路由工具(如route)所新增的路由都會加到這個表。一般是普通路由。

表253:預設路由表(Default table)一般來說預設路由都放在這張表。

root:/# ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
root:/#
root:/# ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.1.0 dev enp9s0f0 proto kernel scope link src 192.168.1.182
local 192.168.1.182 dev enp9s0f0 proto kernel scope host src 192.168.1.182
broadcast 192.168.1.255 dev enp9s0f0 proto kernel scope link src 192.168.1.182
broadcast 192.168.2.0 dev enp9s0f1 proto kernel scope link src 192.168.2.182 linkdown
local 192.168.2.182 dev enp9s0f1 proto kernel scope host src 192.168.2.182
broadcast 192.168.2.255 dev enp9s0f1 proto kernel scope link src 192.168.2.182 linkdown
broadcast 192.168.3.0 dev enp9s0f2 proto kernel scope link src 192.168.3.182 linkdown
local 192.168.3.182 dev enp9s0f2 proto kernel scope host src 192.168.3.182
broadcast 192.168.3.255 dev enp9s0f2 proto kernel scope link src 192.168.3.182 linkdown
broadcast 192.168.6.0 dev enp52s0f1 proto kernel scope link src 192.168.6.183 linkdown
local 192.168.6.183 dev enp52s0f1 proto kernel scope host src 192.168.6.183
broadcast 192.168.6.255 dev enp52s0f1 proto kernel scope link src 192.168.6.183 linkdown
root:/
root:/
root:/# ip route show table main
192.168.1.0/24 dev enp9s0f0 proto kernel scope link src 192.168.1.182
192.168.1.0/24 dev enp9s0f0 proto kernel scope link src 192.168.1.182 metric 101
192.168.2.0/24 dev enp9s0f1 proto kernel scope link src 192.168.2.182 linkdown
192.168.3.0/24 dev enp9s0f2 proto kernel scope link src 192.168.3.182 linkdown
192.168.6.0/24 dev enp52s0f1 proto kernel scope link src 192.168.6.183 linkdown
规则配置

在添加规则时,必须先确定好“条件”、“优先级别”及“路由表”,此后才可执行添加规则操作。条件是用来决定哪类数据包可以符合这项规则,而可用来匹配的字段为Source IP、Destination IP、Type of Service、fwmark及dev等,这些字段的使用方式如下:
#根据源IP
ip rule add from 192.168.1.10 table 100
ip rule add from 192.168.2.0/24 table 200

#根据目的IP
ip rule add to 10.0.2.1 table 100
ip rule add to 10.0.2.0/24 table 200
将fwmark作为匹配条件时,必须搭配Netfilter一起使用。某公司对外有三种路由,希望所有HTTP协议经由第一条ADSL ,SMTP及POP3经由第二条VDSL,其余流量则经由第三条ETH。可以使用如下命令实现策略路由:

iptables -t mangle -A FORWARD -i adsl -p tcp –dport 80 -j MARK –set-mark 1
iptables -t mangle -A FORWARD -i vdsl -p tcp –dport 25 -j MARK –set-mark 2
iptables -t mangle -A FORWARD -i vdsl -p tcp –dport 110 -j MARK –set-mark 2
iptables -t mangle -A FORWARD -i eth3 -j MARK –set-mark 3
ip rule add fwmark 1 table 1
ip rule add fwmark 2 table 2
ip rule add fwmark 3 table 3

由eth2接口送入的数据包都由eth0接口转发出去,由eth3接口送入的数据包都由eth1接口转发出去,可以使用如下命令实现策略路由:

ip rule add dev eth2 table 1
ip rule add dev eth3 table 3
ip rule show命令所显示内容的第一个字段就是优先级别,数字越小,代表优先级别越高,也代表这条规则可以排得越靠前,如此数据包在进行条件匹配时,就会越早匹配到这条规则。

[root@localhost ~]# ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
[root@localhost ~]#
[root@localhost ~]# ip rule add from 192.168.1.0/24 table 1 prio 10
[root@localhost ~]# ip rule add from 192.168.2.0/24 table 2 prio 20
[root@localhost ~]#
[root@localhost ~]# ip rule show
0: from all lookup local
10: from 192.168.1.0/24 lookup 1
20: from 192.168.2.0/24 lookup 2
32766: from all lookup main
32767: from all lookup default
ip命令提供的删除规则的方式十分灵活,例如,要删除下列第2条规则,可以分别使用“优先级别”、“条件”及“路由表”当中任何一个唯一的值来设置所需删除的规则。

ip rule del prio 10
ip rule del from 192.168.1.0/24
ip rule del table 1
ip rule del from 192.168.1.0/24 table 1 prio 10

Killtest LPI 117-201考古題資訊

117-201題庫包括了89道真題,真題的更新是隨著考綱的改變而更新,保證考生的通過率。LPIC Level2 117-201(lp1 level 2 exam 201)考題由我們的資深IT認證講師和LPIC Level2產品專家精心打造,包括了當前最新的真實117-201考題,全部附有正確答案。 LPI相信需要壹個標準化的、多國的、令人信服的考試來驗證個人在Linux上技能的等級。同時,這個考試必須有利於公司雇用Linux方面專業人才。為了實現這壹目的,Linux專家機構(LPI)聯合多方力量設計和完善了LPI認證考試。Linux專家機構(LPI)通過全球的發展使之成為壹個倍受公認和廣泛認可的Linux認證考試體系。用戶應該可以自由選擇,在認證Linux 最高級工程師這壹關鍵領域不應固定於壹個廠商。

Killtest LPI 117-201最新考古題資訊

LPI公司有關人士透露:LPI認證如今成了臺灣有關Linux證照的主力軍。LPI證照主要分為三個階段的考試科目:LPI Level1 117-101 117-102;Level2 117-201 117-202;Level3 117-301,117-302。LPIC的分級是以“工作任務分析”(JTA)的調查為基礎來決定每種任務適合某種等級.在LPI考試的開發過程中,使用了公認的認知心理學來開發和完善 JTA,以使其達到它的相關性和高質量。

我們的LPI考試將為您提供試題和答案,核實反映實際考試。這些問題和答案,為您提供的經驗,採取實際測試。我們不只是考試LPI的問題和答案。他們是你獲得很高的技術專長和加速學習的能力。