先随便写个文字版,感兴趣的小伙伴多了再优化排版加上图片啥的。
折腾起始
一开始我是参考网上的资料准备安装openwrt作为旁路由的,折腾的是sulingg的arm64版本,但是怎么都不能正常运行,总是一启动就报error了。
后面转念一想,我为了体验原汁原味的ros上网经验,是没有打算配置旁路由的,那就会在需要时使用代理上网会更多些,何不先装个clash来上网呢,这样软件也简单点,openwrt里面跑了多少我们不需要的软件啊,clash的docker中就只有一个clash软件,对ax3运行也轻松点。
使用效果
从我运行clash从外网看8k视频的负荷来看,ax3不安装docker性能太浪费了,因为看8k视频时cpu消耗最高不超过10%,即使同时加上我跑pt上下带宽跑满(300m下30m上)cpu消耗最高也没有超过20%。
在ax3使用container的条件
1、 一个U盘,因为ax3的存储空间只有128M,而1个docker镜像随随便便就几十M,我用的是闪迪(SanDisk)32GB USB3.1 U盘 CZ430酷豆。
2、 一台安装了docker软件的linux主机
3、 Winscp软件,将docker镜像文件上传到ax3,上传或编辑ax3上镜像运行环境中的配置文件
参考资料
参考了 如下3份资料
https://www.youtube.com/watch?v=UMcJs4oyHDk Docker containers on Mikrotik? Part 2
iHole
https://fugary.com/?p=363 群晖Docker 安装和运行Clash并自动更新订阅
环境配置运行环境 Ros 7.8 stable
为简单起见,docker的网段和ax3所在一致,我这里是192.168.1的网段
预先生成4个veth虚拟网卡,我这里的例子
第1个是veth1,IP地址为192.168.1.6 给clash使用
第2个是veth2,IP地址为192.168.1.7 给clash的网页界面yacd用
第2个是veth3,IP地址为192.168.1.8 给frpc用
第2个是veth4,IP地址为192.168.1.9 给测试xray用
注意上面建立的veth1-4要记得加入bridge中,否则后面会发现container中应用启动正常,但是网络不通
我这里u盘在ax3中插入并格式化后路径为usb2-part1 你们需要改成对应自己的u盘路径
在这个路径下
新建了software目录存放docker镜像文件
新建了docker目录存放docker运行时文件
为简单起见,避免混淆,没有配置任何运行时变量(env)和目录映射(mount)参数,下面2个docker都能正常运行。
安装clash难点一及解决:我们需要下载arm64版的docker镜像文件
以下载dreamacro的clash的镜像为例
我们需要的是sha256开始的字符串,拷贝,在前面加上@组合到命令
sudo docker pulldreamacro/clash:latest@sha256:cab0ba657304cd2375df2da613749be5c6ca3b8e2f040b01c169e447a26d51d7
下载好后导出成tar文件
sudo docker save dreamacro/clash > ./clash.tar
这些操作命令的演示操作在视频2中有具体说明
将clash.tar通过winscp传入到ax3的U盘中,路径是在software下
然后使用命令
/container/add file=usb2-part1/software/clash.tar interface=veth1 root-dir=usb2-part1/docker/clash
即可安装到ax3的container中
注意这里我们使用的是veth1,后面使用clash的ip地址就是192.168.1.6
难点二及解决:修改docker运行环境中的clash配置文件
这时可以直接启动clash的docker,clash发现没有配置文件,会自动生成一个空的config.yaml,然后去下载一个mmdb文件,大概5m多大小。
可以使用winscp使用ftp协议登录ax3后,进入上面为clash指定的docker运行目录
usb2-part1/docker/clash
再进入里面的.config/clash目录
就可以看到这些文件了
Ros的日志中输出监听了7890端口了就说明mmdb文件下载完毕了
这时需要stop掉clash的docker
参考资料3
将clash中导出的config.yaml配置文件做些修改,根据我们上面的网络规划修改为
bind-address: '192.168.1.6'
mode: rule
log-level: info
external-controller: '192.168.1.6:9090'
然后将这个从clash中导出的config.yaml文件上传到ax3上的clash的docker镜像中,也就是
usb2-part1/docker/clash/.config/clash
中,覆盖原有文件,然后重新启动clash镜像
注意只能覆盖或编辑config.yaml文件,不能删除后再上传,否则启动时会出错:报权限错误。
Ros的日志中输出了监听了192.168.1.6:7890端口的信息就说明clash使用我们的配置文件成功启动了。
这时可以在SwitchyOmega中新建一个代理,代理协议socks5,ip地址192.168.1.6端口 7890
一切正常的话chrom通过这个代理上网了
可以访问
http://192.168.1.6:9090 来看是否有
{"hello":"clash"} 的输出
安装clash的yacd网页界面操作类似上面
找到linux/arm64的下载
下载docker镜像
sudo docker pullhaishanh/yacd:latest@sha256:c1f4b72d062caa802ecc8d7d514649a09aa647b32bae079ef06378d6e3d2bfa7
导出成docker镜像文件
sudo docker save haishanh/yacd > ./yacd.tar
导入到ax3的container中
/container/add file=usb2-part1/software/yacd.tar interface=veth2 root-dir=usb2-part1/docker/yacd logging=yes
注意这里网络使用的是veth2了,等会我们可以使用192.168.1.7来访问yacd
直接启动yacd的docker
Ros的日志窗口中会报错,不用管,然后按参考3中的说明操作即可,将192.168.1.6:9090添加到管理条目中,就能看到clash的管理页面了。
注意参考3中都使用了端口映射,我们为了简单,都没有用,所以访问yacd的网页时的访问地址是
需要加上开机自启动的在container的图形界面配置中勾上开机自启即可。
sudo docker pull snowdreamtech/frpc:latest@sha256:73271bab41b085efeb20af0522ac4895530f26f70d4201503023b1b7c1cfbe05
sudo docker save snowdreamtech/frpc > ./frpc.tar
新建一个veth3,ip就顺延指定为192.168.1.8,加到bridge中
将导出的frpc.tar上传到 usb2-part1/software
ros终端中导入container
/container/add file=usb2-part1/software/frpc.tar interface=veth3 root-dir=usb2-part1/docker/frpc logging=yes
这时启动frpc的docker会报错,日志中输出不能连接到127.0.0.1:7000,这是因为frpc使用的是缺省的frpc.ini来启动
使用winscp进入到frpc的配置文件目录
usb2-part1/docker/frpc/etc/frp
修改里面frpc.ini文件中的内容为你的frpc配置
再次重新启动,frpc已经能正常运行了,享受内网穿透的便利吧