Destination Host Unreachable报错

PING Tair实例内网地址时,如果出现Destination Host Unreachable报错,请参考本文提供的解决方案。

问题现象

ECS实例或Docker容器中无法PINGTair实例的内网地址,返回Destination Host Unreachable报错。

PING r-bp1****l7ein86xv6m.redis.rds.aliyuncs.com(172.17.0.31) 56(84) bytes of data.
From xxxx (172.17.0.1) icmp_seq=1 Destination Host Unreachable
From xxxx (172.17.0.1) icmp_seq=2 Destination Host Unreachable
From xxxx (172.17.0.1) icmp_seq=3 Destination Host Unreachable

问题原因

通常是ECS实例或Docker容器的内网网段与Tair实例的网段冲突,您可以参考以下步骤进行验证。

  1. PING Tair实例的内网地址,查看其内网IP。

    本示例中,Tair实例的内网IP172.17.0.31

  2. 查询客户端服务的路由表。

    Docker容器(Linux系统)为例,执行route -n命令查看路由,返回信息类似如下。

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         172.17.2.253    0.0.0.0         UG    0      0        0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
    172.17.0.0      0.0.0.0         255.255.255.0   U     0      0        0 br-350b446c181a

    返回信息显示网卡br-350b446c181a的网段为172.17.0.0/24,与Tair实例内网IP地址冲突,导致Docker无法路由到Tair实例。

解决方案

方案一:修改客户端服务的默认网段

Docker容器(Linux系统)为例。

重要
  • 停止Docker或者修改Docker默认网段会中断业务,建议业务低峰期进行操作。

  • 修改Docker默认网段时请确保与任何现有容器和应用程序的网络设置兼容,以避免潜在的连接问题。

  1. 停止Docker服务。

    sudo systemctl stop docker
  2. 编辑Docker配置文件(通常位于/etc/docker/daemon.json/etc/docker/daemon.conf,具体文件名可能有所不同)。

    sudo vim /etc/docker/daemon.json

    确保文件内容如下(修改前请备份原文件)。

    {
        "bip":"新的网络网段"
    }

    例如,将新的网络网段设置为192.168.0.1/24。

  3. 保存并关闭配置文件。

  4. 启动Docker服务使修改生效。

    sudo systemctl start docker

方案二:切换Tair实例的交换机

您可以切换Tair实例的交换机,以确保实例的交换机网段与客户端的网段不发生冲突。

说明
  • 由于不同VPC之间无法内网互通,建议仅切换同一VPC中的交换机。

  • 切换过程中会有30秒闪断,请在业务低峰期操作并确保应用程序具有重连机制。

相关文档

连接TairRedis实例