为什么Synology docker容器无法ping通其主机IP?

时间:2020-07-18 09:04:31

标签: docker networking synology

情况:我有一个服务在docker容器中运行,该容器托管在DSM软件包管理器中提供的官方Synology docker软件包中。此服务需要http-连接到另一个服务,该服务未在docker中运行,但恰好托管在同一Synology主机(相同的LAN IP地址)上。与服务的http连接持续超时。

操作:对此进行调查,发现我可以从容器ping我LAN上的任何其他IP(例如192.168.1.4),但可以ping到容器的主机IP(192.168.1.2)超时。我的防火墙启用了ICMP。

问题:为什么容器无法成功ping通主机IP?

示例:以下简单示例概述了问题:

root@synology# docker run --name test -ti ubuntu /usr/bin/env sh
# apt-get update
[...]
# apt-get install iputils-ping
[...]
# ping 192.168.1.4
PING 192.168.1.4 (192.168.1.4) 56(84) bytes of data.
64 bytes from 192.168.1.4: icmp_seq=1 ttl=63 time=0.309 ms
64 bytes from 192.168.1.4: icmp_seq=2 ttl=63 time=0.420 ms
64 bytes from 192.168.1.4: icmp_seq=3 ttl=63 time=0.316 ms
^C
--- 192.168.1.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.309/0.348/0.420/0.050 ms
# ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
^C
--- 192.168.1.2 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 3999ms

# exit

我尝试过的事情:

  1. 从Shell ping主机IP直接在主机上运行-可以:
      root@synology# ping 192.168.1.2
      PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
      64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.044 ms
      64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.023 ms
      ^C
      --- 192.168.1.2 ping statistics ---
      2 packets transmitted, 2 received, 0% packet loss, time 999ms
      rtt min/avg/max/mdev = 0.023/0.033/0.044/0.012 ms
    
  2. 禁用防火墙-无效,仍然无法从容器内部ping 192.168.1.2
  3. 在我的Windows桌面(192.168.1.101)上运行相同的命令-从该计算机上的Docker桌面中托管的Docker容器ping到192.168.1.101即可:
      d:\>ipconfig
      [...]
      Ethernet adapter Ethernet:
    
      Connection-specific DNS Suffix  . : home
      Link-local IPv6 Address . . . . . : [...]
      IPv4 Address. . . . . . . . . . . : 192.168.1.101
      Subnet Mask . . . . . . . . . . . : 255.255.255.0
      Default Gateway . . . . . . . . . : 192.168.1.1
      [...]
      d:\>docker run --name test -ti ubuntu /usr/bin/env sh
      [...]
      # whoami
      root
      # apt-get update
      [...]
      # apt-get install iputils-ping
      [...]
      # ping 192.168.1.101
      PING 192.168.1.101 (192.168.1.101) 56(84) bytes of data.
      64 bytes from 192.168.1.101: icmp_seq=1 ttl=37 time=0.627 ms
      64 bytes from 192.168.1.101: icmp_seq=2 ttl=37 time=2.51 ms
      64 bytes from 192.168.1.101: icmp_seq=3 ttl=37 time=1.51 ms
      ^C
      --- 192.168.1.101 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2041ms
      rtt min/avg/max/mdev = 0.627/1.548/2.509/0.768 ms
      # exit
    
  4. 检查内部IP冲突:桥接网络容器正在连接到正在运行的子网172.17.0.0/16,因此与LAN子网没有冲突。我还检查了与其他容器的冲突。

我没有对Synology docker软件包进行任何特殊调整,几乎所有东西都是开箱即用的(除了我在那里安装的东西)。我不使用,甚至尝试在包装盒上配置群集或Kubernetes。只是泊坞窗。

我处于机智的尽头。为什么我不能ping /连接到主机IP?

1 个答案:

答案 0 :(得分:0)

我的新Synology遇到了完全相同的问题,在寻找解决方案时,我遇到了这个问题。幸运的是,我可以解决系统上的问题,这只是一个勾号,我意外地启用了多个网关。 此设置位于“控制面板”>“网络”>“高级设置”

只需取消选中即可在我的系统上解决该问题