本人抄袭的文章,本来想自己做,但是两天折腾下来,很累很累!
一、背景 1、遇到什么问题 我买的机场只允许2个设备连接,在手机和电脑上各安装了Shadowrocket或者ClashX。这样家里其他设备就没办法享受机场带来的好处。我就想能不能搞一个旁路由专门来处理整个网络的事情,避开机场的设备限制。正好家里有一台AX9000可供折腾。
2、为什么不开SSH 网上其实已有AX9000开SSH安装ShellClash的教程,见 小米 AX9000 解锁 SSH 安装 ShellClash 教程|地表最强硬路由 。但是这个方法,一是需要一台OPENWRT路由器(我没有),二是担心影响我家本身的 AX9000 MESH组网后的稳定性。
二、开启AX9000 Docker功能
1、AX9000降级到开发版固件 官方降级文档
第一步:登录小米路由器官网下载小米路由器AX9000最新的开发者版本 miwifi_ra70_all_develop_1.0.140.bin ,并降级路由器至开发者版本(如已降级,忽略此步骤) http://www1.miwifi.com/miwifi_download.html
第二步:更新固件,从http://192.168.31.1 进入AX9000后台,然后在常用设置-系统状态-手动升级。选择上一步下载的140版本的固件,然后点击 开始升级。
注意:降级有可能会导致之前的部分路由器配置消失,降级先做好备份和记录。
2、准备U盘 第一步:因为AX9000本身没有存储,所以需要另外准备一个 64G USB 3.0 的U盘。淘宝上只要24块非常便宜,土豪甚至可以买更大的
天坑1:必须64G及以上,别看官方文档里写大于32G,但是其实32G是不行的。我们心中暗暗问候小米的PD,这么奇葩的文档,直接说64以上就不行吗,要说大于32G。 第二步:U盘格式化成 ext4格式,不是FAT32格式。格式化软件:Windows 如何在Windows 11/10/8/7中将硬盘格式化为Ext4? ;Mac macOS下如何将U盘格式化为ext4格式 | 陶熔鼓铸。因为我的电脑是Mac,windows的我是没有尝试过,Mac我试过是OK的。
3、启用Docker功能 第一步:插入AX9000 USB口,进入开发者版本管理后台(默认为192.168.31.1或http://miwifi.com),在高级设置中找到DOCKER功能
第二步:点击安装Docker
第三步:Docker安装成功后,页面将自动刷新,打开运行Docker拉钮,并且点击【安装第三方管理】,直至提示安装成功
第四步:此时即可单击“管理Docker按钮”,体验Docker功能
第五步:用户在小米路由器AX9000首次使用Portainer时,默认用户名:admin 密码:admin 更多信息可参考Portainer官网 https://www.portainer.io/
(1)使用过程中,如遇到右上角所示的提示弹窗,等提示消失再输入用户名密码(2秒会自动消失)
(2) 首次登陆时选择第一个选项,本地管理容器
三、Docker中安装Clash 其实我找到两个方法,一个通过Stack安装,一个手动配置container安装。对于小白可能meduuss更好,感谢meduuss 大大提供的方法,下面他的方法:AX9000 无SSH 仅通过开发版固件Docker安装Clash-小米无线路由器以及小米无线相关的设备-恩山无线论坛 第一步:添加Stack
第二步:在Web editor中填写如下代码,如果点击【Deploy the stack】
version: '3' services: clash: image: dreamacro/clash volumes: - /mnt/docker_disk/mi_docker/clash/config.yaml:/root/.config/clash/config.yaml ports: - "7890:7890" - "7891:7891" - "9098:9090" restart: always network_mode: "bridge" container_name: clash
天坑2: 新建这个Stack就行,不需要再到Containers里添加clash了。这个Stack会自动创建container。我这步卡了一整天,因为误以为需要先一建个clash Container再添加这个Stack,导致报 clash 已经被使用。
第三步:通过 192.168.31.1:9098 看看clash是否运行起来了,看到 {"hello":"clash"} 就OK了。如果没有看到hello也不需要担心,通过第四步的方法排查
第四步:在Container list 里,点击clash Quick Actions 第一个图标,可以看到logs
这里会显示所有详细的报错信息。可能的情况是看到报错,cannot find config yaml 。如果是这个报错就是Clash找不到配置文件,我们只需要新建或者上传一个就行。
四、新建config或者共享config 两种方法二选一就行,我用的是新建config的方法实现,meduuss 大大是通过共享完成的。
1、命令行修改config 因为没有SSH权限,无法在远程新建,需要通过busybox容器来解决。
南浦月 提供的方法,小米路由器 AX9000 开发版固件直接获取 SSH 第一步:创建busybox容器
第二步:开启 tty
第三步:挂载主机根目录
第四步:最后,单击 “Deploy the container” 部署容器
第五步:返回容器列表,单击 busybox 容器后的回形针图标
第六步:如果目录不存在需要先手动创建
ls mkdir /mnt/docker_disk/mi_docker/clash/ cd /mnt/docker_disk/mi_docker/clash/ ls -l
第七步:编辑或者新建,通过vi命令实现
vi config.yaml
第八步:找机场提供一个Clash yaml文件 将内容复制到刚刚 config.yaml 文件里,dns:以上部分需要替换成。
port: 7890 socks-port: 7891 redir-port: 7892 allow-lan: true mode: rule log-level: info external-controller: '0.0.0.0:9090'
如果电脑本地有装Clash客户端,可以从【打开配置文件夹】中,找到config.yaml
2、共享文件上传config 小米WiFi App 工具箱界面,或者米家App产品管理界面,可以看到”SAMBA“功能。开启后,上传本地config.yaml文件上去
五、为Clash安装YACD 第一步:增加YACD容器。如下图添加 Maunual network port publishing
host 1234 container 80
第二步:通过 192.168.31.1:1234 访问YACD
注意默认是 127.0.0.1:9090 是本地电脑并不是AX9000上,一定要输入AX9000的地址
第三步:可以通过YACD界面,切换代理,查看流量和日志
六、客户端配置代理 1、Mac
2、iPhone/iPad
3、windows
到这里已经完成所有配置,可以尝试访问Google了 七、自动更新订阅 还遗留一个小问题,就是机场会定期更新代理,我们现在的方法是手工修改的,是不会自动更新。下面来自动更新。
第一步:得到机场的Clash订阅地址,我用机场是在普通订阅地址后面加上&flag=clash ,机场会自动返回clash格式的配置文件
天坑3,现在机场一般默认是SSR的订阅地址,SSR地址 Clash是不认的,会报 cannot unmarshal !!str
c3M6Ly9...
into provider.ProxySchema" 错误。我在翻机场帮助文档时才解决这里问题。 https://sub.iplck.xyz/api/v1/client/subscribe?token=fxxxxxxxxxxxxxxxxx&flag=clash 第二步:使用Clash支持的proxy-providers 实现订阅代理自动更新
port: 7890 socks-port: 7891 redir-port: 7892 allow-lan: true mode: rule log-level: info external-controller: '0.0.0.0:9090' dns: enable: true ipv6: false default-nameserver: [223.5.5.5, 119.29.29.29] enhanced-mode: redir-host fake-ip-range: 198.18.0.1/16 use-hosts: true nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query'] fallback: ['tls://1.0.0.1:853', 'https://cloudflare-dns.com/dns-query', 'https://dns.google/dns-query'] fallback-filter: { geoip: true, ipcidr: [240.0.0.0/4, 0.0.0.0/32] } proxy-providers: proxyprov: type: http path: ./proxyprov.yaml #文件名需要与provider名称一致 # 下面到URL里就是你自己到机场订阅地址。注意 url: 与 https 之间有一个空格 # https://www.iplcq.com/#/register?code=6Gxs2xhz url: https://sub.iplck.xyz/api/v1/client/subscribe?token=ffff&flag=clash interval: 3600 health-check: enable: true url: http://www.gstatic.com/generate_204 interval: 300 proxy-groups: - name: IPLC type: select proxies: - URL-TEST use: - proxyprov - name: URL-TEST type: url-test url: http://www.gstatic.com/generate_204 interval: 3600 use: - proxyprov - name: FALLBACK type: fallback url: http://www.gstatic.com/generate_204 interval: 3600 use: - proxyprov rules: - 'DOMAIN,api.iplcx.com,DIRECT' - 'DOMAIN-SUFFIX,services.googleapis.cn,IPLC' - 'DOMAIN-SUFFIX,xn--ngstr-lra8j.com,IPLC' - 'DOMAIN,safebrowsing.urlsec.qq.com,DIRECT' - 'DOMAIN,safebrowsing.googleapis.com,DIRECT' - 'DOMAIN,developer.apple.com,IPLC' - 'DOMAIN-SUFFIX,digicert.com,IPLC'
八、性能表现: 1、网络性能:可以看上面的客户端配置,是全量流量代理到7890端口,我测试通过Clash 7890端口 与 直连路由器 80端口,测速网、http://fast.com、腾讯ping,数值都基本一致。可见docker中的容器代理性能表现很棒。
2、AX9000路由器压力:查看AX9000内存 ,不开docker内存58%,开启后 70%。当通过代理播放youtube 4K视频,路由器内存基本一致,可见这点流量对于AX9000小意思。因此我就没开启AX9000到虚拟内存,因为用不到。
本文作者:我本无罪
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!