成功登陆到树莓派的 SSH 后,在拉取镜像之前,我们还需要进行一些额外的工作:
|
(须结合实际网络情况,不能照抄命令)
|
这一条命令需要根据树莓派所处的网络环境来做修改,可以使用 sudo ifconfig
命令来查看树莓派 eth0 网卡获得的 IP 地址,如果树莓派获得的 IP 地址为 192.168.2.154
,那么说明树莓派处在 192.168.2.x
网段,相应的,命令中的192.168.123.0
和192.168.123.1
需要被替换成 192.168.2.0
和192.168.2.1
:
|
此时,我们使用 docker network ls
命令可以看到网络macnet
已建立成功:
|
若身处国内,为提高拉取速度,请拉取阿里云仓库中的镜像:
|
同时小苏也提供存放在 Docker 官方仓库 中的镜像:
|
镜像拉取完成后,我们可以执行docker images
命令查看现存镜像:
|
可见,镜像已成功拉取到本地。
|
其中:
--restart always
参数表示容器退出时始终重启,使服务尽量保持始终可用;
--name openwrt
参数定义了容器的名称;
-d
参数定义使容器运行在 Daemon 模式;
--network macnet
参数定义将容器加入 maxnet
网络;
--privileged
参数定义容器运行在特权模式下;
registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest
为 Docker 镜像名,因容器托管在阿里云 Docker 镜像仓库内,所以在镜像名中含有阿里云仓库信息;
/sbin/init
定义容器启动后执行的命令。
启动容器后,我们可以使用 docker ps -a
命令查看当前运行的容器:
|
若容器运行信息STATUS
列为 UP
状态,则说明容器运行正常。
(须结合实际网络情况,不能照抄配置)
|
其中:
openwrt
为容器名称;
bash
为进入容器后执行的命令。
执行此命令后我们便进入 OpenWrt 的命令行界面,首先,我们需要编辑 OpenWrt 的网络配置文件:
|
我们需要更改 Lan 口设置:
|
其中:
所有的 192.168.123.x
需要根据树莓派所处网段修改,option gateway
和option dns
填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154
,路由器 IP 为192.168.2.1
,则需要这样修改:
|
option ipaddr
项目定义了 OpenWrt 的 IP 地址,在完成网段设置后,IP最后一段可根据自己的爱好修改(前提是符合规则且不和现有已分配 IP 冲突)。
|
在浏览器中输入第 5 步option ipaddr
项目中的 IP 进入 Luci 控制面板,若option ipaddr
的参数为 192.168.123.100
,则可以在浏览器输入 http://192.168.123.100
进入控制面板。
用户名:root
密码:password
在 “网络 - 接口 - Lan - 修改” 界面中,勾选下方的 “忽略此接口(不在此接口提供 DHCP 服务)”,并“保存&应用”。
进入路由器后台中,将主路由的 DHCP 的默认网关和 DNS 服务器设置为第 5 步中option ipaddr
项目中的 IP。
完成以上操作后,断开设备(如手机,电脑)与路由器的连接,重新连接路由器,连接路由器的设备将获取到我们设置到的 IP。
设置旁路路由后,若出现访问国内网站网速慢,不稳定的情况(多见于 Pandavan 及其改版固件,如华硕老毛子固件),请在路由器的控制面板中关闭有关 WLAN 的硬件加速,比如选择“Offload TCP/UDP for LAN”(若未出现此现象请忽略):
OpenWrt 容器运行后,宿主机内可能无法正常连接外部网络,需要修改宿主机的 /etc/network/interfaces
文件以修复:
(须结合实际网络情况,不能照抄配置)
|
以“树莓派爱好者基地”64 位 Debian 为例,向文件末尾添加:
|
其中,所有的 192.168.123.x
都需要按照树莓派所处网段更改,gateway
和dns-nameservers
填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154
,路由器 IP 为192.168.2.1
,则需要这样修改:
|
修改后重启树莓派,之后树莓派的局域网 IP 地址将会固定为/etc/network/interfaces
文件中address
参数中的地址。
如果路由器固件不支持自定义 DHCP 服务的网关及 DNS 地址(常见于路由器官方固件),或者只希望局域网下的个别设备接入旁路网关时,须在接入设备上做以下配置:
安卓:
需要在安卓的 WIFI 设置内将 IP 获取方式更改为“静态”或“手动”,其中:
“IP 地址”项目需要更改为网段内不冲突的地址;
“网关”或“路由器”项目需要更改为旁路网关 IP 地址;
“前缀长度”项目填写“24”;
“DNS”项目需要更改为旁路网关 IP 地址(两个 DNS 输入框填写一个就可以)。
完成并提交设置后,关闭 WIFI 开关再打开,连接设置的 WIFI 热点,若当前网络参数为设定值,则证明设置成功。
Windows:
在无线热点的“属性”界面下,点击 “IP 设置 - 编辑”按钮,在弹出框中更改 IP 分配模式为“手动”,打开 IPV4 的开关,根据所处网段及上文安卓的相关设置填写相关参数即可。
文章所述方案适用于光猫或路由器已完成宽带拨号的网络环境,未测试也不推荐使用 Docker 内的 OpenWrt 进行宽带拨号;
OpenWrt 容器跟随树莓派系统启动,无需手动干预;
由于容器内系统内核共享宿主机内核,所以在 Luci 面板的 “内核版本”项与宿主机内核版本一致;
在对容器进行停止或删除操作时,树莓派可能会发生卡顿现象,SSH 可能会断开,1~2 分钟后会恢复正常,目前原因不明;
经测试,发现 Adblock 不工作,UnblockNeteaseMusic 需要自行设置代理,除此之外容器中的 OpenWrt 多数应用工作正常,如有发现不能正常工作的应用请评论反馈~
1.OpenWrt By Lean · coolsnowwolf/lede - GitHub
https://github.com/coolsnowwolf/lede
2.【小狮子编译贴】抛砖引玉,为打造N1路由神器 - 恩山无线论坛
https://www.right.com.cn/forum/thread-588747-1-1.html
3.docker openwrt 踩坑的几个小问题解决过程分享 - 恩山无线论坛
https://www.right.com.cn/forum/thread-1048535-1-1.html
4.N1刷入LEAN OPENWRT做旁路网关,导致访问国内网站卡顿 - 恩山无线论坛
https://www.right.com.cn/forum/thread-506510-1-1.html