鉴于安了wfnb/onecloud 23年的bata版本 结果发现进入docker 连make config apt yum apk curl等命令都没有……而且curl下载很慢 得选6.0哪个版本
反正就是 安不了istore 所以 直接刷人家的成品算了 = =
为什么要使用软路由、旁路由
普通的路由器往往集无线信号转发、网关、DNS 服务器等角色为一身,其中的“网关”角色负责路由器内部数据的处理。但因为一般家用的路由器硬件性能很有限,在运行一些比较吃资源的应用(如酸酸乳、去广告等)时,几乎会占满所有硬件资源,导致路由器网络/系统不稳定等诸多问题。既然路由器的硬件性能有限,那可不可以把网关的重任交给硬件性能更好的设备去做,让路由器安安心心地做好它的老本行 – 无线转发呢?
这样,每个角色各司其职,路由器肩上的任务轻了,即使是油管 4K 也能轻松跑满网速了,而旁路由也结束了它吃灰的命运。由此资源的充分利用,一举两得。
在接下来的文章中,我们将在 Docker 容器中运行 OpenWrt,并通过设置,让 Docker 容器中的 OpenWrt 网关接管路由器自身的网关,减轻路由器的负担,同时,由于网关被 OpenWrt 接管,所以 OpenWrt 中的大部分应用都是可用的,比如酸酸乳,V2ray,去广告等。做个不恰当的比喻, OpenWrt 网关接管路由器自身的网关后,你可以理解为路由器是 OpenWrt 的一块外置网卡。
二、安装openwrt+旁路由设置一体版(推荐)
sulinggg/openwrt 的docker镜像
https://hub.docker.com/r/sulinggg/openwrt
https://mlapp.cn/376.html
这个版本包含了openclash、shardow、去广告等软件,且内置了旁路由 无需繁琐设置 但是不可网页上传ipk安装插件且clash需要手动安装内核
1.打开网卡混杂模式
sudo ip link set eth0 promisc on
2.创建网络
(须结合实际网络情况,不能照抄命令)
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet
这一条命令需要根据树莓派所处的网络环境来做修改,可以使用 sudo ifconfig命令来查看旁路由 eth0 网卡获得的 IP 地址,如果旁路由获得的 IP 地址为 192.168.2.154,那么说明树莓派处在 192.168.2.x网段,相应的,命令中的192.168.1.0和192.168.1.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.拉取镜像
注意sulinggg/openwrt的其他本不行,会一直重启无法使用的。sulinggg/openwrt:arm_cortex-a5_vfpv4 只有这个版本可以
若身处国内,为提高拉取速度,请拉取阿里云仓库中的镜像:
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.1.100'
option netmask '255.255.255.0'
option ip6assign '60'
option gateway '192.168.1.1'
option broadcast '192.168.1.255'
option dns '192.168.1.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。
如果有其他问题
https://mlapp.cn/376.html 看这个网页 可能提到
二(1)非一体化教程之——安装openwrt(仅针对旁路由版)
以下以玩客云为例 其他也可通用
打开网卡混杂模式
ip link set eth0 promisc on
创建docker网络
docker network create -d macvlan --subnet=玩客云的ip/24 --gateway=主路由的ip -o parent=eth0 macnet
[↑自己根据 玩客云 所在网段修改,如:玩客云IP:10.1.2.13,则10.1.1.0/24 改成 10.1.2.0/24,10.1.1.1改成主路由地址]
拉取 OpenWRT 镜像
版本1 wfnb版玩客云镜像
#必须指定版本号
docker pull wfnb/onecloud:22-4-4 # 有一些自带插件 但是没有网页上传安装插件功能
# 也可使用beta版 没啥自带插件 但是可以网页上传安装插件
# docker pull wfnb/onecloud:23-01-25-beta
# 作者
#🔵墙裂建议使用 [ImmortalWrt 18.06] 版本的 23-01-25-alpha 镜像
#🔵体积小 超纯净 需要的插件皆可进入软件包自行安装
#但是 自己安不是挺麻烦的··· 算了
如果不对 去看下dockerhub的镜像
然后 这些版本都没安yum、apt、apk等管理工具,make、curl等命令也没有 只有nano编辑 如果你之后想手动安装一些东西的话 估计很麻烦 比如istore 甚至curl下载也很慢 可以选择6.0那个小包 然后tar命令没添加gzip支持,用z参数也没用 反正你要折腾其他的就笔记麻烦
创建容器
docker run -d --name=openwrt --restart always --network macnet --ip 10.1.1.11 --privileged wfnb/onecloud:22-4-4 /sbin/init
-
name=OpenWrt 其中OpenWrt是容器名称,可以更改成你想要的,容器名称注意不要和其他容器一样,会冲突
-
ip 10.1.1.11 其中10.1.1.11是容器IP,可以更改成你想要的,是openwrt运行在哪个ip上,容器IP不要重复,这一项可删除
似乎改了也没用== 算了 就用默认的吧
修改OpenWrt IP
docker exec OpenWrt sed -e “s/10.1.1.13/你想分配给OpenWrt的IP/” -i /etc/config/network
OpenWrt 是容器名称,和你创建容器时的一致
镜像设置的默认IP是10.1.1.13,可通过该命令修改
beta版本的镜像的默认IP是10.1.1.13,需将上述10.1.1.11改为10.1.1.13
管理密码是 root 不是作者写的password
然后登录10.1.1.11即可
版本2 jyhking版玩客云镜像
教程地址 https://www.right.com.cn/forum/thread-8024126-1-1.html
拉取镜像
docker pull jyhking/onecloud:1.1
注意 只有1.1支持玩客云的arm32
1.2是arm64的 且只添加了 添加插件ttyd、netdata。 不用冒险去试1.2
创建容器
docker run -itd --name=OneCloud --restart=always --network=macnet --privileged=true jyhking/onecloud:1.1 /sbin/init
—name=OneCloud 其中OneCloud是容器名称,可以更改成你想要的,比如openwrt,容器名称注意不要和其他容器一样,会冲突
openwrt镜像运行成功,然后打开路由器后台,找到openwrt地址。
密码是password
版本3
xuanaimai/onecloud
这个 还没试过
二(2)非一体化教程之——设置旁路由
旁路由如何修改
因为是docker版 比较特殊 和直接安的不一样
简单来说就是 新建接口,选lan eth0的那个接口 应该是两个设备互相连接图标的 好像是桥接 然后静态地址
然后设置主路由地址和dns
忽略此接口
调整下防火墙
接口
网络 > 接口 > 修改
忽略此接口 ☑️ > 保存&应用
防火墙
网络 > 防火墙
基本设置 > 启用FullCone-NAT☑️ > 转发 - 接受 > 保存&应用
进入旁路由的管理界面。我们需要修改OpenWrt的LAN口的接口设置
如果有就直接编辑没有的话就新建,
特别注意设备选择
这里看上面新建那里 应该是一样的
拉到下面,一定要忽略此接口,就是记得打勾
设置好之后,请记得点击【保存】。这里划重点,不要点击【保存&应用】!不要点击【保存&应用】!不要点击【保存&应用】!不要点击【保存&应用】!不要点击【保存&应用】!不要点击【保存&应用】!不要点击【保存&应用】!不要点击【保存&应用】!
注意 这里 那三个应该都是允许
然后保存即可
到了这一步,我们玩客云这里的设置就算完成了。不过为了更保险,我们可以验证一下我们的设置有没有问题。
主路由如何修改
下一步我们就需要在路由器上进行一个简单的设置了。
进入路由器的后台,我们选择“内部网络—DHCP服务器”。
此时我们有两处需要更改:默认网关和DNS服务器!这两个地方全部改成玩客云的IP地址!
然后点击路由器的“保存或者应用”。此时我们的网络可能会有短暂的重启(大概10秒种),重启过后就正常了
Others
上网设备手动指定网关
如果路由器固件不支持自定义 DHCP 服务的网关及 DNS 地址(常见于路由器官方固件),或者只希望局域网下的个别设备接入旁路网关时,须在接入设备上做以下配置
需要在安卓的 WIFI 设置内将 IP 获取方式更改为“静态”或“手动”,其中:
“IP 地址”项目需要更改为网段内不冲突的地址;
“网关”或“路由器”项目需要更改为旁路网关 IP 地址;
“前缀长度”项目填写“24”;
“DNS”项目需要更改为旁路网关 IP 地址(两个 DNS 输入框填写一个就可以)。