使用rt_tables巧妙配置Linux多網(wǎng)卡多路由實(shí)現(xiàn)策略路由

前言

一般在多網(wǎng)卡的網(wǎng)絡(luò)訪問關(guān)系中我們通常根據(jù)目標(biāo)IP地址段來添加靜態(tài)路由表籍茧,在主機(jī)系統(tǒng)配置層面這個(gè)需求一般都比較簡(jiǎn)單也不需要使用非常復(fù)雜的命令皱炉,說實(shí)話如果不是因?yàn)殚_發(fā)測(cè)試中心同事@謝恒的亂入啟發(fā)嘱蛋,我也不會(huì)發(fā)現(xiàn)還有策略路由這樣一種靈活通用的配置方法來實(shí)現(xiàn)Linux多網(wǎng)卡多路由的設(shè)定修陡,灰常感謝邀桑。

rt_tables是一種更加簡(jiǎn)單靈活的策略路由實(shí)現(xiàn)方法


更新記錄

2015年12月18日 - 修正動(dòng)態(tài)路由為策略路由描述祟蚀,完善內(nèi)容工窍,感謝@extreme
2015年12月17日 - 初稿

閱讀原文 - http://wsgzao.github.io/post/iproute2/

擴(kuò)展閱讀


靜態(tài)路由表和策略路由的區(qū)別

通常我們維護(hù)靜態(tài)路由表會(huì)手工填寫所有IP地址段的路由規(guī)則,使用命令或者寫入配置文件永久生效暂题,先以Windows/Linux/AIX常用方法為例

#Windows靜態(tài)路由
--鍵入 route -p add [目標(biāo)] [mask <網(wǎng)絡(luò)掩碼>] [網(wǎng)關(guān)] [metric <度量值>] [if <接口>]
route print
route delete
route -p add 172.16.19.0 mask 255.255.255.0 198.15.0.1

#RHEL靜態(tài)路由
vi /etc/sysconfig/network
default via 192.168.3.1 dev eth0
10.211.6.0/24 via 192.168.3.1 dev eth0
10.0.0.0/8 via 10.212.52.1 dev eth1

#SuSE靜態(tài)路由
vi /etc/sysconfig/network/routes
default 192.168.3.1 - -
10.211.6.0 192.168.3.1 255.255.255.0 eth0
10.0.0.0 10.212.52.1 255.0.0.0 eth1

#AIX靜態(tài)路由
smitty mkroute
172.20.14.0/24 gw 172.23.14.254


這種辦法針對(duì)少量的規(guī)則還可以輕松應(yīng)對(duì)移剪,但規(guī)則一旦增加麻煩也就接踵而至,網(wǎng)段地址不斷變化就必須及時(shí)更新路由表薪者,否則其他用戶就無法訪問。如果可以根據(jù)用戶訪問進(jìn)來的路徑設(shè)定策略路由就會(huì)方便很多剿涮,而rt_tables就是為此而生言津。

rt_tables

rt_tables簡(jiǎn)單來說就是通過給表的命名使得管理簡(jiǎn)單化

大部分人習(xí)慣直接將路由表優(yōu)先級(jí)號(hào)碼直接作為表的名稱來使用,這樣做的好處是非常直觀和簡(jiǎn)明的表達(dá)了表所在優(yōu)先級(jí)的位置取试,但是當(dāng)表的優(yōu)先級(jí)結(jié)構(gòu)出現(xiàn)變動(dòng)時(shí)悬槽,我們對(duì)巨大的路由表的修改就顯得很煩瑣和費(fèi)事了。

在/etc/iproute2/目錄下,有這么一個(gè)文件rt_tables,只要對(duì)它進(jìn)行改動(dòng)瞬浓,我們將很容易的完成路由表優(yōu)先級(jí)結(jié)構(gòu)的變動(dòng)初婆。(數(shù)值越小優(yōu)先級(jí)別越高)

當(dāng)路由表的優(yōu)先級(jí)發(fā)生變化的時(shí)候,我們只需要編輯/etc/iproute2/rt_tables這個(gè)文件就可以直接改變路由表的優(yōu)先級(jí)次序猿棉。

cat /etc/iproute2/rt_tables

#
# reserved values
#
255    local
254    main
253    default
0    unspec
#
# local
#
#1    inr.ruhep

Linux最多可以支持255張路由表磅叛,其中有3張表是內(nèi)置的:

表255 本地路由表(Local table) 本地接口地址,廣播地址萨赁,已及NAT地址都放在這個(gè)表弊琴。該路由表由系統(tǒng)自動(dòng)維護(hù),管理員不能直接修改杖爽。

表254 主路由表(Main table) 如果沒有指明路由所屬的表敲董,所有的路由都默認(rèn)都放在這個(gè)表里紫皇,一般來說,舊的路由工具(如route)所添加的路由都會(huì)加到這個(gè)表腋寨。一般是普通的路由聪铺。

表253 默認(rèn)路由表 (Default table) 一般來說默認(rèn)的路由都放在這張表,但是如果特別指明放的也可以是所有的網(wǎng)關(guān)路由萄窜。

表 0 保留

策略性路由應(yīng)用及分析(iproute2)

策略性路由

策略性是指對(duì)于IP包的路由是以網(wǎng)絡(luò)管理員根據(jù)需要定下的一些策略為主要依據(jù)進(jìn)行路由的计寇。例如我們可以有這樣的策略:“所有來直自網(wǎng)A的包,選擇X路徑脂倦;其他選擇Y路徑”番宁,或者是“所有TOS為A的包選擇路徑F;其他選者路徑K”赖阻。
  Cisco 的網(wǎng)絡(luò)操作系統(tǒng) (Cisco IOS) 從11.0開始就采用新的策略性路由機(jī)制蝶押。而Linux是在內(nèi)核2.1開始采用策略性路由機(jī)制的。策略性路由機(jī)制與傳統(tǒng)的路由算法相比主要是引入了多路由表以及規(guī)則的概念火欧。

多路由表(multiple Routing Tables)

傳統(tǒng)的路由算法是僅使用一張路由表的棋电。但是在有些情形底下,我們是需要使用多路由表的苇侵。例如一個(gè)子網(wǎng)通過一個(gè)路由器與外界相連赶盔,路由器與外界有兩條線路相連,其中一條的速度比較快榆浓,一條的速度比較慢于未。對(duì)于子網(wǎng)內(nèi)的大多數(shù)用戶來說對(duì)速度并沒有特殊的要求,所以可以讓他們用比較慢的路由陡鹃;但是子網(wǎng)內(nèi)有一些特殊的用戶卻是對(duì)速度的要求比較苛刻烘浦,所以他們需要使用速度比較快的路由。如果使用一張路由表上述要求是無法實(shí)現(xiàn)的萍鲸,而如果根據(jù)源地址或其它參數(shù)闷叉,對(duì)不同的用戶使用不同的路由表,這樣就可以大大提高路由器的性能脊阴。

規(guī)則(rule)

規(guī)則是策略性的關(guān)鍵性的新的概念握侧。我們可以用自然語言這樣描述規(guī)則,例如我門可以指定這樣的規(guī)則:
  規(guī)則一:“所有來自192.16.152.24的IP包嘿期,使用路由表10品擎, 本規(guī)則的優(yōu)先級(jí)別是1500”
  規(guī)則二:“所有的包,使用路由表253秽五,本規(guī)則的優(yōu)先級(jí)別是32767”

我們可以看到孽查,規(guī)則包含3個(gè)要素:
  什么樣的包,將應(yīng)用本規(guī)則(所謂的SELECTOR坦喘,可能是filter更能反映其作用)盲再;
  符合本規(guī)則的包將對(duì)其采取什么動(dòng)作(ACTION)西设,例如用那個(gè)表;
  本規(guī)則的優(yōu)先級(jí)別答朋。優(yōu)先級(jí)別越高的規(guī)則越先匹配(數(shù)值越小優(yōu)先級(jí)別越高)贷揽。

環(huán)境配置

服務(wù)器A和B為雙網(wǎng)卡,操作系統(tǒng)為rhel_7.1_64

網(wǎng)卡顯示名稱 IP地址 子網(wǎng)掩碼 網(wǎng)關(guān) 備注
ens4f0 172.31.192.201 255.255.255.0 172.31.192.254 服務(wù)器A
ens9f0 172.31.196.1 255.255.255.0 172.31.196.254 服務(wù)器A
ens4f0 172.31.192.202 255.255.255.0 172.31.192.254 服務(wù)器B
ens9f0 172.31.196.2 255.255.255.0 172.31.196.254 服務(wù)器B
/ 172.25.168.44 255.255.255.0 172.25.168.254 接入測(cè)試

網(wǎng)絡(luò)配置梦碗,以服務(wù)器A為例禽绪,注意注釋默認(rèn)網(wǎng)關(guān)

cat /etc/sysconfig/network-scripts/ifcfg-ens4f0

DEVICE=ens4f0
ONBOOT=yes
BOOTPROTO=static
TYPE=Ethernet
IPADDR=172.31.192.201
NETMASK=255.255.255.0
#GATEWAY=172.31.192.254

cat /etc/sysconfig/network-scripts/ifcfg-ens9f0

DEVICE=ens9f0
ONBOOT=yes
BOOTPROTO=static
TYPE=Ethernet
IPADDR=172.31.196.1
NETMASK=255.255.255.0
#GATEWAY=172.31.196.254

策略路由配置

注意配置名稱一定要吻合

#編輯rt_tables
echo "192 net_192 " >> /etc/iproute2/rt_tables
echo "196 net_196 " >> /etc/iproute2/rt_tables

#清空net_192路由表
ip route flush table net_192
# 添加一個(gè)路由規(guī)則到 net_192 表,這條規(guī)則是 net_192 這個(gè)路由表中數(shù)據(jù)包默認(rèn)使用源 IP 172.31.192.201 通過 ens4f0 走網(wǎng)關(guān) 172.31.192.254
ip route add default via 172.31.192.254 dev ens4f0 src 172.31.192.201 table net_192
#來自 172.31.192.201 的數(shù)據(jù)包洪规,使用 net_192 路由表的路由規(guī)則
ip rule add from 172.31.192.201 table net_192

#清空net_196路由表
ip route flush table net_196
#添加一個(gè)路由規(guī)則到 net_196 表印屁,這條規(guī)則是 net_196 這個(gè)路由表中數(shù)據(jù)包默認(rèn)使用源 IP 172.31.196.1 通過 ens9f0 走網(wǎng)關(guān) 172.31.196.254 
ip route add default via 172.31.196.254 dev ens9f0 src 172.31.196.1 table net_196
#來自 172.31.196.1 的數(shù)據(jù)包,使用 net_196 路由表的路由規(guī)則
ip rule add from 172.31.196.1 table net_196

#添加默認(rèn)網(wǎng)關(guān)
route add default gw 172.31.192.254

#如果需要自啟動(dòng)生效可以寫進(jìn)配置文件也可以加入rc.local
vi /etc/rc.local

ip route flush table net_192
ip route add default via 172.31.192.254 dev ens4f0 src 172.31.192.201 table net_192
ip rule add from 172.31.192.201 table net_192
ip route flush table net_196
ip route add default via 172.31.196.254 dev ens9f0 src 172.31.196.1 table net_196
ip rule add from 172.31.196.1 table net_196
route add default gw 172.31.192.254

#查看路由表
route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     1006   0        0 ens9f0
169.254.0.0     0.0.0.0         255.255.0.0     U     1008   0        0 ens4f0
169.254.0.0     0.0.0.0         255.255.0.0     U     1014   0        0 br-ex
169.254.0.0     0.0.0.0         255.255.0.0     U     1015   0        0 br-int
172.31.192.0    0.0.0.0         255.255.255.0   U     0      0        0 ens4f0
172.31.196.0    0.0.0.0         255.255.255.0   U     0      0        0 ens9f0

#在接入測(cè)試服務(wù)器上驗(yàn)證連通性
ping 172.31.192.201
ping 172.31.196.1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末斩例,一起剝皮案震驚了整個(gè)濱河市雄人,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌念赶,老刑警劉巖础钠,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異叉谜,居然都是意外死亡旗吁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門停局,熙熙樓的掌柜王于貴愁眉苦臉地迎上來很钓,“玉大人,你說我怎么就攤上這事翻具∪瑁” “怎么了隘截?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵桶唐,是天一觀的道長(zhǎng)宫纬。 經(jīng)常有香客問我离福,道長(zhǎng)省撑,這世上最難降的妖魔是什么魄衅? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任鳍寂,我火速辦了婚禮蝗柔,結(jié)果婚禮上闻葵,老公的妹妹穿的比我還像新娘。我一直安慰自己癣丧,他們只是感情好槽畔,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胁编,像睡著了一般厢钧。 火紅的嫁衣襯著肌膚如雪鳞尔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天早直,我揣著相機(jī)與錄音寥假,去河邊找鬼。 笑死霞扬,一個(gè)胖子當(dāng)著我的面吹牛糕韧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喻圃,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼萤彩,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了斧拍?” 一聲冷哼從身側(cè)響起雀扶,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饮焦,沒想到半個(gè)月后怕吴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡县踢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年转绷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硼啤。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡议经,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谴返,到底是詐尸還是另有隱情煞肾,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布嗓袱,位于F島的核電站籍救,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏渠抹。R本人自食惡果不足惜蝙昙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梧却。 院中可真熱鬧奇颠,春花似錦、人聲如沸放航。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荆几,卻和暖如春吓妆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伴郁。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工耿战, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焊傅。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓剂陡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親狐胎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸭栖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前言 一般在多網(wǎng)卡的網(wǎng)絡(luò)訪問關(guān)系中我們通常根據(jù)目標(biāo)IP地址段來添加靜態(tài)路由(static-routes),在主機(jī)系...
    王奧OX閱讀 5,242評(píng)論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理握巢,服務(wù)發(fā)現(xiàn)晕鹊,斷路器,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139
  • 本文主要整理一些和linux網(wǎng)絡(luò)相關(guān)的零散功能暴浦,后續(xù)根據(jù)需要還會(huì)繼續(xù)補(bǔ)充溅话。 iptables 先看一張圖: 兩個(gè)通...
    分享放大價(jià)值閱讀 2,878評(píng)論 0 7
  • #看黑板 1. 廚房非常非常非常小。 2. 徒手整理熟食歌焦。 3. 魷魚大蝦薯角掉地上飞几。 4.人人飛檐走壁。 上周C...
    廚室機(jī)密閱讀 1,033評(píng)論 0 8
  • react-router 是 React 最常用的路由庫独撇,沒有之一屑墨,它除了功能比較欠缺,更新比較抽風(fēng)纷铣,隔代基本大改...
    Michael_learn_t閱讀 758評(píng)論 0 0