当前位置: 首页 > 知识库问答 >
问题:

局域网AIO中在docker-compose指定容器联网方式,竟然会导致安卓无法使用旁路网关,但是其他设备正常?

古刚洁
2023-09-26

关于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: alwaysnetworks:  openwrt:    driver: bridge    ipam:      config:        - subnet: 192.168.50.0/24          gateway: 192.168.50.2

3.2 启动命令

docker-compose up -d

3.3 启动后的表现

  1. 内网的所有指定网关/DNS为192.168.50.2的设备无法使用openwrt的DNS服务

    • 访问直连的链接(如https://www.baidu.com)都会出现找不到ip的问题
  2. 过一会使用docker ps -a

    • 发现cloudflared这个容器已经Exit(1)
  3. pc/苹果设备已经可以正常使用openwrt的DNS服务了

    • 指定网关/DNS为192.168.50.2的设备,访问https://www.google.com是正常的
  4. 此时安卓设备访问不了openwrt的ip地址: 192.168.50.2

    • 不管在安卓上有没有指定网关/DNS为192.168.50.2,chrome访问结果是"ERR_CONNECTION_REFUSED"
    • 使用termux执行ssh root@192.168.50.2,输入密码前的所有步骤都是正常的,只是输对了密码都会提示permission denied
  5. 不管在苹果/pc设备上有没有指定网关/DNS为192.168.50.2

    • 访问openwrt的管理页面http://192.168.50.2是正常的

4. 问题解决

4.1 删掉cloudflared这个容器

docker remove Container-ID

4.2 删除给cloudflared创建的网络

root@pve:~/docker/cloudflare# docker network lsNETWORK ID     NAME                 DRIVER    SCOPE421a2ba25e82   alist_default        bridge    local246c480bfc7f   bridge               bridge    local8abc743abbc3   cloudflare_openwrt   bridge    local1be41448b667   host                 host      local8d4a82a656ba   none                 null      local84dde4a12e92   root_default         bridge    localroot@pve:~/docker/cloudflare# docker network rm 8abc743abbc38abc743abbc3

5. 疑问

  1. 为什么会出现这个情况,怎么排查这个原因?
  2. 基于我前情提要里的需求,docker-compose文件内容有问题吗?

共有1个答案

申思远
2023-09-26

这个问题似乎是由于 Docker Compose 中指定的网络配置与实际环境中的网络配置不匹配导致的。在 Docker Compose 中,你为 cloudflared 服务指定了 192.168.50.210 作为 IPv4 地址,但实际上这个地址可能并不存在或者被其他服务占用,这导致服务无法正常启动。

首先,你需要确认 192.168.50.210 是否是可用的 IP 地址。你可以通过以下命令查看你的网络接口的 IP 地址:

ifconfig

或者在 Linux 系统中:

ip addr show

如果你发现 192.168.50.210 已经被其他服务使用,你需要更换一个可用的 IP 地址。

其次,你的 docker-compose.yml 文件中指定了两个 DNS 服务器:192.168.50.2223.5.5.5。这可能是问题的原因之一,因为如果你的设备无法解析这两个 DNS 服务器,可能会导致无法正常使用 openwrt 的 DNS 服务。你可以尝试只指定一个 DNS 服务器,或者更换为你的设备可以解析的 DNS 服务器。

最后,如果以上步骤都无法解决问题,你可能需要检查你的网络硬件、驱动程序或者其他网络配置,以确定是否存在其他问题。在这种情况下,你可能需要寻求网络管理员或者专业人士的帮助。

 类似资料:
  • 问题内容: 从Docker 1.10(和libnetwork更新)开始,我们可以手动为用户定义网络内的容器提供IP,这很酷! 我想在局域网中给容器一个IP地址(就像我们可以在“桥接”模式下使用虚拟机一样)。我的局域网是192.168.1.0/24,我的所有计算机内部都有IP地址。而且我希望我的容器的IP处于此范围内,以便可以从LAN中的任何位置(不使用NAT/ PAT / etc …)访问它们。

  • 本文向大家介绍python实现扫描局域网指定网段ip的方法,包括了python实现扫描局域网指定网段ip的方法的使用技巧和注意事项,需要的朋友参考一下 一、问题由来 工作的局域网中,会接入很多设备,机器人上的网络设备就2个了,一个巨哥红外,一个海康可见光。机器人还有自身的ip。 有时候机器人挂的多了,设备维修更换中,搞来搞去就不记得ip是什么,用自带的软件的确能扫出来,但是这就要开两个window

  • 物联网设备是非标准设备,可以相互无线连接到网络并能够传输数据。物联网设备正在扩大互联网连接,超越了智能手机,笔记本电脑,平板电脑和台式机等标准设备。通过技术嵌入这些设备使我们能够通过网络进行通信和交互,并且可以远程监控和控制它们。 有许多种基于IEEE 802.15.4标准的物联网设备。这些设备包括无线电池,可连接的传感器板和接口板,对研究人员和开发人员非常有用。 物联网设备包括计算机设备,软件,

  • 该部分 API 将帮助您使用光环上基于 Wi-Fi 的组建局域网,并在局域网内实现广播通信。 省略代码中的halocode 注意:该部分 API 省略了“halocode.”,本篇提及的所有 API 均省略了“halocode.” ,如 led_driver.off( )实际为halocode.led_driver.off()。mBuild 电子模块平台的所有功能均维护在halocode库中,因此

  • 光环板之间可以组成局域网,组成局域网的设备之间可以相互通讯,使用一个光环板就可以控制其他光环板。 用光环板A控制光环板B 让我们新建一个项目,使用两块光环板,实现用光环板A控制光环板B。 启动光环板A的局域网 1. 选择“设备”,添加光环板。用USB数据线将光环板与电脑相连,点击“连接”,连接设备。 2. 启用上传模式 3. 添加事件类积木 当光环板启动时,和局域网类积木 建立名为(mesh1)的

  • 问题内容: 我正在尝试制作一些docker容器来存放我的一些日常工具。但是我的许多工具都依赖于能够连接到设备(通过wifi)以提取数据。 我一直在做研究,但很困惑,想了解要支持这种情况需要做什么。我知道通常docker容器是服务器而不是客户端。但是我读过关于人们做相反的事情。 我正在尝试找出进行此操作所需的更改/配置类型。 问题答案: 默认情况下,Docker将在您的物理服务器上创建一个虚拟网络。