吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何建造超級強大的OpenWRT軟路由——米爾基于NXP LS1028A開發板

米爾電子 ? 2022-12-08 10:03 ? 次閱讀

由測評者HonestQiao提供

米爾MYD-J1028X開發板基于NXP LS1028A處理器,雙核 Cortex-A72,主頻1.5GHz,而且,支持6個千兆網口,且都支持TSN(開發板支持5個千兆工業網口)。強勁的性能,豐富的千兆網口,用來做路由器,那是再適合不過了。

這篇文章,就分享了,如何構建一臺超級強大的OpenWRT軟路由。

目錄:

一、網絡結構說明

二、建造步驟

1. 安裝docker

2. 設置普通用戶管理docker權限

3. Ubuntu主機網絡接口設置

4. docker環境網絡設置

5. 啟動openwrt的docker實例

6. 互通互訪設置

7. 將物理網絡接口Ethernet 1~4分配給OpenWRT使用

8. 配置OpenWRT的基礎網絡

9. OpenWRT防火墻設置

10. 互通互訪測試

11. 端口轉發設置

12 登錄OpenWRT管理界面

13. 子網設置

三、實際效果

四、總結

一、網絡結構說明

這個OpenWRT軟路由的網絡結構如下:

c229f684-7697-11ed-b116-dac502259ad0.png


傳說,OpenWRT已經支持了NXP LS1028A,可以找到相關的信息

OK1028與LS1028ARDB的區別 - Powered by Discuz! (witech.com.cn)

[OpenWrt Wiki] OpenWrt v21.02.0 Changelog

但是沒有找到具體的應用,為了避免入坑,我選擇了更穩妥的方式,在米爾MYD-J1028X開發板上運行官方的Ubuntu,然后安裝docker,并在docker中跑OpenWRT,這個方案,目前非常成熟了。

那最終實現的效果就是:

1. 開發板跑Ubuntu;

2. OpenWRT跑在docker中;

3. 開發板的五個千兆網口,一個留給Ubuntu聯網自用,其他的全部分配給OpenWRT

4.Ubuntu和OpenWRT能夠互訪

5.OpenWRT通過一個網口直接聯網,而不是通過docker再通過Ubuntu聯網,以求達到性能最優化

6. OpenWRT管理一個完整的子網

其中涉及到的網段規劃:

1. 主路由:192.168.1.1/24網段

2. Ubuntu:

聯網ip:192.168.1.237(DHCP獲取)

與OpenWRT互通ip:192.168.10.253(固定)

3. OpenWRT:

聯網ip:192.168.1.246(DHCP獲取)

與Ubuntu互通ip:192.168.10.254(固定)

子網:192.168.11.254/24

注意:上述通過DHCP獲取的IP地址,不是固定的,會根據實際情況變化。

二、建造步驟

1. 安裝docker

sudo apt update
sudo apt upgrade -y
sudo apt install docker-ce -y

2. 設置普通用戶管理docker權限:

如果以root用戶建造,可以跳過,但是強烈建議以自己的用戶運行,而非root用戶。

sudo usermod -aG docker $USER

newgrp docker

docker ps -a

c2573306-7697-11ed-b116-dac502259ad0.png


3. Ubuntu主機網絡接口設置:

系統默認網絡接口名稱,為eno0、eno2、swp0、swp1、swp2、swp3。

其中:eno0對應Ethernet 0,swp0~3對應Ethernet1~4,eno2為DSA 以太網交換機主以太網接口。

具體的網絡接口信息,可以查看官方手冊了解:

c26d4b50-7697-11ed-b116-dac502259ad0.png


現在我們只需要知道:

Ethernet 0:分配各Ubuntu使用,用于宿主系統聯網

Ethernet 1~4:分配給OpenWRT系統使用

Ethernet 1:用于OpenWRT聯網

Ethernet 2~4:用作LAN接口;當然,如果有多個網絡接入,可以自由分配用作多WAN接入

為了便于識別,我們可以修改一下系統配置,使得網絡接口的名稱更可讀一些,將swp0~3修改為eth1~4

先通過以下的指令,獲取網絡接口名稱配置文件:

sudo grep -rn swp0 /etc/udev

c2a5f52c-7697-11ed-b116-dac502259ad0.png


sudo vim /etc/udev/rules.d/73-fsl-enetc-networking.rules

# 將swp0~3修改為eth1-4

c2c0bd80-7697-11ed-b116-dac502259ad0.png


然后重啟生效:

sudo reboot

重啟后,使用ifconfig -a,將會看到swp0~3變更為eth1~4

然后,我們還需要啟用eth1~4,并設置網絡接口的混雜模式,以便他們可以被分配到OpenWRT使用:

# 啟用網絡接口

sudo ifconfig eth1 up
sudo ifconfig eth2 up
sudo ifconfig eth3 up
sudo ifconfig eth4 up

# 設置混雜模式

sudo ip link set eth1 promisc on
sudo ip link set eth2 promisc on
sudo ip link set eth3 promisc on
sudo ip link set eth4 promisc on

# 查看網絡接口狀態:

ip addr show

對應的網絡接口信息中,出現PROMISC,則表示開啟混雜模式成功

c2ed51f6-7697-11ed-b116-dac502259ad0.png


4. docker環境網絡設置:

為了Ubuntu和OpenWRT互通,專門設置一個網段192.168.10.0/24用于雙方ip的設置,寄生于eno0上

docker network create -d macvlan \
--subnet=192.168.10.0/24 \
--ip-range=192.168.10.0/24 \
-o macvlan_mode=bridge \
-o parent=eno0 macnet1

設置后,可以查看docker的網絡情況:

docker network ls

c30b6984-7697-11ed-b116-dac502259ad0.png


5. 啟動openwrt的docker實例

openwrt的docker鏡像有很多,經過了解,我選擇了raymondwong/openwrt_r9鏡像。

docker pull raymondwong/openwrt_r9:autobuild-22.2.12-arm64

docker run --name openwrt \
--restart always \
-d --network macnet1 \
--ip=192.168.10.254 \
--privileged raymondwong/openwrt_r9:autobuild-22.2.12-arm64 /sbin/init

通常情況下,啟動一個dcoker鏡像,不需要指定網絡和ip,docker會自動設定;

但為了雙方互通互訪,這里設定為我們剛才創建的macnet1,并指定為192.168.10.254。

關于docker的網絡以及macvlan的使用,可以查看docker官方的資料

啟動后,可以查看當前運行的實例:

docker ps

c328f3c8-7697-11ed-b116-dac502259ad0.png


6. 互通互訪設置:

此時,需要在Ubuntu上,添加一個虛擬網絡接口,橋接到macvlan上去,并設定ip為192.168.10.253

sudo ip link add mymacvlan link eno0 type macvlan mode bridge
sudo ip addr add 192.168.10.253/24 dev mymacvlan
sudo ifconfig mymacvlan up

設置后,可以查看該虛擬網絡接口的狀態:

ip add show mymacvlan

c34822a2-7697-11ed-b116-dac502259ad0.png


7. 將物理網絡接口Ethernet 1~4分配給OpenWRT使用:

使用docker exec openwrt ifconfig,可以查看OpenWRT當前掛載的網絡接口。

要將網絡接口分配給OpenWRT使用,需要將其設置到OpenWRT的Docker Namespace隔離空間中來。

通過下面的步驟,進行操作:

首先,獲取當前OpenWRT的Namespace隔離空間:

nspid=$(sudo docker inspect -f '{{.State.Pid}}' openwrt)
echo $nspid

正常顯示,說明獲取到了;如果OpenWRT容器沒有運行了,則獲取不到。

然后進行設置:

sudo mkdir -p /var/run/netns/
sudo ln -s /proc/$nspid/ns/net /var/run/netns/$nspid

echo $nspid
ip netns list

c36c4e8e-7697-11ed-b116-dac502259ad0.png


兩者一致,說明ns空間設置正確,然后再設置網絡接口的歸屬:

sudo ip link set eth1 netns $nspid
sudo ip link set eth2 netns $nspid
sudo ip link set eth3 netns $nspid
sudo ip link set eth4 netns $nspid

此時,可以查看OpenWRT中,是否正確獲得這些網絡接口的使用權:

執行:

docker exec openwrt ifconfig

或者:

sudo ip netns exec $nspid ifconfig

c3920b7e-7697-11ed-b116-dac502259ad0.png


設置正確的情況下,將會看到eth1~4,已經分配到了OpenWRT中了。

而在Ubuntu主機中,執行ifconfig -a,將再也看不到這幾個網絡接口了。

然后,再為OpenWRT啟用這幾塊網絡接口即可:

sudo ip netns exec $nspid ip link set eth1 up
sudo ip netns exec $nspid ip link set eth2 up
sudo ip netns exec $nspid ip link set eth3 up
sudo ip netns exec $nspid ip link set eth4 up

sudo ip netns exec $nspid ifconfig

8. 配置OpenWRT的基礎網絡:

設置好網絡接口以后,就可以配置OpenWRT的基礎網絡,以便于后續進入圖形界面進行管理。

因為OpenWRT的Docker已經運行了,我們可以通過docker命令,直接連接到OpenWRT環境中來進行配置:

docker exec -it openwrt sh

c3bf29f6-7697-11ed-b116-dac502259ad0.png


通過上面的指令,進入OpenWRT的shell環境,然后,編輯網絡配置文件:

vi /etc/config/network

config interface 'lan'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.10.254'
option netmask '255.255.255.0'

config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'

主要需要修改如下的部分:

c3db41cc-7697-11ed-b116-dac502259ad0.png


其目的,是設置eth0的固定ip位192.168.10.254,以便和Ubuntu互通互訪;

然后,設置eth1為WAN網絡接口,通過DHCP從主路由獲取ip地址。

配置完成后,重啟網絡,就能生效了:

/etc/init.d/network restart

用ifconfig可以查看網絡狀態:

c40814e0-7697-11ed-b116-dac502259ad0.png

因為使用了DHCP,所以eht1顯示的實際IP,可能會和我們上的圖不一致,因為是DHCP獲取的。

9. OpenWRT防火墻設置:

設置好了以后,我們還能不能直接從Ubuntu訪問,還需要進行防火墻設置:

vi /etc/firewall.user

# 在最后添加下面的內容:

# user
iptables -I INPUT -s 192.168.10.0/24 -j ACCEPT
iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE

具體如下:

c43b5a94-7697-11ed-b116-dac502259ad0.png


其中,iptable兩行設置,第一行允許192.168.10.0/24子網訪問管理,第二行允許eth1作為NAT讓子網設備上網。

10. 互通互訪測試:

在OpenWRT上,ping 192.168.10.253

在Ubuntu上,ping 192.168.10.254

c44914fe-7697-11ed-b116-dac502259ad0.png

在Ubuntu上,訪問OpenWRT的luci服務:

curl -v http://192.168.10.254/

c4794034-7697-11ed-b116-dac502259ad0.png


此時,互通互訪已經成功了。

11. 端口轉發設置:

但是,這是Ubuntu上和OpemWRT互訪互通,我們還需要在其他電腦上,能夠通過luci管理OpenWRT。

因為Ubuntu掛載主路由上,網段為192.168.1.0/24,ip為192.168.1.237,而我的MacBook Pro也掛載這個網段下,所以,進一步配置,使得通過瀏覽器訪問192.168.1.237能夠訪問到OpenWRT。

這一點,可以在Ubuntu上,通過iptables的端口轉發功能來實現,也可以通過軟件來實現。

因為后續還會有其他的測試,所以我用harpoxy這款專用代理軟件來實現。

sudo apt install haproxy

sudo vim /etc/haproxy/haproxy.cfg

# 添加下面的配置
frontend web_in
mode http
maxconn 1000
bind *:8000
use_backend openwrt_server

backend openwrt_server
mode http
balance roundrobin
option httpclose
server openwrt 192.168.10.254:80 check

具體操作如下圖:

c49f1318-7697-11ed-b116-dac502259ad0.png


上面的配置,表示將8000端口,反向代理到192.168.10.254的80端口,后續訪問 http://192.168.1.237:8000/

haproxy的功能非常強大,而且配置簡潔明了,推薦學習。

配置好以后,可以檢查配置,無誤后,即可運行:

sudo haproxy -f /etc/haproxy/haproxy.cfg -c

sudo /etc/init.d/haproxy start

c4ca880e-7697-11ed-b116-dac502259ad0.png

現在,基礎設置妥當了,可以進入OpenWRT的圖形管理界面了。

12 登錄OpenWRT管理界面:

直接訪問 http://192.168.1.237:8000/ 即可:【192.168.1.237為Ubuntu從主路由器獲得的ip地址】

c4e28724-7697-11ed-b116-dac502259ad0.png

默認的用戶名和密碼為:root password

輸入后即可進入管理界面:

c535d492-7697-11ed-b116-dac502259ad0.png?

raymondwong/openwrt_r9這個版本很強大,集成了很多功能:

c5616382-7697-11ed-b116-dac502259ad0.png

不過這篇文章主要是講建造,所以在這里就不多說了,感興趣的同學,可以詳細了解。

13. 子網設置:

之前我們將Ethernet1~4,均分配給了OpenWRT,分別掛在eth1~4,其中eth1用作WAN聯網,eth2~4我們就可以作為LAN的接口了。

如果了解MWAN,可以將eth2~4進行分配到MWAN使用,實現多網絡接入。

進入網絡-接口界面中,可以查看當前設置的網絡接口:

c5840c3e-7697-11ed-b116-dac502259ad0.png?

從上面可以看到:

eth0設置為LAN,ip為192.168.10.254,用于和Ubuntu互通互訪;

eth1設置為WAN,用于從主路由器獲取IP,接入網絡

下一步,點擊添加新接口,將剩下的網絡接口應用起來:

c5a9f2d2-7697-11ed-b116-dac502259ad0.png

在這里,給其取名為lan2,并設置為橋接模式,將eth2、3、4橋接到一起。

曾經嘗試過,將eth0也橋接到一起,但是會導致主路由的DHCP廣播通過macvlan污染過來。

然后,設置LAN2的地址:

c5d662fe-7697-11ed-b116-dac502259ad0.png

上述地址,也可以設置為192.168.11.1,這樣子看起來更給力一點,隨你心意了。

注意防火墻部分,勾選lan即可:

c613fdb2-7697-11ed-b116-dac502259ad0.png

最下面有DHCP的設置,開啟即可:

c643b048-7697-11ed-b116-dac502259ad0.png


最后點擊保存并應用并生效:

c66473b4-7697-11ed-b116-dac502259ad0.png

保存應用后,返回到了接口列表頁面,再點擊一下對應的連接按鈕,即可正式啟用:

c67c27b6-7697-11ed-b116-dac502259ad0.png

如果LAN2部分沒有顯示IP地址,表示沒有啟用,需要點擊連接即可。

此時,子網也設置好了,可以在Ethernet 2~4上,連接其他網絡設備測試了。

三、實際效果:

我這邊的實測測試,分別連接了三個設備:

Ethernet 2:連接星光派單板計算機

Ethernet 3:連接ThinkPad筆記本

Ethernet 4:連接Dell筆記本

c6a2d6d6-7697-11ed-b116-dac502259ad0.jpg

都順利的自動獲取IP地址并成功聯網:

c6c85352-7697-11ed-b116-dac502259ad0.jpg

c6ede9a0-7697-11ed-b116-dac502259ad0.png



在OpenWRT管理界面中,也可以查看當前連接的設備信息:

c768f794-7697-11ed-b116-dac502259ad0.png

四、總結

到這里,我們已經完成了這款超級強大的OpenWRT軟路由的建造了。關于OpenWRT的具體功能使用,同學們可以繼續摸索了。

得益于米爾MYD-J1028X開發板基于NXP LS1028A處理器的強大,這個軟路由性能良好,網速飛奔,頂呱呱!!!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開發板
    +關注

    關注

    25

    文章

    5121

    瀏覽量

    98218
收藏 人收藏

    評論

    相關推薦

    人臉疲勞檢測應用-米爾基于RK3576核心/開發板

    本文將介紹基于米爾電子MYD-LR3576開發板米爾基于瑞芯微RK3576開發板)的人臉疲勞檢測方案測試。米爾基于RK3576核心
    的頭像 發表于 12-20 08:06 ?384次閱讀
    人臉疲勞檢測應用-<b class='flag-5'>米爾</b>基于RK3576核心<b class='flag-5'>板</b>/<b class='flag-5'>開發板</b>

    如何用OpenCV進行手勢識別--基于米爾全志T527開發板

    本文將介紹基于米爾電子MYD-LT527開發板米爾基于全志T527開發板)的OpenCV手勢識別方案測試。摘自優秀創作者-小火苗米爾基于全
    的頭像 發表于 12-13 08:04 ?838次閱讀
    如何用OpenCV進行手勢識別--基于<b class='flag-5'>米爾</b>全志T527<b class='flag-5'>開發板</b>

    追加名額丨米爾瑞芯微RK3576開發板有獎試用

    米爾與瑞芯微合作發布的新品基于瑞芯微RK3576應用處理器的MYD-LR3576開發板免費試用活動加碼啦~~米爾追加了2塊價值849元的MYD-LR3576開發板發起試用活動您不僅可以
    的頭像 發表于 11-22 01:00 ?275次閱讀
    追加名額丨<b class='flag-5'>米爾</b>瑞芯微RK3576<b class='flag-5'>開發板</b>有獎試用

    米爾RK3576開發板特惠活動!

    近日,米爾電子發布基于瑞芯微RK3576核心開發板,RK3576作為國產熱門處理器,其高性能數據處理能力、領先的AI智能分析、強大的擴展性與兼容性受到廣大
    的頭像 發表于 11-12 01:00 ?388次閱讀
    <b class='flag-5'>米爾</b>RK3576<b class='flag-5'>開發板</b>特惠活動!

    基于OPENCV的相機捕捉視頻進行人臉檢測--米爾NXP i.MX93開發板

    本文將介紹基于米爾電子MYD-LMX93開發板米爾基于NXPi.MX93開發板)的基于OpenCV的人臉檢測方案測試。OpenCV提供了一個非常簡單的接口,用于相機捕捉一個視頻(我用
    的頭像 發表于 11-07 09:03 ?1159次閱讀
    基于OPENCV的相機捕捉視頻進行人臉檢測--<b class='flag-5'>米爾</b><b class='flag-5'>NXP</b> i.MX93<b class='flag-5'>開發板</b>

    198元,米爾NXP i.MX 93開發板,限購300套

    。即日,米爾聯合NXP推出活動:米爾NXPi.MX93開發板限量300套,僅售198元!此次活動針對企業客戶參與,需要您提供公司信息和聯系方式,請按如下流程操作:
    的頭像 發表于 09-27 08:00 ?430次閱讀
    198元,<b class='flag-5'>米爾</b><b class='flag-5'>NXP</b> i.MX 93<b class='flag-5'>開發板</b>,限購300套

    米爾NXP i.MX 93開發板試用評測】05.OpenWRT的構建-構建完成和燒錄

    openwrt-imx-cortexa55-imx93evk-squashfs-sdcard.img燒寫到SD卡里,然后撥碼0000,啟動就完事了。 ... 啥,又啟動失敗了? 不啟動失敗才有鬼哩,bootloader是用的米爾的,其他都是
    發表于 09-20 17:30

    米爾NXP i.MX 93開發板試用評測】04.OpenWRT的構建-開始編譯

    Community。 然后在里面發現了iMX93竟然也支持了Openwrt,雖然他支持的是NXP的iMX93 EVK開發板,但是這就相同芯片再加上開源的我們完全有可能在米爾的板子上也
    發表于 09-19 14:36

    米爾基于NXP iMX.93開發板的M33處理器應用開發筆記

    資源MYD-LMX9X開發板米爾基于NXPiMX.93開發板)3.軟件資源Windows7及以上版本軟件:IAREmbeddedWorkbench4.板載固件調試
    的頭像 發表于 06-29 08:01 ?1572次閱讀
    <b class='flag-5'>米爾</b>基于<b class='flag-5'>NXP</b> iMX.93<b class='flag-5'>開發板</b>的M33處理器應用<b class='flag-5'>開發</b>筆記

    點擊參與米爾NXP i.MX 93開發板有獎試用

    米爾NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了3塊價值678元的MYD-LMX9X
    的頭像 發表于 06-13 08:02 ?612次閱讀
    點擊參與<b class='flag-5'>米爾</b><b class='flag-5'>NXP</b> i.MX 93<b class='flag-5'>開發板</b>有獎試用

    米爾NXP i.MX 93開發板的Qt開發指南

    1.概述Qt是一個跨平臺的圖形應用開發框架,被應用在不同尺寸設備和平臺上,同時提供不同版權版本供用戶選擇。米爾NXPi.MX93開發板(MYD-LMX9X開發板)使用Qt6.5版本進行
    的頭像 發表于 06-07 08:01 ?1842次閱讀
    <b class='flag-5'>米爾</b><b class='flag-5'>NXP</b> i.MX 93<b class='flag-5'>開發板</b>的Qt<b class='flag-5'>開發</b>指南

    端午好禮丨米爾喊你抽獎啦!NXP i.MX開發板、吸塵器、定制背包等你帶回家

    喜迎端午節好禮相送!米爾聯合NXP福利送~免費贈送i.MX開發板、吸塵器、定制背包、京東購物卡快來參與,你就是錦鯉~一等獎(3名)米爾基于NXPi.MX93的
    的頭像 發表于 06-07 08:01 ?502次閱讀
    端午好禮丨<b class='flag-5'>米爾</b>喊你抽獎啦!<b class='flag-5'>NXP</b> i.MX<b class='flag-5'>開發板</b>、吸塵器、定制背包等你帶回家

    免費!NXP i.MX 93開發板有獎試用

    米爾NXP合作發布的新品基于NXPi.MX93應用處理器的MYD-LMX9X開發板免費試用活動來啦~~米爾提供了2塊價值678
    的頭像 發表于 05-23 08:01 ?800次閱讀
    免費!<b class='flag-5'>NXP</b> i.MX 93<b class='flag-5'>開發板</b>有獎試用

    OpenWRT 開源社區官方第一塊開發板 OpenWrt One/AP-24.XY,正式面世

    OpenWRT 開源社區官方第一塊開發板 OpenWrt One/AP-24.XY,正式面世。將由比派科技Banana Pi 開源社區生產與分發銷售 https
    發表于 04-09 11:32

    [廣東龍芯2K1000/2K500開發板] OpenWRT 使用說明

    /feeds install -a 2. 二次開發 2.1 修改UBIFS頁大小 在不同的開發板上可能使用不同頁大小NAND,這時候就要修改 UBIFS 的各項參數 初步適配參數 在 target
    發表于 02-19 14:40
    网络棋牌游戏平台| 欧凯百家乐官网的玩法技巧和规则| 百家乐麻将筹码币镭射贴膜| 百家乐官网筹码桌布| 百家乐大小牌路的含义| 百家乐官网玩法开户彩公司 | 百家乐电脑游戏高手| 新野县| 现场百家乐投注| 百家乐官网娱乐城地址| 百家乐看图赢钱| 游戏机百家乐官网的玩法技巧和规则 | 百家乐游乐园| 澳门百家乐官网海星王娱乐城 | 状元百家乐的玩法技巧和规则| 百家乐官网论坛在线提供| 威尼斯人娱乐城信誉最好| 百家乐官网必赢术| 名门国际娱乐| 百家乐电子游戏试| 百家乐官网可以作假吗| 皇冠网888799| 博彩网百家乐全讯网| 百家乐官网单机版的| 众发娱乐城| 91百家乐的玩法技巧和规则 | 大发888冲值| 百家乐官网tie| 娱网棋牌下载| 百家乐庄闲筹码| 线上百家乐官网信誉| 门头沟区| 大发888娱乐城 qq服务| 百家乐官网开闲的几率多大| 百家乐官网庄家胜率| 水果机| 百家乐百家乐论坛| 百家乐官网强弱走势图| 韶关市| 大发888娱乐场手机| 赌博百家乐下载|