在树莓派上使用Dockers运行Openwrt并作为主路由器的旁路由
Contents
在树莓派上直接安装openwrt系统时,使用4G内存时,之后只能占用20%左右,且CPU常年只会占用20%。比较浪费性能。可以考虑采用Docker部署Openwrt的方式,这样既满足要求,也能使用树莓派进行一些其他工作。
下载镜像
需要到官网下载镜像:[在树莓派上安装Ubuntu | Ubuntu](https://raspi.debian.net/tested-images/) 建议下载树莓派Ubunut服务器版本
然后下载软件:Raspberry Pi OS – Raspberry Pi
安装完成后,打开软件:
首先要选择os,要选择自己刚刚下载的os,如下
然后选择自己的SD卡,最后在执行write之前,需要先配置下ssh登录信息:
然后配置下Enable SSH和设置用户名和密码
最后再执行写入过程。写入完成后,插上SD卡和网线,然后等待30s左右,在路由器中查看树莓派对应的IP,就可以通过ssh登录树莓派了。
安装docker
切换源:
|
|
替换的内容如下:
|
|
执行指令:
|
|
可能会出现的问题:
报错:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
需要将当前用户加入docker用户组
安装OpenWrt in Docker
1. 开启网卡混杂模式
|
|
注意,上述指令在树莓派重启时会失效,需要将其添加到启动参数中,步骤如下:
-
首先需要新建一个/etc/rc.local并添加可执行权限
1 2
sudo touch /etc/rc.local sudo chmod +x /etc/rc.local
内容如下:
|
|
-
添加systemd程序
1
sudo vim /etc/systemd/system/rc-local.service
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 RemainAfterExit=yes [Install] WantedBy=multi-user.target
-
启动systemd程序
1 2 3
sudo systemctl enable rc-local sudo systemctl start rc-local.service sudo systemctl status rc-local.service
然后重启树莓派,执行ifconfig
,如果内容包括PROMISC
则表示上述操作成功
2. 安装Openwrt
创建网络
|
|
注意:subnet,gateway需要根据树莓派所处的网段进行修改,使用
ifconfig
命令,如果树莓派所处的网络在192.168.0.x网段内,则可以根据上述命令进行操作,如果在192.168.1.x网段内,则需要将192.168.0修改为192.168.1
可以使用docker network ls
查看建立的网络
macnet
就是刚刚建立的网络。
拉取镜像:
|
|
启动镜像
启动命令如下
|
|
--restart always
参数表示容器退出时始终重启,使服务尽量保持始终可用;
--name openwrt
参数定义了容器的名称;
-d
参数定义使容器运行在 Daemon 模式;
--network macnet
参数定义将容器加入 maxnet
网络;
--privileged
参数定义容器运行在特权模式下;
registry.cn-shanghai.aliyuncs.com/suling/openwrt:armv8
为 Docker 镜像名,因容器托管在阿里云 Docker 镜像仓库内,所以在镜像名中含有阿里云仓库信息;
/sbin/init
定义容器启动后执行的命令。
如果启动没有报错,则可以通过docker container ps -a
看到我们刚刚启动的镜像
但是如果启动失败了,报错如下
docker: Error response from daemon: failed to create the macvlan port: operation not supported.
则可以通过如下指令来解决这个问题
|
|
reboot后,可以通过执行docker container ps -a
查看镜像是否启动成功。
修改容器相关参数
进入容器
|
|
编辑OpenWrt的网络配置文件
|
|
修改lan
的相关内容
|
|
修改上述三项后,需要重启网络,指令如下:
|
|
配置OpenWrt
通过上述配置的ipaddr,访问树莓派控制页,用户名为:root
,密码为:password
首先需要配置下OpenWrt的网络,网络->接口->LAN修改按钮
基本设置中,勾选忽略此接口
物理设置中,取消勾选桥接接口。【这个比较重要,要不然会导致无法上网】
3. 将OpenWrt作为旁路路由
进入路由器后台,修改路由器默认网关和DNS服务器设置为树莓派静态IP
Author hlday
LastMod 2022-05-27