本文主要講解如何,解決基于3568實(shí)現(xiàn)雙網(wǎng)口互通問題。
一、組網(wǎng)
如下圖所示:rk3568自帶2個千兆以太口,對應(yīng)網(wǎng)卡名稱為:eth0、eth1pc1和pc2分別連接這2個網(wǎng)口pc1與eth0連接,網(wǎng)段:192.168.30.0pc2與eth1連接,網(wǎng)段:192.168.40.0
目標(biāo):實(shí)現(xiàn)pc1與pc2互通。
組網(wǎng)也可以簡化為:
???????????????????????????????3568
??????pc1?<--------------[eth0======eth1]--------------->pc2
192.168.30.2?????192.168.30.111?????192.168.40.222???192.168.40.8
二、完整配置
下面我們首先說明各個設(shè)備完整配置
1. pc1
默認(rèn)網(wǎng)關(guān)含義:協(xié)議棧根據(jù)數(shù)據(jù)包的目的ip查找路由表,如果沒有匹配的路由條目則發(fā)送給網(wǎng)關(guān),網(wǎng)關(guān)通常是當(dāng)前設(shè)備的網(wǎng)卡直連(或者通過交換機(jī)、路由器連接)的局域網(wǎng)內(nèi)的某個網(wǎng)卡掩碼通常是255.255.255.0
根據(jù)組網(wǎng)圖,pc1的網(wǎng)卡連接的是rk3568的eth0:192.168.30.111
2. pc2
配置含義同pc1
3. rk3568上配置
- 配置網(wǎng)口對應(yīng)的IP地址
ifconfig?eth0?192.168.30.111?????
ifconfig?eth1?192.168.40.222
-
- 使能轉(zhuǎn)發(fā)
默認(rèn)設(shè)備是不轉(zhuǎn)發(fā)數(shù)據(jù)包的,需要使能該功能
echo?1?>?/proc/sys/net/ipv4/ip_forward
或者
sysctl?-w?net.ipv4.ip_forward=1????
- 增加策略路由表main,目的是轉(zhuǎn)發(fā)數(shù)據(jù)的時候,查找表main 的路由策略
ip?rule?add?from?all?lookup?main?pref?9000??
該表為main,
“
沒指明路由表的所有路由放在該表。
”
-
- 刪除默認(rèn)的iptables規(guī)則
- 系統(tǒng)出廠會有默認(rèn)的iptables規(guī)則,必須刪除,否則數(shù)據(jù)轉(zhuǎn)發(fā)會受影響。
iptables?-F???@刪除所有的iptables規(guī)則
-
- 測試
-
- 上述配置全部配置完,pc1和pc2就可以互相ping通了。
三、補(bǔ)充調(diào)試工具
調(diào)試該功能,還需要配合下面幾條指令
1. ip rule查看路由表
傳統(tǒng)路由:
在Android4.4之前是使用的傳統(tǒng)路由,即只使用了一張路由表。
策略路由:
從Android5.0之后開始可以支持多網(wǎng)絡(luò),即在同一時間下,Android允許多網(wǎng)絡(luò)類型連接,每個網(wǎng)絡(luò)有自己的一套DNS、網(wǎng)關(guān)、路由表等。這使得功能更強(qiáng)大,使用更靈活,它使網(wǎng)絡(luò)管理員不僅能夠根據(jù)目的地址而且能夠根據(jù)報(bào)文大小,應(yīng)用或IP源地址等屬性來選擇轉(zhuǎn)發(fā)路徑。一般的路由以目的地址作為識別與區(qū)分的標(biāo)識。
系統(tǒng)最多可支持255張路由表:系統(tǒng)默認(rèn)是有維護(hù)4張路由表的,可以自定義1~252張路由表。
id | 表 | 說明 |
---|---|---|
0 | 系統(tǒng)保留表 | |
253 | default table | 沒特別指定的默認(rèn)路由都放在該表。 該路由表是一個空的路由表,正常情況下保持該路由表為空即可 |
254 | main table | 沒指明路由表的所有路由放在該表。 如果添加路由時沒有指定該路由所屬的路由表,則這條路由會被添加到main路由表中。配置好網(wǎng)卡的網(wǎng)絡(luò)設(shè)置系統(tǒng)就會自動生成main路由表。 |
255 | local table | 保存本地接口地址,廣播地址、NAT地址。由系統(tǒng)維護(hù),用戶不得更改 |
下面是查看策略路由表
rk3568_r:/?#?ip?rule?
0:??????from?all?lookup?local????????????????????????????????????????????????????
9000:???from?all?lookup?main???????【此處是我們上一節(jié)手動添加的表,很關(guān)鍵】??????????????????????????????????????????????
10000:??from?all?fwmark?0xc0000/0xd0000?lookup?legacy_system?????????????????????
10500:??from?all?iif?lo?oif?dummy0?uidrange?0-0?lookup?dummy0????????????????????
10500:??from?all?iif?lo?oif?eth0?uidrange?0-0?lookup?eth0????????????????????????
13000:??from?all?fwmark?0x10063/0x1ffff?iif?lo?lookup?local_network??????????????
13000:??from?all?fwmark?0x10066/0x1ffff?iif?lo?lookup?eth0???????????????????????
14000:??from?all?iif?lo?oif?dummy0?lookup?dummy0?????????????????????????????????
14000:??from?all?iif?lo?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?0x66/0x1ffff?iif?lo?lookup?eth0??????????????????????????
22000:??from?all?fwmark?0x0/0xffff?iif?lo?lookup?eth0????????????????????????????
23000:??from?all?fwmark?0x0/0xffff?uidrange?0-0?lookup?main??????????????????????
32000:??from?all?unreachable
2. ip route配置路由表
該命令用于配置路由器靜態(tài)路由的命令。
本文只舉例如何查看路由表,
查看默認(rèn)路由表:
rk3568_r:/?#?ip?route??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
192.168.30.0/24?dev?eth0?proto?kernel?scope?link?src?192.168.30.111??????????????
192.168.40.0/24?dev?eth1?proto?kernel?scope?link?src?192.168.40.222????????????????????????????
也通過table名字顯示路由,
查找main表:
rk3568_r:/?#?ip?route?show?table?main
ip?route?show?table?main
192.168.30.0/24?dev?eth0?proto?kernel?scope?link?src?192.168.30.111
192.168.40.0/24?dev?eth1?proto?kernel?scope?link?src?192.168.40.222
3. iptables
IPTABLES 是Linux 內(nèi)核集成的 IP 信息包過濾系統(tǒng)。
功能非常強(qiáng)大。
要查看所有iptables規(guī)則可以使用下面命令
rk3568_r:/?#?iptables?-L?????????????????????????????????????????????????????????
iptables?-L??????????????????????????????????????????????????????????????????????
Chain?INPUT?(policy?ACCEPT)??????????????????????????????????????????????????????
target?????prot?opt?source???????????????destination?????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
Chain?FORWARD?(policy?ACCEPT)????????????????????????????????????????????????????
target?????prot?opt?source???????????????destination?????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
Chain?OUTPUT?(policy?ACCEPT)?????????????????????????????????????????????????????
target?????prot?opt?source???????????????destination?????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
Chain?bw_FORWARD?(0?references)??????????????????????????????????????????????????
target?????prot?opt?source???????????????destination?????????????????????????????
?????????????????????????????????????????????????????????????????????????????????
Chain?bw_INPUT?(0?references)????????????????????????????????????????????????????
target?????prot?opt?source???????????????destination????????????????????????????????????????????????????????????????????????????????????
………………
四、最后
有喜歡Linux、驅(qū)動、嵌入式、網(wǎng)絡(luò),或者想和一口君侃大山的可以加我好友:yikoupeng