关于AIO(ALL IN BOOM)中旁路网关拒绝安卓访问,但苹果/pc设备正常的问题
〇、这个问题原理没搞明白
最终只是使用docker network rm NETWORK-ID
把一个网络删除了.
然后安卓访问就正常了!
一、网络拓扑图
二、前情提要
在内网中使用Cloudflare Zero-Trust的Tunnel进行内网穿透,访问alist等其他通过pve中docker起来的服务.
因为Cloudflare在中国大陆没有节点的原因,感觉Tunnel把内网资源传出去的过程会很慢,
加上我在内网搞了个openwrt+openclash
的旁路网关.
所以我打算指定Cloudflare这个容器的网关和dns为192.168.50.2
,
使用旁路网关中的openclash
加速资源传输过程.
三、爆炸过程
3.1 docker-compose配置
version: '3'
services:
cloudflared:
image: cloudflare/cloudflared:latest
command: tunnel --no-autoupdate run --token xxxxxx
networks:
openwrt:
ipv4_address: 192.168.50.210
dns:
- 192.168.50.2
- 223.5.5.5
restart: always
networks:
openwrt:
driver: bridge
ipam:
config:
- subnet: 192.168.50.0/24
gateway: 192.168.50.2
3.2 启动命令
docker-compose up -d
3.3 启动后的表现
内网的所有指定网关/DNS为
192.168.50.2
的设备无法使用openwrt
的DNS服务- 访问直连的链接(如https://www.baidu.com)都会出现找不到ip的问题
过一会使用
docker ps -a
- 发现
cloudflared
这个容器已经Exit(1)
了
- 发现
pc/苹果设备已经可以正常使用
openwrt
的DNS服务了- 指定网关/DNS为
192.168.50.2
的设备,访问https://www.google.com
是正常的
- 指定网关/DNS为
此时安卓设备访问不了openwrt的ip地址:
192.168.50.2
了- 不管在安卓上有没有指定网关/DNS为
192.168.50.2
,chrome访问结果是"ERR_CONNECTION_REFUSED"
- 使用
termux
执行ssh root@192.168.50.2
,输入密码前的所有步骤都是正常的,只是输对了密码都会提示permission denied
- 不管在安卓上有没有指定网关/DNS为
不管在苹果/pc设备上有没有指定网关/DNS为
192.168.50.2
- 访问openwrt的管理页面
http://192.168.50.2
是正常的
- 访问openwrt的管理页面
4. 问题解决
4.1 删掉cloudflared
这个容器
docker remove Container-ID
4.2 删除给cloudflared
创建的网络
root@pve:~/docker/cloudflare# docker network ls
NETWORK ID NAME DRIVER SCOPE
421a2ba25e82 alist_default bridge local
246c480bfc7f bridge bridge local
8abc743abbc3 cloudflare_openwrt bridge local
1be41448b667 host host local
8d4a82a656ba none null local
84dde4a12e92 root_default bridge local
root@pve:~/docker/cloudflare# docker network rm 8abc743abbc3
8abc743abbc3
5. 疑问
- 为什么会出现这个情况,怎么排查这个原因?
- 基于我前情提要里的需求,
docker-compose
文件内容有问题吗?