天天看點

android:Android網關協定

netstate -rn以及route -n 顯示的route協定都是優先級相對低的協定。容易造成誤導

實際上的網關協定是要通過ip指令查詢的。

如果發現route指令下的網關協定是正确的。但是确無法正常的把資料包發出去或者接收。你就需要通過ip指令去确認協定是否正确。

'ip指令':

        ip rule list                                    [顯示所有的路由表,并且從上往下按優先級高到低排序]

        0:  from all lookup local

        10000:  from all fwmark 0xc0000/0xd0000 lookup legacy_system

        13000:  from all fwmark 0x10063/0x1ffff lookup local_network

        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

        23000:  from all fwmark 0x0/0xffff uidrange 0-0 lookup main

        32000:  from all unreachable

'linux可以自定義從1-252個路由表''linux系統維護了4個路由表':

        0#表 系統保留表

        253#表 defulte table 沒特别指定的預設路由都放在改表

        254#表 main table 沒指明路由表的所有路由放在該表

        255#表 locale table 儲存本地接口位址,廣播位址、NAT位址 由系統維護,使用者不得更改

'路由表的檢視可有以下二種方法':

        ip route list table table_number

        ip route list table table_name

'路由表序号和表名的對應關系在/data/misc/rt_tables中,可手動編輯':

        ip route add default via 192.168.1.1 table 1 在一号表中添加預設路由為192.168.1.1

        ip route add 192.168.0.0/24 via 192.168.1.2 table 1 在一号表中添加一條到192.168.0.0網段的路由為192.168.1.2

        注:各路由表中應當指明預設路由,盡量不回查路由表.路由添加完畢,即可在路由規則中應用..

'路由規則的添加':

        進行路由時,根據路由規則來進行比對,按優先級(pref)從低到高比對,直到找到合适的規則.是以在應用中配置預設路由是必要的..

        ip rule show 顯示路由規則

        路由規則的添加

        ip rule add from 192.168.1.10/32 table 1 pref 100

        如果pref值不指定,則将在已有規則最小序号前插入

        注:建立完路由規則若需立即生效須執行#ip route flush cache;重新整理路由緩沖

            可參數解析如下:

                From -- 源位址

                To -- 目的位址(這裡是選擇規則時使用,查找路由表時也使用)

                Tos -- IP標頭的TOS(type of sevice)域Linux進階路由-

                Dev -- 實體接口

                Fwmark -- iptables标簽

                采取的動作除了指定路由表外,還可以指定下面的動作:

                Table 指明所使用的表

                Nat 透明網關

                Prohibit 丢棄該包,并發送 COMM.ADM.PROHIITED的ICMP資訊

                Reject 單純丢棄該包

                Unreachable丢棄該包, 并發送 NET UNREACHABLE的ICMP資訊

                具體格式如下:更強大,使用更靈活,它使網絡管理者不僅能

                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 ]

https://my.oschina.net/u/1397402/blog/736806

https://blog.csdn.net/kangear/article/details/80547073

https://blog.csdn.net/mergerly/article/details/28918081

我們在雙網卡上使用的方案如下

        PREF=`ip rule list | busybox head -n 2 | busybox tail -n 1 | busybox awk '{print $1}' | busybox sed 's/://g'`

        let PREF--

        ip rule add from all table 1 pref ${PREF}

        ip route add 192.168.0.0/24 via 192.168.0.1 dev eth0 table 1

        via應該就是from + to

繼續閱讀