Android 6.0 策略路由

實(shí)現(xiàn)648 Android 6.0端與410 Linux端通過(guò)Switch通信

1. 虛擬網(wǎng)卡配置

648中延用638中方法在有線網(wǎng)絡(luò)接口eth0上創(chuàng)建虛擬網(wǎng)卡eth0.1并設(shè)置ip 10.66.1.3用以與410地址10.66.1.2通信咳秉。

echo "busybox ifconfig eth0:1 10.66.1.3 up"
# set VLAN 1 on eth0 and set its REORDER_HDR param
busybox vconfig add eth0 1
busybox vconfig set_flag eth0.1 1 1
# set its network info
busybox ifconfig eth0.1 10.66.1.3 netmask 255.255.255.0 up
busybox ifconfig

配置結(jié)果可通過(guò)命令“ifconfig”查看:



并且配置完成后搔涝,系統(tǒng)路由表中會(huì)自動(dòng)多出一條路由:



表示10.66.1.0網(wǎng)段的ip都走eth0.1網(wǎng)卡绰寞,沒(méi)毛病舶掖。

2. Android M 多網(wǎng)絡(luò)共存

經(jīng)過(guò)步驟一的配置之后在638 Android 4.4系統(tǒng)上即可與410建立通信尸闸;但在648 Android 6.0上是不通的画舌。此問(wèn)題查詢了很長(zhǎng)時(shí)間終于有了解決方案,且聽(tīng)我細(xì)細(xì)道來(lái)介褥。

Android4.4只使用了一張路由表粘优,使用busybox route就可以完成路由表的設(shè)置,從Android5.0之后呻顽,考慮要對(duì)多網(wǎng)絡(luò)的支持,采用了多路由表丹墨。Android 5.0(LOLLIPOP)以上廊遍,在同一時(shí)間下,Android系統(tǒng)可以允許多網(wǎng)絡(luò)類型連接贩挣,而且并不是簡(jiǎn)單的網(wǎng)絡(luò)共存喉前,而是每個(gè)網(wǎng)絡(luò)有一套自己的dns,網(wǎng)關(guān)王财,路由表卵迂。比如eth0,wlan0分別有自己獨(dú)立的一套绒净。應(yīng)用層在建立socket連接的時(shí)候见咒,可以自由選擇使用那套網(wǎng)絡(luò);在這樣子的前提下挂疆,你就可以選擇究竟采用那種網(wǎng)絡(luò)來(lái)完成你的請(qǐng)求改览。這里還涉及到另一個(gè)新的概念不同網(wǎng)絡(luò)的標(biāo)識(shí)netid下翎,應(yīng)用層可通過(guò)綁定指定的netid來(lái)設(shè)置該應(yīng)用走指定的網(wǎng)絡(luò),但此處暫不贅述有興趣可自己了解宝当。在Android 5.0(LOLLIPOP)之前视事,在同一時(shí)間下,Android系統(tǒng)只能允許一種網(wǎng)絡(luò)類型連接庆揩。之后在多網(wǎng)絡(luò)的情況下俐东,系統(tǒng)是如何選擇的呢?這就需要引入一個(gè)關(guān)鍵名詞“策略路由”订晌。

策略路由在linux中已經(jīng)存在很久虏辫,但是Android5.0開(kāi)始才真正將其作用發(fā)揮出來(lái)。策略路由區(qū)別于一般的路由就在于腾仅,一般的路由是以目的地址作為識(shí)別與區(qū)分的標(biāo)識(shí)乒裆,例如下面這個(gè)路由表,它表示所有目的地址為192.168.7.0/24的數(shù)據(jù)包都直接從eth0發(fā)出

root@almond:/ # ip rule list
0:      from all lookup local 
10000:  from all fwmark 0xc0000/0xd0000 lookup legacy_system 
10500:  from all oif eth0 uidrange 0-0 lookup eth0 
13000:  from all fwmark 0x10063/0x1ffff lookup local_network 
13000:  from all fwmark 0x10064/0x1ffff lookup eth0 
14000:  from all oif eth0 lookup eth0 
15000:  from all fwmark 0x0/0x10000 lookup legacy_system 
16000:  from all fwmark 0x0/0x10000 lookup legacy_network 
17000:  from all fwmark 0x0/0x10000 lookup local_network 
19000:  from all fwmark 0x64/0x1ffff lookup eth0 
22000:  from all fwmark 0x0/0xffff lookup eth0 
23000:  from all fwmark 0x0/0xffff uidrange 0-0 lookup main 
32000:  from all unreachable
root@almond:/ #

當(dāng)面對(duì)比較復(fù)雜的情況時(shí)推励,這種基于目的地址的路由鹤耍,就很受局限。例如:有兩個(gè)網(wǎng)卡eth0, eth1验辞,希望所有http上網(wǎng)數(shù)據(jù)從eth0出去稿黄,F(xiàn)TP數(shù)據(jù)從eth1出去。這種情況就必須要策略路由才能處理跌造。

策略路由的基本命令:

  • ip rule list:顯示策略數(shù)據(jù)庫(kù)

  • ip rule add :增加策略規(guī)則

  • ip route add:增加路由表

648上策略路由信息:

# add route policy
busybox ip route add table 3 via 10.66.1.3 dev eth0.1
busybox ip rule add to 10.66.1.2/24 table 3

各部分解釋

  • xx: 第一列數(shù)字是優(yōu)先級(jí)杆怕,小的數(shù)字優(yōu)先級(jí)高

  • 中間部分內(nèi)容:如 from all, 這是規(guī)則

  • fwmark 0x10064: 其中0x64(十進(jìn)制為100)就是該網(wǎng)絡(luò)的netid

  • lookup [xxx] : 表示搜索xxx路由表壳贪,1-252之間的數(shù)字或名稱

整行的意思就是陵珍,如果一個(gè)數(shù)據(jù)包符合規(guī)則(源地址、目的地址违施、協(xié)議互纯、端口、數(shù)據(jù)包大小磕蒲、內(nèi)容等)留潦,則使用指定路由表。

系統(tǒng)最多支持255個(gè)路由表:

  • 規(guī)則0辣往,它是優(yōu)先級(jí)別最高的規(guī)則兔院,規(guī)則規(guī)定,所有的包站削,都必須首先使用local表(254)進(jìn)行路由坊萝。本規(guī)則不能被更改和刪除。

  • 規(guī)則23000,規(guī)定所有的包屹堰,使用表main進(jìn)行路由肛冶。本規(guī)則可以被更改和刪除。

  • 規(guī)則32000扯键,規(guī)定所有的包睦袖,使用表default進(jìn)行路由。本規(guī)則可以被更改和刪除荣刑。

在默認(rèn)情況下進(jìn)行路由時(shí)馅笙,首先會(huì)根據(jù)規(guī)則0在本地路由表里尋找路由,如果目的地址是本網(wǎng)絡(luò)厉亏,或是廣播地址的話董习,在這里就可以找到合適的路由;從這個(gè)路由規(guī)則中可以看到爱只, 路由表 local優(yōu)先皿淋,然后是netid 對(duì)應(yīng) 0x10064 的走 eth0 路由表,對(duì)應(yīng) 0x10066 走 eth0 路由表恬试。而通常情況下訪問(wèn)網(wǎng)絡(luò)時(shí)沒(méi)有設(shè)置 netid窝趣,默認(rèn)就使用 22000: from all fwmark 0x0/0xffff lookup eth0 這個(gè),即 eth0 路由表训柴。

有了策略路由哑舒,就可以保證當(dāng)多網(wǎng)卡存在是,每個(gè)網(wǎng)卡有自己的路由表幻馁,為多網(wǎng)卡共存提供路由基礎(chǔ)洗鸵。上層應(yīng)用,可以選擇要經(jīng)過(guò)的路由仗嗦。

此處沒(méi)有走eth0.1到10.66.1.2的路由策略膘滨,需添加:

# add route policy
busybox ip route add table 3 via 10.66.1.3 dev eth0.1
busybox ip rule add to 10.66.1.2/24 table 3

3. Linux 路由與策略路由

Linux是在內(nèi)核2.1開(kāi)始采用策略性路由機(jī)制的。策略性路由機(jī)制與傳統(tǒng)的路由算法相比主要是引入了上面的多路由表以及規(guī)則的概念稀拐。

要配置一個(gè)策略路由有2步:

1吏祸、在自定義路由表中添加要走的路由 ip route add xxx table table_num

2、增加策略钩蚊,使得符合該策略的流量走第一步所定義的路由表 ip rule add 策略 【table tablenum 或 動(dòng)作】。

傳統(tǒng)的linux路由是由一張路由表去保存網(wǎng)絡(luò)鏈路上的路由信息的蹈矮。新的linux策略路由的理念是使用多張路由表去保存路由信息砰逻。何為策略路由呢,就是為不用的數(shù)據(jù)包制定不同的路由策略泛鸟,即在IP路選時(shí)走不同的路由蝠咆。

在策略路由機(jī)制中,可以支持多張路由表,最多可支持255張表刚操。其中4張是內(nèi)置路由表闸翅,如下:

  • 表255:本地路由表(localtable)。廣播地址和NAT地址都在這個(gè)表里菊霜。該表由系統(tǒng)自動(dòng)維護(hù)坚冀,網(wǎng)絡(luò)管理員不能直接修改。

  • 表254:主路由表(maintable)鉴逞。如果沒(méi)有指明路由所屬的表记某,所有的路由都會(huì)添加到這個(gè)表里。

  • 表253:(defaulttable)构捡。一般所有的默認(rèn)路由都保存在這個(gè)表里

  • 表0:默認(rèn)保留

策略路由的作用

1 基于源地址選路( Source-Sensitive Routing)

2 根據(jù)服務(wù)級(jí)別選路( Quality of Service)

3 節(jié)省費(fèi)用的應(yīng)用

4 負(fù)載平衡(Load Sharing)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末液南,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子勾徽,更是在濱河造成了極大的恐慌滑凉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喘帚,死亡現(xiàn)場(chǎng)離奇詭異畅姊,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)啥辨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)涡匀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人溉知,你說(shuō)我怎么就攤上這事陨瘩。” “怎么了级乍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵舌劳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我玫荣,道長(zhǎng)甚淡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任捅厂,我火速辦了婚禮贯卦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焙贷。我一直安慰自己撵割,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布辙芍。 她就那樣靜靜地躺著啡彬,像睡著了一般羹与。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庶灿,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天纵搁,我揣著相機(jī)與錄音,去河邊找鬼往踢。 笑死腾誉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菲语。 我是一名探鬼主播妄辩,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼山上!你這毒婦竟也來(lái)了眼耀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤佩憾,失蹤者是張志新(化名)和其女友劉穎哮伟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體妄帘,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡楞黄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抡驼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鬼廓。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖致盟,靈堂內(nèi)的尸體忽然破棺而出碎税,到底是詐尸還是另有隱情,我是刑警寧澤馏锡,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布雷蹂,位于F島的核電站,受9級(jí)特大地震影響杯道,放射性物質(zhì)發(fā)生泄漏匪煌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一党巾、第九天 我趴在偏房一處隱蔽的房頂上張望萎庭。 院中可真熱鬧,春花似錦齿拂、人聲如沸驳规。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春叹侄,著一層夾襖步出監(jiān)牢的瞬間巩搏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工趾代, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贯底,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓撒强,卻偏偏與公主長(zhǎng)得像禽捆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子飘哨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,770評(píng)論 25 707
  • 個(gè)人認(rèn)為胚想,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評(píng)論 0 8
  • 1.這篇文章不是本人原創(chuàng)的芽隆,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的浊服,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,049評(píng)論 6 174
  • 雙十一購(gòu)物攻略 one.提前選擇商品進(jìn)行收藏 雙十一當(dāng)天會(huì)有很多商家變動(dòng)詳情頁(yè)和宣傳頁(yè),改變意味著你下次找的時(shí)候會(huì)...
    84ce1f572606閱讀 256評(píng)論 0 1
  • 當(dāng)你看到這篇文章的時(shí)候胚吁,若是沒(méi)有看過(guò)電影牙躺,請(qǐng)先把電影看完后,再來(lái)閱讀腕扶。 度娘和谷歌能告訴你的孽拷,我也不浪費(fèi)時(shí)間...
    SiqiAlbaLi閱讀 1,046評(píng)論 3 0