HonestQiao 发表于 2022-9-3 20:38

【米尔MYC-J1028X开发板试用】建造超级强大的OpenWRT软路由

<div class='showpostmsg'> 本帖最后由 HonestQiao 于 2022-9-3 20:45 编辑

<p>米尔MYC-J1028X开发板基于NXP LS1028A处理器,双核 Cortex&trade;-A72,主频1.5GHz,而且,支持6个千兆网口,且都支持TSN(开发板支持5个千兆工业网口)。</p>

<p>强劲的性能,丰富的千兆网口,用来做路由器,那是再适合不过了。</p>

<p>&nbsp;</p>

<p>这篇文章,就分享了,如何构建一台超级强大的OpenWRT软路由。</p>

<p><span style="font-size:18px;"><strong>目录:</strong></span></p>

<p><strong><span style="background-color:#ecf0f1;">一、网络结构说明</span></strong></p>

<p><strong><span style="background-color:#ecf0f1;">二、建造步骤</span></strong></p>

<p><span style="background-color:#ecf0f1;">1. 安装docker</span></p>

<p><span style="background-color:#ecf0f1;">2. 设置普通用户管理docker权限</span></p>

<p><span style="background-color:#ecf0f1;">3. Ubuntu主机网络接口设置</span></p>

<p><span style="background-color:#ecf0f1;">4. docker环境网络设置</span></p>

<p><span style="background-color:#ecf0f1;">5. 启动openwrt的docker实例</span></p>

<p><span style="background-color:#ecf0f1;">6. 互通互访设置</span></p>

<p><span style="background-color:#ecf0f1;">7. 将物理网络接口Ethernet 1~4分配给OpenWRT使用</span></p>

<p><span style="background-color:#ecf0f1;">8. 配置OpenWRT的基础网络</span></p>

<p><span style="background-color:#ecf0f1;">9. OpenWRT防火墙设置</span></p>

<p><span style="background-color:#ecf0f1;">10. 互通互访测试</span></p>

<p><span style="background-color:#ecf0f1;">11. 端口转发设置</span></p>

<p><span style="background-color:#ecf0f1;">12 登录OpenWRT管理界面</span></p>

<p><span style="background-color:#ecf0f1;">13. 子网设置</span></p>

<p><strong><span style="background-color:#ecf0f1;">三、实际效果(带视频)</span></strong></p>

<p><strong><span style="background-color:#ecf0f1;">四、总结</span></strong></p>

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>一、网络结构说明</strong></span></p>

<p>这个OpenWRT软路由的网络结构如下:</p>

<p></p>

<p>传说,OpenWRT已经支持了NXP LS1028A,可以找到相关的信息:</p>

<p><a href="http://bbs.witech.com.cn/thread-75220-1-1.html">OK1028与LS1028ARDB的区别 - Powered by Discuz! (witech.com.cn)</a></p>

<p><a href="https://openwrt.org/releases/21.02/changelog-21.02.0?s[]=ls1028a"> OpenWrt v21.02.0 Changelog</a></p>

<p>但是没有找到具体的应用,为了避免入坑,我选择了更稳妥的方式,在米尔MYC-J1028X开发板上运行官方的Ubuntu,然后安装docker,并在docker中跑OpenWRT,这个方案,目前非常成熟了。</p>

<p>那最终实现的效果就是:</p>

<p>1. 开发板跑Ubuntu;</p>

<p>2. OpenWRT跑在docker中;</p>

<p>3. 开发板的五个千兆网口,一个留给Ubuntu联网自用,其他的全部分配给OpenWRT</p>

<p>4.&nbsp;Ubuntu和OpenWRT能够互访</p>

<p>5.&nbsp;OpenWRT通过一个网口直接联网,而不是通过docker再通过Ubuntu联网,以求达到性能最优化</p>

<p>6. OpenWRT管理一个完整的子网</p>

<p>&nbsp;</p>

<p>其中涉及到的网段规划:</p>

<p>1. 主路由:192.168.1.1/24网段</p>

<p>2. Ubuntu:</p>

<ul>
        <li>联网ip:192.168.1.237(DHCP获取)</li>
        <li>与OpenWRT互通ip:192.168.10.253(固定)</li>
</ul>

<p>3. OpenWRT:</p>

<ul>
        <li>联网ip:192.168.1.246(DHCP获取)</li>
        <li>与Ubuntu互通ip:192.168.10.254(固定)</li>
        <li>子网:192.168.11.254/24</li>
</ul>

<p><span style="color:#ffffff;"><strong><span style="background-color:#d35400;">注意:上述通过DHCP获取的IP地址,不是固定的,会根据实际情况变化。</span></strong></span></p>

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>二、建造步骤</strong></span></p>

<p><strong>1. 安装docker</strong></p>

<p><span style="background-color:#bdc3c7;">sudo apt update</span><br />
<span style="background-color:#bdc3c7;">sudo apt upgrade -y</span><br />
<span style="background-color:#bdc3c7;">sudo apt install docker-ce -y</span></p>

<p>&nbsp;</p>

<p><strong>2. 设置普通用户管理docker权限:</strong></p>

<p>如果以root用户建造,可以跳过,但是强烈建议以自己的用户运行,而非root用户。</p>

<p><span style="background-color:#bdc3c7;">sudo usermod -aG docker $USER</span></p>

<p><span style="background-color:#bdc3c7;">newgrp docker</span></p>

<p><span style="background-color:#bdc3c7;">docker ps -a</span></p>

<p> &nbsp;</p>

<p><strong>3. Ubuntu主机网络接口设置:</strong></p>

<p>系统默认网络接口名称,为eno0、eno2、swp0、swp1、swp2、swp3。</p>

<p>其中:eno0对应Ethernet 0,swp0~3对应Ethernet1~4,eno2为DSA 以太网交换机主以太网接口。</p>

<p>具体的网络接口信息,可以查看官方手册了解:</p>

<p> &nbsp;</p>

<p>现在我们只需要知道:</p>

<ol>
        <li>Ethernet 0:分配各Ubuntu使用,用于宿主系统联网</li>
        <li>Ethernet 1~4:分配给OpenWRT系统使用
        <ol>
                <li>Ethernet 1:用于OpenWRT联网</li>
                <li>Ethernet 2~4:用作LAN接口;当然,如果有多个网络接入,可以自由分配用作多WAN接入</li>
        </ol>
        </li>
</ol>

<p>为了便于识别,我们可以修改一下系统配置,使得网络接口的名称更可读一些,将swp0~3修改为eth1~4</p>

<p>先通过以下的指令,获取网络接口名称配置文件:</p>

<p><span style="background-color:#bdc3c7;">sudo grep -rn swp0 /etc/udev</span></p>

<p> &nbsp;</p>

<p><span style="background-color:#bdc3c7;">sudo vim /etc/udev/rules.d/73-fsl-enetc-networking.rules</span></p>

<p># 将swp0~3修改为eth1-4</p>

<p> &nbsp;</p>

<p>然后重启生效:</p>

<p><span style="background-color:#bdc3c7;">sudo reboot</span></p>

<p>重启后,使用ifconfig -a,将会看到swp0~3变更为eth1~4</p>

<p>&nbsp;</p>

<p>然后,我们还需要启用eth1~4,并设置网络接口的混杂模式,以便他们可以被分配到OpenWRT使用:</p>

<p><span style="background-color:#bdc3c7;"># 启用网络接口</span></p>

<p><span style="background-color:#bdc3c7;">sudo ifconfig eth1 up</span><br />
<span style="background-color:#bdc3c7;">sudo ifconfig eth2 up</span><br />
<span style="background-color:#bdc3c7;">sudo ifconfig eth3 up</span><br />
<span style="background-color:#bdc3c7;">sudo ifconfig eth4 up</span></p>

<p>&nbsp;</p>

<p><span style="background-color:#bdc3c7;"># 设置混杂模式</span></p>

<p><span style="background-color:#bdc3c7;">sudo ip link set eth1 promisc on</span><br />
<span style="background-color:#bdc3c7;">sudo ip link set eth2 promisc on</span><br />
<span style="background-color:#bdc3c7;">sudo ip link set eth3 promisc on</span><br />
<span style="background-color:#bdc3c7;">sudo ip link set eth4 promisc on</span></p>

<p>&nbsp;</p>

<p><span style="background-color:#bdc3c7;"># 查看网络接口状态:</span></p>

<p><span style="background-color:#bdc3c7;">ip addr show</span></p>

<p>&nbsp;</p>

<p>对应的网络接口信息中,出现PROMISC,则表示开启混杂模式成功</p>

<p> &nbsp;</p>

<p><strong>4. docker环境网络设置:</strong></p>

<p>为了Ubuntu和OpenWRT互通,专门设置一个网段192.168.10.0/24用于双方ip的设置,寄生于eno0上</p>

<p><span style="background-color:#bdc3c7;">docker network create -d macvlan \</span><br />
<span style="background-color:#bdc3c7;">--subnet=192.168.10.0/24 \</span><br />
<span style="background-color:#bdc3c7;">--ip-range=192.168.10.0/24 \</span><br />
<span style="background-color:#bdc3c7;">-o macvlan_mode=bridge \</span><br />
<span style="background-color:#bdc3c7;">-o parent=eno0 macnet1</span></p>

<p>&nbsp;</p>

<p>设置后,可以查看docker的网络情况:</p>

<p><span style="background-color:#bdc3c7;">docker network ls</span></p>

<p> &nbsp;</p>

<p><strong>5. 启动openwrt的docker实例</strong></p>

<p>openwrt的docker镜像有很多,经过了解,我选择了raymondwong/openwrt_r9镜像。</p>

<p><span style="background-color:#bdc3c7;">docker pull raymondwong/openwrt_r9:autobuild-22.2.12-arm64</span></p>

<p><span style="background-color:#bdc3c7;">docker run --name openwrt \</span><br />
<span style="background-color:#bdc3c7;">--restart always \</span><br />
<span style="background-color:#bdc3c7;">-d --network macnet1 \</span><br />
<span style="background-color:#bdc3c7;">--ip=192.168.10.254 \</span><br />
<span style="background-color:#bdc3c7;">--privileged raymondwong/openwrt_r9:autobuild-22.2.12-arm64 /sbin/init</span></p>

<p>&nbsp;</p>

<p>通常情况下,启动一个dcoker镜像,不需要指定网络和ip,docker会自动设定;</p>

<p>但为了双方互通互访,这里设定为我们刚才创建的macnet1,并指定为192.168.10.254。</p>

<p>关于docker的网络以及macvlan的使用,可以查看docker官方的资料。</p>

<p>&nbsp;</p>

<p>启动后,可以查看当前运行的实例:</p>

<p><span style="background-color:#bdc3c7;">docker ps</span></p>

<p> &nbsp;</p>

<p><strong>6. 互通互访设置:</strong></p>

<p>此时,需要在Ubuntu上,添加一个虚拟网络接口,桥接到macvlan上去,并设定ip为192.168.10.253</p>

<p><span style="background-color:#bdc3c7;">sudo ip link add mymacvlan link eno0 type macvlan mode bridge</span><br />
<span style="background-color:#bdc3c7;">sudo ip addr add 192.168.10.253/24 dev mymacvlan</span><br />
<span style="background-color:#bdc3c7;">sudo ifconfig mymacvlan up</span></p>

<p>&nbsp;</p>

<p>设置后,可以查看该虚拟网络接口的状态:</p>

<p><span style="background-color:#bdc3c7;">ip add show mymacvlan</span></p>

<p> &nbsp;</p>

<p><strong>7. 将物理网络接口Ethernet 1~4分配给OpenWRT使用:</strong></p>

<p>使用docker exec openwrt ifconfig,可以查看OpenWRT当前挂载的网络接口。</p>

<p>要将网络接口分配给OpenWRT使用,需要将其设置到OpenWRT的Docker&nbsp;Namespace隔离空间中来。</p>

<p>通过下面的步骤,进行操作:</p>

<p>首先,获取当前OpenWRT的Namespace隔离空间:</p>

<p><span style="background-color:#bdc3c7;">nspid=$(sudo docker inspect -f &#39;{{.State.Pid}}&#39; openwrt)</span><br />
<span style="background-color:#bdc3c7;">echo $nspid</span></p>

<p>正常显示,说明获取到了;如果OpenWRT容器没有运行了,则获取不到。</p>

<p>&nbsp;</p>

<p>然后进行设置:</p>

<p><span style="background-color:#bdc3c7;">sudo mkdir -p /var/run/netns/</span><br />
<span style="background-color:#bdc3c7;">sudo ln -s /proc/$nspid/ns/net /var/run/netns/$nspid</span></p>

<p><span style="background-color:#bdc3c7;">echo $nspid</span><br />
<span style="background-color:#bdc3c7;">ip netns list</span></p>

<p></p>

<p>两者一致,说明ns空间设置正确,然后再设置网络接口的归属:</p>

<p><span style="background-color:#bdc3c7;">sudo ip link set eth1 netns $nspid</span><br />
<span style="background-color:#bdc3c7;">sudo ip link set eth2 netns $nspid</span><br />
<span style="background-color:#bdc3c7;">sudo ip link set eth3 netns $nspid</span><br />
<span style="background-color:#bdc3c7;">sudo ip link set eth4 netns $nspid</span></p>

<p>此时,可以查看OpenWRT中,是否正确获得这些网络接口的使用权:</p>

<p>执行:</p>

<p><span style="background-color:#bdc3c7;">docker exec openwrt ifconfig</span></p>

<p>或者:</p>

<p><span style="background-color:#bdc3c7;">sudo ip netns exec $nspid ifconfig</span></p>

<p> &nbsp;</p>

<p>设置正确的情况下,将会看到eth1~4,已经分配到了OpenWRT中了。</p>

<p>而在Ubuntu主机中,执行ifconfig -a,将再也看不到这几个网络接口了。</p>

<p>&nbsp;</p>

<p>然后,再为OpenWRT启用这几块网络接口即可:</p>

<p><span style="background-color:#bdc3c7;">sudo ip netns exec $nspid ip link set eth1 up</span><br />
<span style="background-color:#bdc3c7;">sudo ip netns exec $nspid ip link set eth2 up</span><br />
<span style="background-color:#bdc3c7;">sudo ip netns exec $nspid ip link set eth3 up</span><br />
<span style="background-color:#bdc3c7;">sudo ip netns exec $nspid ip link set eth4 up</span></p>

<p><span style="background-color:#bdc3c7;">sudo ip netns exec $nspid ifconfig</span></p>

<p>&nbsp;</p>

<p><strong>8. 配置OpenWRT的基础网络:</strong></p>

<p>设置好网络接口以后,就可以配置OpenWRT的基础网络,以便于后续进入图形界面进行管理。</p>

<p>因为OpenWRT的Docker已经运行了,我们可以通过docker命令,直接连接到OpenWRT环境中来进行配置:</p>

<p><span style="background-color:#bdc3c7;">docker exec -it openwrt sh</span></p>

<p></p>

<p>通过上面的指令,进入OpenWRT的shell环境,然后,编辑网络配置文件:</p>

<p>&nbsp;<span style="background-color:#bdc3c7;">vi /etc/config/network</span></p>

<p><span style="background-color:#bdc3c7;">config interface &#39;lan&#39;</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; option ifname &#39;eth0&#39;</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; option proto &#39;static&#39;</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; option ipaddr &#39;192.168.10.254&#39;</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; option netmask &#39;255.255.255.0&#39;</span><br />
&nbsp;</p>

<p><span style="background-color:#bdc3c7;">config interface &#39;wan&#39;</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; option ifname &#39;eth1&#39;</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; option proto &#39;dhcp&#39;</span></p>

<p>&nbsp;</p>

<p>主要需要修改如下的部分:</p>

<p> &nbsp;</p>

<p>其目的,是设置eth0的固定ip位192.168.10.254,以便和Ubuntu互通互访</p>

<p>然后,设置eth1为WAN网络接口,通过DHCP从主路由获取ip地址。</p>

<p>&nbsp;</p>

<p>配置完成后,重启网络,就能生效了:</p>

<p><span style="background-color:#bdc3c7;">/etc/init.d/network restart</span></p>

<p>用ifconfig可以查看网络状态:</p>

<p> &nbsp;</p>

<p>因为使用了DHCP,所以eht1显示的实际IP,可能会和我们上的图不一致,因为是DHCP获取的。</p>

<p>&nbsp;</p>

<p><strong>9. OpenWRT防火墙设置:</strong></p>

<p>设置好了以后,我们还能不能直接从Ubuntu访问,还需要进行防火墙设置:</p>

<p><span style="background-color:#bdc3c7;">vi /etc/firewall.user</span></p>

<p><span style="background-color:#bdc3c7;"># 在最后添加下面的内容:</span></p>

<p><span style="background-color:#bdc3c7;"># user</span><br />
<span style="background-color:#bdc3c7;">iptables -I INPUT -s 192.168.10.0/24 -j ACCEPT</span><br />
<span style="background-color:#bdc3c7;">iptables -t nat -I POSTROUTING -o eth1 -j MASQUERADE</span></p>

<p>&nbsp;</p>

<p>具体如下:</p>

<p> &nbsp;</p>

<p>其中,iptable两行设置,第一行允许192.168.10.0/24子网访问管理,第二行允许eth1做为NAT让子网设备上网。</p>

<p>&nbsp;</p>

<p><strong>10. 互通互访测试:</strong></p>

<p>在OpenWRT上,<span style="background-color:#bdc3c7;">ping 192.168.10.253</span></p>

<p>在Ubuntu上,<span style="background-color:#bdc3c7;">ping 192.168.10.254</span></p>

<p> &nbsp;</p>

<p>在Ubuntu上,访问OpenWRT的luci服务:</p>

<p><span style="background-color:#bdc3c7;">curl -v http://192.168.10.254/</span></p>

<p> &nbsp;</p>

<p>此时,互通互访已经成功了。</p>

<p>&nbsp;</p>

<p><strong>11. 端口转发设置:</strong></p>

<p>但是,这是Ubuntu上和OpemWRT互访互通,我们还需要在其他电脑上,能够通过luci管理OpenWRT。</p>

<p>因为Ubuntu挂载主路由上,网段为192.168.1.0/24,ip为192.168.1.237,而我的MacBook Pro也挂载这个网段下,所以,进一步配置,使得通过浏览器访问192.168.1.237能够访问到OpenWRT。</p>

<p>这一点,可以在Ubuntu上,通过iptables的端口转发功能来实现,也可以通过软件来实现。</p>

<p>因为后续还会有其他的测试,所以我用harpoxy这款专用代理软件来实现。</p>

<p><span style="background-color:#bdc3c7;">sudo apt install haproxy</span></p>

<p><span style="background-color:#bdc3c7;">sudo vim /etc/haproxy/haproxy.cfg</span></p>

<p><span style="background-color:#bdc3c7;"># 添加下面的配置</span><br />
<span style="background-color:#bdc3c7;">frontend web_in</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mode http</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; maxconn 1000</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bind *:8000</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; use_backend openwrt_server</span></p>

<p><span style="background-color:#bdc3c7;">backend openwrt_server &nbsp;</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mode http</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; balance roundrobin</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; option &nbsp;httpclose &nbsp;</span><br />
<span style="background-color:#bdc3c7;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server openwrt 192.168.10.254:80 check</span></p>

<p>&nbsp;</p>

<p>具体操作如下图:</p>

<p>&nbsp;上面的配置,表示将8000端口,反向代理到192.168.10.254的80端口,后续访问 http://192.168.1.237:8000/</p>

<p>haproxy的功能非常强大,而且配置简洁明了,推荐学习。</p>

<p>&nbsp;</p>

<p>配置好以后,可以检查配置,无误后,即可运行:</p>

<p><span style="background-color:#bdc3c7;">sudo haproxy -f /etc/haproxy/haproxy.cfg -c</span></p>

<p><span style="background-color:#bdc3c7;">sudo /etc/init.d/haproxy start</span></p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>现在,基础设置妥当了,可以进入OpenWRT的图形管理界面了。</p>

<p>&nbsp;</p>

<p><strong>12 登录OpenWRT管理界面:</strong></p>

<p>直接访问 http://192.168.1.237:8000/ 即可:【192.168.1.237为Ubuntu从主路由器获得的ip地址】</p>

<p>&nbsp;默认的用户名和密码为:root password</p>

<p>&nbsp;</p>

<p>输入后即可进入管理界面:</p>

<p> &nbsp;</p>

<p>raymondwong/openwrt_r9这个版本很强大,集成了很多功能:</p>

<p>&nbsp;不过这篇文章主要是将建造,所以在这里就不多说了,感兴趣的同学,可以详细的了解。</p>

<p>&nbsp;</p>

<p><strong>13. 子网设置:</strong></p>

<p>之前我们将Ethernet1~4,均分配给了OpenWRT,分别挂在为eth1~4,其中eth1用作WAN联网,eth2~4我们就可以做为LAN的接口了。</p>

<p>如果了解MWAN,可以将eth2~4进行分配到MWAN使用,实现多网络接入。</p>

<p>进入网络-接口界面中,可以查看当前设置的网络接口:</p>

<p> &nbsp;</p>

<p>从上面可以看到:</p>

<p>eth0设置为LAN,ip为192.168.10.254,用于和Ubuntu互通互访;</p>

<p>eth1设置为WAN,用于从主路由器获取IP,接入网络</p>

<p>&nbsp;</p>

<p>下一步,点击添加新接口,将剩下的网络接口应用起来:</p>

<p></p>

<p>在这里,给其取名为lan2,并设置为桥接模式,将eth2、3、4桥接到一起。</p>

<p>曾将尝试过,将eth0也桥接到一起,但是会导致主路由的DHCP广播通过macvlan污染过来。</p>

<p>&nbsp;</p>

<p>然后,设置LAN2的地址:</p>

<p></p>

<p>上述地址,也可以设置为192.168.11.1,这样子看起来更给力一点,随你心意了。</p>

<p>&nbsp;</p>

<p>注意防火墙部分,勾选lan即可:</p>

<p> &nbsp;</p>

<p>最下面有DHCP的设置,开启即可:</p>

<p> &nbsp;&nbsp;<br />
&nbsp;最后点击保存并应用并生效:</p>

<p> &nbsp;</p>

<p>保存应用后,返回到了接口列表页面,再点击一下对应的连接,即可正式启用:</p>

<p> &nbsp;</p>

<p>如果LAN2部分没有显示IP地址,表示没有启用,需要点击连接即可。</p>

<p>&nbsp;</p>

<p>此时,子网也设置好了,可以在Ethernet 2~4上,连接其他网络设备测试了。</p>

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>三、实际效果:</strong></span></p>

<p>我这边的实测测试,分别连接了三个设备:</p>

<p>Ethernet 2:连接星光派单板计算机</p>

<p>Ethernet 3:连接ThinkPad笔记本</p>

<p>Ethernet 4:连接Dell笔记本</p>

<p> &nbsp;</p>

<p>都顺利的自动获取IP地址并成功联网:</p>

<p> &nbsp;</p>

<p> &nbsp;</p>

<p>访问网络的速度又快又好,播放1080P毫无压力:</p>

<p> &nbsp;</p>

<p>在OpenWRT管理界面中,也可以查看当前连接的设备信息:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>我们再看看五网口火力齐发的效果:</p>

<p>6e406bcca60bd4f1c0585ec64bd4a3e6<br />
&nbsp;</p>

<p><span style="font-size:18px;"><strong>四、总结</strong></span></p>

<p>到这里,我们已经完成了这款超级强大的OpenWRT软路由的建造了。关于OpenWRT的具体功能使用,同学们可以继续摸索了。</p>

<p>得益于米尔MYC-J1028X开发板基于NXP LS1028A处理器的强大,这个软路由性能良好,网速飞奔,顶呱呱!!!</p>

<p>&nbsp;</p>

<p>在建造的过程中,遇到了不少问题,翻越了数十篇资料,以下为部分内容,可能有遗漏;对所有看过的资料的作者,表示深深的感谢。</p>

<ul>
        <li><meta charset="UTF-8" /><a href="https://learnku.com/articles/64047">普通用户权限运行docker | Server 运维论坛 (learnku.com)</a></li>
        <li><meta charset="UTF-8" /><a href="https://icode.best/i/04359444688555">OK1046A-C2、OK1028通过udev修改网口称-爱代码爱编程 (icode.best)</a></li>
        <li>&nbsp;</li>
</ul>

<p><meta charset="UTF-8" /></p>

<ul cid="n778" data-mark="*" mdtype="list">
        <li cid="n777" mdtype="list_item">
        <p cid="n775" mdtype="paragraph"><a href="https://arthurchiao.art/blog/play-with-container-network-if/">Play With Container Network Interface (arthurchiao.art)</a></p>
        </li>
        <li cid="n782" mdtype="list_item">
        <p cid="n780" mdtype="paragraph"><a href="https://stackoverflow.com/questions/25529386/how-can-i-set-a-static-ip-address-in-a-docker-container">linux - How can I set a static IP address in a Docker container? - Stack Overflow</a></p>
        </li>
        <li cid="n792" mdtype="list_item">
        <p cid="n790" mdtype="paragraph"><a href="https://icode.best/i/83227942831310">网卡配置&mdash;&mdash;玩转alpine linux-爱代码爱编程 (icode.best)</a></p>
        </li>
        <li cid="n792" mdtype="list_item">
        <p cid="n790" mdtype="paragraph"><meta charset="UTF-8" /></p>
        </li>
        <li cid="n802" mdtype="list_item">
        <p cid="n800" mdtype="paragraph"><a href="https://github.com/moby/moby/issues/4339">ifconfig permissions in container &middot; Issue #4339 &middot; moby/moby (github.com)</a></p>
        </li>
        <li cid="n812" mdtype="list_item">
        <p cid="n810" mdtype="paragraph"><a href="https://stackoverflow.com/questions/41178553/docker-how-to-avoid-operation-not-permitted-in-docker-container">permissions - Docker : How to avoid Operation not permitted in Docker Container? - Stack Overflow</a></p>
        </li>
        <li cid="n817" mdtype="list_item">
        <p cid="n815" mdtype="paragraph"><a href="https://stackoverflow.com/questions/34110416/start-container-with-multiple-network-interfaces">docker - Start container with multiple network interfaces - Stack Overflow</a></p>
        </li>
        <li cid="n857" mdtype="list_item">
        <p cid="n855" mdtype="paragraph"><a href="https://www.reddit.com/r/selfhosted/comments/lbuxwf/docker_with_multiple_nics/">(1) Docker with multiple NICs? : selfhosted (reddit.com)</a></p>
        </li>
        <li cid="n863" mdtype="list_item">
        <p cid="n861" mdtype="paragraph"><a href="https://arthurchiao.art/blog/play-with-container-network-if/">Play With Container Network Interface (arthurchiao.art)</a></p>
        </li>
        <li cid="n868" mdtype="list_item">
        <p cid="n866" mdtype="paragraph">[<a href="https://ithelp.ithome.com.tw/articles/10217583">Day4] 淺談 Container 實現原理, 初探 Namespace 隔離 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)</a></p>
        </li>
        <li cid="n868" mdtype="list_item">
        <p cid="n866" mdtype="paragraph"><meta charset="UTF-8" /></p>
        </li>
        <li cid="n969" mdtype="list_item">
        <p cid="n967" mdtype="paragraph"><a href="https://hub.docker.com/r/raymondwong/openwrt_r9">raymondwong/openwrt_r9 - Docker Image | Docker Hub</a></p>
        </li>
        <li cid="n828" mdtype="list_item">
        <p cid="n826" mdtype="paragraph"><a href="https://blog.hearthewind.top/posts/db1132b0-4e36-11eb-bbe3-c117a7825fa4/">在docker里运行openwrt | 且听风吟 (hearthewind.top)</a></p>
        </li>
        <li cid="n833" mdtype="list_item">
        <p cid="n831" mdtype="paragraph"><a href="https://github.com/luoqeng/OpenWrt-on-Docker">luoqeng/OpenWrt-on-Docker: Run openwrt in docker (github.com)</a></p>
        </li>
        <li cid="n838" mdtype="list_item">
        <p cid="n836" mdtype="paragraph"><a href="https://www.ahsup.top/post/linux/openwrt/">在树莓派上使用Dockers运行Openwrt并作为主路由器的旁路由 - HXSup (ahsup.top)</a></p>
        </li>
        <li cid="n843" mdtype="list_item">
        <p cid="n841" mdtype="paragraph"><a href="https://www.treesir.pub/post/openwrt-docker-multi-net/">Docker 部署多网口 openWrt 软路由 - 「Yang&#39;zun」PlayGround (treesir.pub)</a></p>
        </li>
        <li cid="n848" mdtype="list_item">
        <p cid="n846" mdtype="paragraph"><a href="https://badgateway.qc.to/contain-your-router/">包含您的路由器|网关错误 (qc.to)</a></p>
        </li>
        <li cid="n1014" mdtype="list_item">
        <p cid="n1012" mdtype="paragraph"><a href="http://bbs.witech.com.cn/thread-75220-1-1.html">OK1028与LS1028ARDB的区别 - Powered by Discuz! (witech.com.cn)</a></p>
        </li>
        <li cid="n1014" mdtype="list_item">
        <p cid="n1012" mdtype="paragraph"><meta charset="UTF-8" /></p>
        </li>
        <li cid="n944" mdtype="list_item">
        <p cid="n942" mdtype="paragraph"><a href="https://blog.csdn.net/maxuearn/article/details/110520112">docker和macvlan与host互通_maxuearn的博客-CSDN博客</a></p>
        </li>
        <li cid="n949" mdtype="list_item">
        <p cid="n947" mdtype="paragraph"><a href="https://www.cnblogs.com/bakari/p/10893589.html">Docker 网络模型之 macvlan 详解,图解,实验完整 - bakari - 博客园 (cnblogs.com)</a></p>
        </li>
        <li cid="n954" mdtype="list_item">
        <p cid="n952" mdtype="paragraph"><a href="https://blog.51cto.com/u_15127637/3822031">Ubuntu为网卡添加多个IP地址<em>mob604756fcd161的技术博客</em>51CTO博客</a></p>
        </li>
        <li cid="n954" mdtype="list_item">
        <p cid="n952" mdtype="paragraph"><meta charset="UTF-8" /></p>
        </li>
        <li cid="n922" mdtype="list_item">
        <p cid="n920" mdtype="paragraph"><a href="https://www.cnblogs.com/paul8339/p/14688156.html">iptables做TCP/UDP端口转发【转】 - paul_hch - 博客园 (cnblogs.com)</a></p>
        </li>
        <li cid="n932" mdtype="list_item">
        <p cid="n930" mdtype="paragraph"><a href="https://cloud.tencent.com/developer/article/1711744">Ubuntu20.04防火墙设置简易教程(小白) - 腾讯云开发者社区-腾讯云 (tencent.com)</a></p>
        </li>
        <li cid="n938" mdtype="list_item">
        <p cid="n936" mdtype="paragraph"><a href="https://blog.csdn.net/m0_49212388/article/details/112261558">Ubuntu 20.04防火墙 UFW做NAT转换,IP伪装,端口重定向,端口映射<em>injexengge的博客-CSDN博客</em>ufw端口映射</a></p>
        </li>
        <li cid="n938" mdtype="list_item">
        <p cid="n936" mdtype="paragraph"><meta charset="UTF-8" /></p>
        </li>
        <li cid="n997" mdtype="list_item">
        <p cid="n995" mdtype="paragraph"><a href="https://post.smzdm.com/p/az389ndo/">openwrt x86(软路由) 双WAN出口简明配置,小白适用,挺稳定!<em>其他网络设备</em>什么值得买 (smzdm.com)</a></p>
        </li>
        <li cid="n997" mdtype="list_item">
        <p cid="n995" mdtype="paragraph"><meta charset="UTF-8" /><a href="https://forum.openwrt.org/t/firewall-rules-to-block-unwanted-dhcp-servers/49811">阻止不需要的 DHCP 服务器的防火墙规则?- 安装和使用OpenWrt /网络和无线配置 - OpenWrt论坛</a></p>
        </li>
</ul>

<p cid="n995" mdtype="paragraph">如果大家希望进一步学习,可以参考上述这些参考资料,已经Docker、OpenWRT等官方的资料进行学习。</p>

<p cid="n995" mdtype="paragraph">&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

tagetage 发表于 2022-9-3 21:37

<p>帖子很长,挺好的,写的很认真,费了不少功夫吧。</p>

lugl4313820 发表于 2022-9-3 21:56

<p>乔帮主的文章那是专业又精彩,是我们学习的好榜样。必须点赞!</p>

HonestQiao 发表于 2022-9-4 10:53

tagetage 发表于 2022-9-3 21:37
帖子很长,挺好的,写的很认真,费了不少功夫吧。

<p>研究学习了两周,写用了大半天</p>

bigbat 发表于 2022-9-6 08:54

<p>有个疑问NXP LS1028A不是可以支持openwrt吗?干嘛还要弄个ubuntu,openwrt本事就是linux下的路由系统。这样不是还可以多一个网口,也速度可以更快些。</p>

HonestQiao 发表于 2022-9-6 23:27

bigbat 发表于 2022-9-6 08:54
有个疑问NXP LS1028A不是可以支持openwrt吗?干嘛还要弄个ubuntu,openwrt本事就是linux下的路由系统。这样 ...

<p>NXP LS1028A 确实可以直接刷OpenWRT完全当路由器使用。</p>

<p>但因为我还需要做其他的测试,直接当路由器使用的话,资源大大浪费了。</p>

<p>另外,如果需要的话,完全可以把网口全部分配给OpenWRT,</p>

<p>Ubuntu通过虚拟网口从OpenWRT获取DHCP地址,做为下挂设备使用也成。</p>

bigbat 发表于 2022-9-7 09:54

HonestQiao 发表于 2022-9-6 23:27
NXP LS1028A 确实可以直接刷OpenWRT完全当路由器使用。

但因为我还需要做其他的测试,直接当路由器使 ...

<p>openwrt本身就是linux系统,ubuntu能做的事情openwrt都能做。一点都不影响,而且ubuntu也可以安装路由和防火墙系统。</p>

freebsder 发表于 2022-9-7 15:54

<p>cu桥帮主,果然大手笔。难得看见现在的帖子还专门带了参考链接。有那时候的范。</p>

吾妻思萌 发表于 2022-9-11 22:05

<p>我一直想用我的树莓派打造一个NAS或者刷个openWRT,现在先学习学习</p>

HonestQiao 发表于 2022-9-13 16:26

bigbat 发表于 2022-9-7 09:54
openwrt本身就是linux系统,ubuntu能做的事情openwrt都能做。一点都不影响,而且ubuntu也可以安装路由和 ...

<p>术业有专攻。</p>

<p>不然全天下,只要一个Linux发行版就好了,弄那么也没用啊。</p>

LSoPn 发表于 2023-12-28 15:43

<p>在第三步开启eth1~4网口之前,应该要先开启eno2网口,不然eth1~4好像不能成功开启</p>

LSoPn 发表于 2023-12-28 16:53

LSoPn 发表于 2023-12-28 15:43
在第三步开启eth1~4网口之前,应该要先开启eno2网口,不然eth1~4好像不能成功开启

<p>另外,设置完防火墙规则后需要重启以下防火墙,/etc/init.d/firewall restart</p>

HonestQiao 发表于 2024-1-11 16:33

LSoPn 发表于 2023-12-28 16:53
另外,设置完防火墙规则后需要重启以下防火墙,/etc/init.d/firewall restart

<p>这个忘写上了,多谢大佬提醒!</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

HonestQiao 发表于 2024-3-2 14:22

freebsder 发表于 2022-9-7 15:54
cu桥帮主,果然大手笔。难得看见现在的帖子还专门带了参考链接。有那时候的范。

<p>一起学习,共同进步!</p>
页: [1]
查看完整版本: 【米尔MYC-J1028X开发板试用】建造超级强大的OpenWRT软路由