连接RDS实例失败,ping RDS实例内网地址时提示Destination Host Unreachable

连接RDS实例失败,且ping RDS内网地址时提示Destination Host Unreachable

问题现象

从ECS实例无法ping通RDS内网地址,返回Destination Host Unreachable

PING rm-bpxxxx.mysql.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

问题原因

原因通常是RDS实例的内网网段与其他服务的网段冲突。

分析过程

  1. 使用PING命令ping RDS内网地址,可以看到RDS内网IP。从上述例子中,可以看到RDS实例内网IP为172.17.0.31

  2. 以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,与RDS内网IP地址冲突,导致ECS实例无法路由到RDS实例。

    这种情况通常是容器服务的网段与RDS网段冲突。下面以容器服务为例,介绍如何解决路由冲突问题。

解决方案

切换RDS实例的交换机

您可以切换RDS实例的交换机,使实例的交换机网段不与容器服务的网段冲突。具体操作,请参见切换RDS SQL Server实例的交换机

重要

默认情况下,不同VPC之间无法内网互通。建议仅切换交换机,不切换VPC,这样不会影响其他阿里云服务与RDS实例的内网连接。

其他引擎交换机的切换方法,请参见:

相关文档