rk3568开发板使用Docker安装Openwrt实现旁路由
开发板为Lubancat2n
系统为ubuntu20.04
主路由器网段为192.168.124.0/24, 网关为192.168.124.1

安装与配置Docker
根据官网的步骤, 安装Docker。
安装portainer容器:
1 | docker volume create portainer_data |
1 | docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest |
安装piaoyizy提供的openwrt镜像:
1 | docker pull piaoyizy/openwrt-aarch64:latest |
将选用的网卡打开混杂模式, 需要将下述命令中的eth3
修改为实际使用的网卡:
1 | sudo ip link set eth3 promisc on |
可以使用
ip a
或ifconfig
查看本机的网卡.混杂模式(promiscuous mode)是计算机网络中的术语。是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。网卡的混杂模式一般在网络管理员分析网络数据作为网络故障诊断手段时用到,同时这个模式也被网络黑客利用来作为网络数据窃听的入口。
创建docker network, 这里需要将网段与网关修改以符合主路由的设置, 将parent
设置为使用的物理网卡:
1 | docker network create -d macvlan --subnet=192.168.124.0/24 --gateway=192.168.124.1 -o parent=eth3 macnet |
- macvlan为Docker network提供的驱动中的一种。 macvlan是linux中网络虚拟化的一种技术,这种技术能将 一块物理网卡虚拟成多块虚拟网卡 ,相当于物理网卡施展了多重影分身之术 ,由一个变多个。 深入macvlan可以参考如下文章:Macvlan,Docker 网络模型之 macvlan 详解,Docker Macvlan文档。
运行容器:
1 | docker run -d --name=OpenWrt --restart always --privileged --network macnet --ip 192.168.124.20 piaoyizy/openwrt-aarch64:latest |
此时在浏览器中输入旁路由地址还不能访问openwrt页面, 因为容器中默认使用的静态分配IP地址与我们使用的不同,需要进入bash设置,在portainer控制台中进入openwrt容器的命令行界面.

修改配置文件:
1 | vim /etc/config/network |
替换lan网络配置如下(根据自己的网络情况填写):
1 | config interface 'lan' |
重启网络:
1 | /etc/init.d/network restart |
此时在浏览器中输入目标地址,即可访问openwrt页面, 默认账号 root 密码 password。
登录openwrt界面后, 在openwrt的网络配置中,点击接口选项,修改名为LAN的接口。
在物理配置
中,取消勾选桥接接口
;在最下方的基本配置
中,关闭DHCP,勾选忽略此接口;最下方的IPV6设置
中,路由通告服务
、DHCPv6 服务
和NDP 代理
全部选择已禁用
;入站数据
、出站数据
和转发
全部选择接受;
配置OpenClash
piaoyizy提供的openwrt镜像中包含了passwall, openClash等插件,我们可以很方便的进行使用。
在使用openClash时,出现了如下问题:
开启服务后,Clash占用CPU、内存过大,Openwrt内显示的下载与上传速度非常高。后发现日志系统设置为Info模式,Clash内核会把所有的代理信息发送到网页控制台(9090端口),而这个代理信息的发送到端口9090的过程也会被当作Info再次发送到端口9090,导致无穷无尽地发送,使内核占用资源非常多。将日志信息模式修改为Warning模式即可。
配置客户端
在完成上述配置后,在操作系统网络设置中关闭客户端的DHCP自动分配,选择静态分配IP,将客户端的网关、DNS服务器指向在Docker中新搭建的openwrt。