本文介绍了ECS通过内网以及ECS以外的其他设备通过外网无法访问RDS SQL Server实例时的解决方案。
问题描述
使用ECS实例通过内网连接RDS SQL Server实例时,提示以下错误信息。
无法连接到XXX。Cannot connect to XXX。
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: TCP Provider, error: 0 - 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。) (Microsoft SQL Server,错误:10060或258)
解决方案
阿里云提醒您:
如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
ECS通过内网无法访问RDS的解决办法
检查ECS实例的内网IP地址是否已添加到RDS实例的白名单。
通过RDS内网地址连接RDS实例前,需要先将ECS内网IP添加到RDS白名单。相关操作,请参见如何查询ECS实例的IP地址和如何设置RDS白名单。
说明如果仅将ECS外网IP地址添加到RDS白名单,则无法通过内网连接RDS。
检查ECS和RDS实例是否位于不同的地域。
ECS实例和RDS实例需要位于同一地域才能内网互通。可以是同一地域的相同或不同可用区。
如果ECS实例和RDS实例位于不同的地域,则无法直接通过内网互通,请参见以下方法处理:
方法一:
方法二:
ECS实例使用RDS实例的公网连接地址连接RDS实例,这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址。
方法三:
使用云企业网打通跨地域VPC网络(前提是源和目标的网络类型都是专有网络VPC),详情请参见云企业网入门概述。
检查ECS和RDS的网络类型是否相同(都是专有网络或都是经典网络)。
如果网络类型不同,一个是经典网络,一个是专有网络,请参见以下方法处理:
重要阿里云各产品经典网络正在逐步下线中,对于RDS实例和ECS实例,建议您尽快将经典网络切换到VPC网络。具体详情,请参见【产品/功能变更】RDS数据库经典网络下线计划和【下线公告】停止提供阿里云经典网络类型的ECS实例相关服务。
ECS实例采用专有网络而RDS实例采用经典网络的场景:
方法一(推荐):将RDS实例从经典网络切换为专有网络(需要切换到待连接的ECS实例所在的VPC)。具体操作,请参见更改网络类型。
方法二:ECS实例使用RDS实例的公网地址连接RDS实例,这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址。
ECS实例采用经典网络而RDS实例采用专有网络的场景:
方法一(推荐):将ECS实例从经典网络迁移到待连接的RDS实例所在的VPC,可在RDS实例详情页网络类型右侧单击查看连接详情查看RDS实例所在VPC ID。具体操作,请参见ECS实例从经典网络迁移到专有网络。
方法二:开通ClassicLink功能,使经典网络的ECS实例可以和VPC中的RDS实例通过内网互通。
说明若开通ClassicLink功能后网络不通,请参见建立ClassicLink连接后经典网络和VPC网络不通的排查思路。
方法三:ECS实例使用RDS实例的公网地址连接RDS实例,这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址。
如果ECS和RDS实例的网络类型都是专有网络,则检查ECS与RDS实例是否位于不同的VPC。
如果专有网络不同,请参见以下方法进行处理:
方法一(推荐):将ECS实例VPC迁移到RDS实例所在VPC。具体操作,请参见更换ECS实例的VPC。
方法二:将RDS实例VPC迁移到ECS实例所在VPC。具体操作,请参见切换专有网络VPC和虚拟交换机。
方法三:在两个VPC之间建立云企业网。
方法四:ECS实例使用RDS实例的公网地址连接RDS实例。这种方式的性能、安全性、稳定性较差。如何申请外网地址,请参见申请SQL Server外网地址。
检查白名单是否设置成了
0.0.0.0
,正确格式应该为0.0.0.0/0
。重要0.0.0.0/0
表示允许任何IP访问RDS实例,有安全风险,请谨慎使用。检查ECS实例中配置的RDS内网地址和端口是否正确。更多详情,请参见查看内外网地址和端口。
ECS以外的设备无法访问RDS的解决办法
建议在访问RDS时使用内网域名而不是IP地址,IP地址可能随着实例的迁移而变动。
ECS以外的设备访问RDS时,只能通过外网连接。如果连接失败,请参见如下方法解决。
检查您使用的连接地址是否为RDS的内网地址。
您需要修改连接地址为RDS外网地址。如何获取外网地址,请参见查看外网连接地址。
说明ECS和DMS以外的设备无法通过内网访问RDS(除非使用物理专线)。
检查是否已设置RDS白名单。如果未设置,请参见设置白名单。
检查白名单是否设置成了
0.0.0.0
,正确格式为0.0.0.0/0
。重要0.0.0.0/0
表示允许任何IP访问RDS实例,有安全风险,请谨慎使用。如果您已设置白名单,但还是连接失败,很可能是因为您在白名单中添加的设备公网IP地址并非设备真正的出口IP地址。原因如下所示:
公网IP地址不固定,可能会变动。
IP地址查询工具或网站查询的公网IP地址不准确。
说明如何确认设备公网IP地址,请参见SQL Server如何确定外部服务器/客户端的公网IP地址。
适用于
云数据库RDS SQL Server版