
在 ARM 开发板(例如 Orange Pi 3B)上搭建 HomeLab 时,通常会同时运行多个服务容器,为了给局域网提供额外的网络接管、去广告等功能,同时又不破坏开发板原有的 Ubuntu 系统生态,使用 Docker 部署 OpenWrt 旁路由是兼顾性能与灵活性的最佳方案。
本文将详细记录利用 Docker 的 MacVLAN 网络,在 ARM64 架构下部署 OpenWrt 的全过程,以及配置出错后的“一秒重置”技巧。
部署前,需先确认当前局域网的基础网络信息。以下配置以常见的家庭网络环境为例:
eth0192.168.124.0/24192.168.124.1192.168.124.100(需确保未被占用)要让 Docker 容器拥有与宿主机同网段的独立 IP,必须借助 MacVLAN 网络。前提是物理网卡必须开启混杂模式(Promiscuous Mode),以允许网卡接收目标 MAC 地址非本机的流量。
执行以下命令开启:
bashsudo ip link set eth0 promisc on
创建一个名为 macnet 的网络,将网段与网关与主路由对齐。
bashdocker network create -d macvlan \ --subnet=192.168.124.0/24 \ --gateway=192.168.124.1 \ -o parent=eth0 macnet
避坑指南:如果执行时提示
invalid pool request: Pool overlaps with other one on this address space,说明当前 Docker 中存在冲突的网段配置。执行docker network prune清除未使用过的网络即可解决。
针对 ARM64 (aarch64) 架构,推荐使用国内维护的 sulinggg/openwrt:armv8 镜像,内置了丰富的常用网络与系统插件。
bashdocker run --restart always --name openwrt -d \ --network macnet \ --privileged \ sulinggg/openwrt:armv8 /sbin/init
容器启动后,默认的网络配置通常无法直接与现有局域网互通,需要进入容器修改静态 IP。
进入容器终端:
bashdocker exec -it openwrt bash
编辑网络配置文件:
bashvi /etc/config/network
找到 config interface 'lan' 块,按 i 键进入编辑模式,修改对应的网段信息:
textconfig interface 'lan' option type 'bridge' option ifname 'eth0' option proto 'static' option ipaddr '192.168.124.100' # 规划的旁路由 IP option netmask '255.255.255.0' option gateway '192.168.124.1' # 主路由 IP option dns '192.168.124.1'
修改完成后,按 Esc 键,输入 :wq 保存并退出。
重启容器内的网络服务使配置生效:
bash/etc/init.d/network restart
配置生效后,在浏览器中访问 http://192.168.124.100 即可进入 ImmortalWrt 登录界面(默认账号为 root,密码为 password 或留空)。
在折腾 OpenWrt 插件时,极易因设置不当导致网络崩溃。Docker 部署的最大优势在于“试错成本极低”。在完成上述基础网络配置并成功登录后台后,建议立刻将当前状态“存档”。
在宿主机终端执行打包命令:
bashdocker commit openwrt my-openwrt:v1
此后,如果 OpenWrt 被玩坏,只需强行删除容器:
bashdocker rm -f openwrt
然后使用刚刚保存的镜像重新运行即可“满血复活”,省去了重新进入终端修改网络配置的步骤:
bashdocker run --restart always --name openwrt -d \ --network macnet \ --privileged \ my-openwrt:v1 /sbin/init
本文作者:小转圈
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!