树莓派 Docker 部署使用 Openwrt
日常技术
2021-05-19
6286
0
环境
- 硬件:树莓派 4B 4G 内存
- 系统:RaspbianOS 32 位系统
安装 Docker
docker 官方提供了一键安装的脚本,直接执行命令即可安装
sudo curl -sSL https://get.docker.com | sh
配置 docker 可视化图形工具 Portainer(可选)
官方站点:https://www.portainer.io/
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
默认映射端口为 9000,容器启动后访问树莓派 ip+port,如 http://192.168.50.10:9000 。根据步骤配置好即可看到管理 Docker 的图形界面
安装 Openwrt
打开网卡混杂模式
sudo ip link set eth0 promisc on
创建网络
docker network create -d macvlan --subnet=192.168.50.0/24 --gateway=192.168.50.1 -o parent=eth0 macnet
注意这里要修改--subnet=192.168.50.0/24 --gateway=192.168.50.1
为你内网对应的网段。如树莓派 ip 为 192.168.1.1,那么就改为--subnet=192.168.1.0/24 --gateway=192.168.1.1
。
拉取镜像
Openwrt 在 docker hub 中是有官方镜像的,但是树莓派是 arm 架构,且我这里使用的是 32 位系统,官网镜像不支持。好在有 SuLingGG/OpenWrt-Rpi-Docker 项目重新编译了 arm 架构的 Openwrt 镜像。
docker pull sulinggg/openwrt:latest
OpenWrt-Rpi-Docker 项目提供了 4 中标签的镜像,分别是 rpi1、rpi2、rpi3、rpi4,这里拉取使用 latest 实际上和 rpi2 为同一镜像。
虽然我是 4B,但是项目里的 rpi4 标签只 64 位系统,如果你的 4B 刷的是 64 位系统则用 rpi4 标签,否则使用 rpi2 即可。
创建并启动容器
docker run --restart always --name openwrt -d --network macnet --privileged sulinggg/openwrt:latest /sbin/init
进入容器修改配置
docker exec -it openwrt bash
vim /etc/config/network
修改 LAN 口的配置
config interface 'lan'
option type 'bridge' // 这行要去掉
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.50.11' // 要修改,设置为 openwrt ip
option netmask '255.255.255.0'
option ip6assign '60'
option gateway '192.168.50.1' // 要修改
option broadcast '192.168.50.255' // 要修改
option dns '192.168.50.1' // 要修改
配置中要修改的部分的网段都要修改为实际网络的网段
option ipaddr
配置的就是 openwrt 的 ip,最后一位随意配置,只要不和已分配 ip 冲突即可
option type 'bridge'
这行配置要去掉,官方给的参考教学没有这一项,但是这个配置会把 openwrt 设置为桥接模式,会让一些‘特殊功能’无法生效,所以要去掉。
重启网络生效配置
/etc/init.d/network restart
配置 Openwrt 为旁路由
上面步骤成功在树莓派上通过 Docker 部署 Openwrt,现在来配置使其成为旁路由
进入 Openwrt 管理页面
访问地址http://192.168.50.11
(刚才配置的ipaddr
地址),默认的用户名是root
,密码是password
。
关闭 DHCP 服务
在 “网络 - 接口 - Lan - 修改” 界面中,勾选下方的 “忽略此接口(不在此接口提供 DHCP 服务)”,并“保存&应用”。
配置 DHCP 到 Openwrt
接下来要设置路由的 DHCP。有两种方式,一种是配置主路由 DHCP,这种可以让所有在主路由网关下的设备都走 Openwrt 网关。还有一种是自己手动配置想要走网关的设备。
windows
配置对应的网络设置,其中默认网关和 DNS 地址设置为 Openwrt 的 ip
IOS
在网络里手动设置 IPV4 地址和 DNS 服务器,同样的把“路由器”和 DNS 地址设成 Openwrt 的 IP
参考
-
[2] 在 Docker 中运行 OpenWrt 旁路网关 网关](https://mlapp.cn/376.html)