跨不同VPC从EC2实例访问RDS实例超时问题排查[2024]
跨VPC EC2访问RDS超时的排查方案
针对你遇到的跨VPC EC2访问RDS超时问题,结合已执行的操作,补充以下关键排查步骤:
- 确认VPC Peering连接状态:检查Peering连接是否处于
Active状态,若为Pending Acceptance则无法建立通信,需确保双方VPC都完成接受操作。 - 补全RDS子网的路由表配置:RDS实例关联的所有子网(包括公有和私有子网)对应的路由表,都必须添加指向EC2所在VPC IPv4 CIDR的Peering路由。因为RDS会随机使用子网内的IP,遗漏任意一个子网的路由表都会导致连接超时。
- 检查EC2安全组的出站规则:除了配置RDS安全组的入站规则,EC2的安全组需允许出站流量到RDS的数据库端口(如MySQL的3306、PostgreSQL的5432),目标可设置为RDS所在VPC的CIDR范围或RDS私有IP。
- 测试基础网络连通性:在EC2实例上执行以下命令验证:
ping <RDS私有IP>:测试网络层是否可达,若不通则优先排查路由或VPC Peering配置;telnet <RDS私有IP> <数据库端口>或nc -zv <RDS私有IP> <数据库端口>:测试端口是否开放,若ping通但端口不通,再回到安全组或NACL排查。
- 验证RDS端点的DNS解析:在EC2上执行
nslookup <RDS端点>,确认返回的是RDS所在VPC的私有IP。若解析到公网IP,需关闭RDS的Publically Accessible选项,同时确保RDS的子网组仅包含私有子网,重新测试解析结果。 - 复核NACL的双向规则:NACL是无状态的,需确保:
- RDS所在VPC的NACL:允许入站(源为EC2 VPC CIDR,目标端口为数据库端口)、允许出站(源端口为数据库端口,目标为EC2 VPC CIDR);
- EC2所在VPC的NACL:允许出站(目标为RDS VPC CIDR,目标端口为数据库端口)、允许入站(源为RDS VPC CIDR,源端口为数据库端口)。
- 确认RDS实例状态:检查RDS实例是否处于
Available状态,维护、备份等状态可能导致临时无法连接。
内容的提问来源于stack exchange,提问作者Amiteshwar
相关产品推荐
相关产品推荐

