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

    文章

    5050

    浏览量

    97450
收藏 人收藏

    评论

    相关推荐

    人脸疲劳检测应用-米尔基于RK3576核心/开发板

    本文将介绍基于米尔电子MYD-LR3576开发板米尔基于瑞芯微RK3576开发板)的人脸疲劳检测方案测试。米尔基于RK3576核心
    的头像 发表于 12-20 08:06 217次阅读
    人脸疲劳检测应用-<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 680次阅读
    如何用OpenCV进行手势识别--基于<b class='flag-5'>米尔</b>全志T527<b class='flag-5'>开发板</b>

    追加名额丨米尔瑞芯微RK3576开发板有奖试用

    米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动加码啦~~米尔追加了2块价值849元的MYD-LR3576开发板发起试用活动您不仅可以
    的头像 发表于 11-22 01:00 181次阅读
    追加名额丨<b class='flag-5'>米尔</b>瑞芯微RK3576<b class='flag-5'>开发板</b>有奖试用

    米尔RK3576开发板特惠活动!

    近日,米尔电子发布基于瑞芯微RK3576核心开发板,RK3576作为国产热门处理器,其高性能数据处理能力、领先的AI智能分析、强大的扩展性与兼容性受到广大
    的头像 发表于 11-12 01:00 275次阅读
    <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 1097次阅读
    基于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 365次阅读
    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 1372次阅读
    <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 534次阅读
    点击参与<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 1737次阅读
    <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 93开发板有奖试用

    米尔NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了2块价值678
    的头像 发表于 05-23 08:01 728次阅读
    免费!<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

    即将推出的 OpenWrt One/AP-24.XY:OpenWrt官方 和 Banana Pi官方合作路由

    OpenWrt开发人员正在与Banana Pi合作开发OpenWrt One/AP-24.XY路由
    的头像 发表于 01-15 18:02 912次阅读
    即将推出的 <b class='flag-5'>OpenWrt</b> One/AP-24.XY:<b class='flag-5'>OpenWrt</b>官方 和 Banana Pi官方合作<b class='flag-5'>路由</b>器<b class='flag-5'>板</b>

    即将推出的 OpenWrt One/AP-24.XY:OpenWrt 和 Banana Pi 合作路由

    OpenWrt开发人员正在与Banana Pi合作开发OpenWrt One/AP-24.XY路由
    发表于 01-13 09:56