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