PING Tair实例内网地址时,如果出现Destination Host Unreachable
报错,请参考本文提供的解决方案。
问题现象
从ECS实例或Docker容器中无法PING通Tair实例的内网地址,返回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实例的网段冲突,您可以参考以下步骤进行验证。
PING Tair实例的内网地址,查看其内网IP。
本示例中,Tair实例的内网IP为
172.17.0.31
。查询客户端服务的路由表。
以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默认网段时请确保与任何现有容器和应用程序的网络设置兼容,以避免潜在的连接问题。
停止Docker服务。
sudo systemctl stop docker
编辑Docker配置文件(通常位于
/etc/docker/daemon.json
或/etc/docker/daemon.conf
,具体文件名可能有所不同)。sudo vim /etc/docker/daemon.json
确保文件内容如下(修改前请备份原文件)。
{ "bip":"新的网络网段" }
例如,将新的网络网段设置为192.168.0.1/24。
保存并关闭配置文件。
启动Docker服务使修改生效。
sudo systemctl start docker
方案二:切换Tair实例的交换机
您可以切换Tair实例的交换机,以确保实例的交换机网段与客户端的网段不发生冲突。
由于不同VPC之间无法内网互通,建议仅切换同一VPC中的交换机。
切换过程中会有30秒闪断,请在业务低峰期操作并确保应用程序具有重连机制。