此次教程使用的镜像基于 project-OpenWrt 18.06 固件制作镜像,编译方法及模板来自
https://github.com/SuLingGG/OpenWrt-Rpi
在此感谢! 基于官方 OpenWrt 19.07 编译的固件在插件兼容性上还有很多问题,极不稳定。如果是要稳定使用建议使用 Lean 或者 project-OpenWrt 18.06 固件
打开网卡混杂模式
创建 macvlan 网络
在 Docker 中,macvlan 是众多 Docker 网络模型中的一种,并且是一种跨主机的网络模型,作为一种驱动(driver)启用(-d 参数指定),Docker macvlan 只支持 bridge 模式。相同的 macvlan 之间可以互相通信,不同的 macvlan 网络之间在二层上不能通信,需要借助三层的路由器才能完成通信。做这一步就是让 Docker 中的 OpenWrt 容器和路由器等其他终端设备处在同一个二层网络中。
命令解释如下:
-d --subnet --gateway -o parent
很重要 命令中的 –subnet 和 –gateway参数需要根据自己的网络环境修改,切记不要照抄。其中--gateway
#就是你的路由器地址--subnet
#是你路由器地址所在的网段。
一般情况是修改两个10.0.0.1为自己主路由地址
创建完成后可以使用 docker network ls
查看当前主机的网络环境,其中出现了macvlan网络
首先下载编译好的官方固件,提供 Github 和 OneDrive 两种下载方式,Github 如果比较慢可以使用 OneDrive。由于 OneDrive 容量有限只提供基于官方源码编译的固件。制作 Docker 镜像需要使用 rootfs固件,别下错了。
下载地址:https://github.com/SuLingGG/OpenWrt-Rpi
下载好得到文件openwrt-bcm27xx-bcm2711-rpi-4-rootfs.tar.gz
,通过 sftp将固件上传至树莓派/home/pi目录。
查看镜像
创建容器,命令如下
-v
#参数用于挂载宿主机目录到 Docker 容器中,
由于未知原因,每次重启 OpenWrt 容器都会导致其 DNS 服务器被修改为127.0.0.11,导致域名解析失败不能上网,所以使用挂载宿主机 DNS 服务器文件 /etc/resolv.conf
的方式解决此问题。
因为 OpenWrt 中有 smba 文件共享服务功能,所以使用-v /mnt/sda1:/home/harddisk/
挂载 宿主机/mnt/sda1
作为媒体目录。如果不需要也可以不挂载此目录。
创建完成后使用
查看容器创建情况
进入容器内部
修改容器网络配置
请根据自己的网络情况进行修改,不要照抄,修改后的完整配置如下
重启容器内部网络服务
这里需要提到的一点是,如果你需要同时使用多个 OpenWrt 容器,那么一定要修改 mac 地址,因为 OpenWrt 的固件 mac 地址都是一样的,不修改 mac 地址会出现冲突导致网络不稳定。
修改 lan 的 mac 地址
修改 eth0 mac 地址
之后重启 OpenWrt 容器docker restart openwrt
至此 OpenWrt 容器的安装及配置部分我们就已经完成了。接下来就是登录 OpenWrt 的 web 页面操作了。
在浏览器输入之前在 OpenWrt 容器里配置的地址
192.168.2.240
,即可打开 OpenWrt 控制面板登陆页。默认密码:
password
在网络诊断部分进行网络测试,使用域名
baidu.com
如果此处网络不通,请登录树莓派检查 DNS 配置文件/etc/resolv.conf
将 nameserver 设置为 OpenWrt 的地址 。
至此上网的部分就基本设置好了,需要魔法加持的,就可以配置好ssr plus 或者 passwall
或者其他的特殊服务
旁路由的设置和上一篇一样
可参考上一篇
原文链接:https://www.bilibili.com/read/cv12737576/