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