步骤开始
成功登陆到树莓派的 SSH 后,在拉取镜像之前,我们还需要进行一些额外的工作:
1.打开网卡混杂模式
sudo ip link set eth0 promisc on
|
2.创建网络
(须结合实际网络情况,不能照抄命令)
docker network create -d macvlan --subnet=192.168.123.0/24 --gateway=192.168.123.1 -o parent=eth0 macnet
|
这一条命令需要根据树莓派所处的网络环境来做修改,可以使用
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 create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet
|
此时,我们使用
docker network ls
命令可以看到网络macnet
已建立成功:$ docker network ls NETWORK ID NAME DRIVER SCOPE 10e676133746 bridge bridge local f5308b94e8fa host host local 16745ea66852 macnet macvlan local 5e72e41ea02a none null local |
3.拉取镜像
若身处国内,为提高拉取速度,请拉取阿里云仓库中的镜像:
docker pull registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest
|
同时小苏也提供存放在 Docker 官方仓库 中的镜像:
docker pull sulinggg/openwrt:latest
|
镜像拉取完成后,我们可以执行
docker images
命令查看现存镜像:$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry.cn-shanghai.aliyuncs.com/suling/openwrt latest 4f4bc5dca2d9 3 hours ago 112MB |
可见,镜像已成功拉取到本地。
4.创建并启动容器
docker run --restart always --name openwrt -d --network macnet --privileged registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest /sbin/init
|
其中:
--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
命令查看当前运行的容器:$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a26cee7cade6 openwrt:latest "/sbin/init" 3 hours ago Up 3 hours openwrt |
若容器运行信息
STATUS
列为 UP
状态,则说明容器运行正常。5.进入容器并修改相关参数
(须结合实际网络情况,不能照抄配置)
docker exec -it openwrt bash
|
其中:
openwrt
为容器名称;bash
为进入容器后执行的命令。
执行此命令后我们便进入 OpenWrt 的命令行界面,首先,我们需要编辑 OpenWrt 的网络配置文件:
vim /etc/config/network
|
我们需要更改 Lan 口设置:
config interface 'lan' option type 'bridge' option ifname 'eth0' option proto 'static' option ipaddr '192.168.123.100' option netmask '255.255.255.0' option ip6assign '60' option gateway '192.168.123.1' option broadcast '192.168.123.255' option dns '192.168.123.1' |
其中:
所有的
192.168.123.x
需要根据树莓派所处网段修改,option gateway
和option dns
填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154
,路由器 IP 为192.168.2.1
,则需要这样修改:config interface 'lan' option type 'bridge' option ifname 'eth0' option proto 'static' option ipaddr '192.168.2.100' 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.1' |
option ipaddr
项目定义了 OpenWrt 的 IP 地址,在完成网段设置后,IP最后一段可根据自己的爱好修改(前提是符合规则且不和现有已分配 IP 冲突)。6.重启网络
/etc/init.d/network restart
|
7.进入控制面板
在浏览器中输入第 5 步
option ipaddr
项目中的 IP 进入 Luci 控制面板,若option ipaddr
的参数为 192.168.123.100
,则可以在浏览器输入 http://192.168.123.100
进入控制面板。
用户名:
root
密码:
password
8.关闭 DHCP 服务
在 “网络 - 接口 - Lan - 修改” 界面中,勾选下方的 “忽略此接口(不在此接口提供 DHCP 服务)”,并“保存&应用”。

9.主路由 DHCP 设置
进入路由器后台中,将主路由的 DHCP 的默认网关和 DNS 服务器设置为第 5 步中
option ipaddr
项目中的 IP。
10.重新连接路由器
完成以上操作后,断开设备(如手机,电脑)与路由器的连接,重新连接路由器,连接路由器的设备将获取到我们设置到的 IP。
其他修复
1.关闭 WLAN 硬件加速
设置旁路路由后,若出现访问国内网站网速慢,不稳定的情况(多见于 Pandavan 及其改版固件,如华硕老毛子固件),请在路由器的控制面板中关闭有关 WLAN 的硬件加速,比如选择“Offload TCP/UDP for LAN”(若未出现此现象请忽略):

2.宿主机网络修复
OpenWrt 容器运行后,宿主机内可能无法正常连接外部网络,需要修改宿主机的
/etc/network/interfaces
文件以修复:
(须结合实际网络情况,不能照抄配置)
cp /etc/network/interfaces /etc/network/interfaces.bak # 备份文件 vim /etc/network/interfaces # 使用 vim 编辑文件 |
以“树莓派爱好者基地”64 位 Debian 为例,向文件末尾添加:
auto eth0 iface eth0 inet manual auto macvlan iface macvlan inet static address 192.168.123.200 netmask 255.255.255.0 gateway 192.168.123.1 dns-nameservers 192.168.123.1 pre-up ip link add macvlan link eth0 type macvlan mode bridge post-down ip link del macvlan link eth0 type macvlan mode bridge |
其中,所有的
192.168.123.x
都需要按照树莓派所处网段更改,gateway
和dns-nameservers
填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154
,路由器 IP 为192.168.2.1
,则需要这样修改:auto eth0 iface eth0 inet manual auto macvlan iface macvlan inet static address 192.168.2.200 netmask 255.255.255.0 gateway 192.168.2.1 dns-nameservers 192.168.2.1 pre-up ip link add macvlan link eth0 type macvlan mode bridge post-down ip link del macvlan link eth0 type macvlan mode bridge |
修改后重启树莓派,之后树莓派的局域网 IP 地址将会固定为
/etc/network/interfaces
文件中address
参数中的地址。3.手动指定网关
如果路由器固件不支持自定义 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 多数应用工作正常,如有发现不能正常工作的应用请评论反馈~
没有评论:
发表评论