You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法连接调整公网访问权限后的私有RDS(EC2及本地均失败)

PostgreSQL RDS连接全失败排查思路

一、先确认RDS实例本身状态

  • 登录AWS控制台,查看RDS实例的状态是否为available,排查是否存在维护、故障或重启中的异常提示
  • 检查RDS的公网访问属性:确认“Publicly accessible”设置为Yes,同时验证实例的弹性公网IP是否正常绑定
  • 查看RDS日志:在控制台“日志”选项卡下载或查看postgresql.log,搜索是否有拒绝连接、认证失败或监听地址异常的记录

二、排查安全组配置(优先级高于NACL)

针对EC2内部连接失败:

  • 确认RDS关联的安全组入站规则:需包含PostgreSQL (5432)协议,源为EC2实例所在的安全组ID(如sg-xxxxxx),而非仅允许公网IP
  • 检查EC2实例的安全组出站规则:确认是否允许访问5432端口(默认出站全通,若有自定义规则需验证)

针对本地连接失败:

  • 确认RDS安全组入站规则中,是否添加了本地公网IP的5432端口访问:可通过curl ifconfig.me获取本地公网IP,添加规则PostgreSQL (5432),源为xxx.xxx.xxx.xxx/32
  • 可临时添加0.0.0.0/0的5432端口访问测试是否为IP范围问题,测试后立即删除该规则避免安全风险

三、排查VPC网络ACL(NACL)

  • 检查RDS所在子网的入站NACL规则:必须允许来自EC2所在子网IP段(或EC2安全组对应IP)以及本地公网IP的5432端口流量,规则优先级(编号越小越高)需高于拒绝规则
  • 检查出站NACL规则:必须允许RDS向EC2和本地IP返回的响应流量(可临时设置为允许所有出站流量测试)
  • 注意:NACL是无状态的,入站允许的同时必须对应出站允许响应流量,否则连接会被截断

四、检查网络路由配置

  • 对于EC2连接RDS:确认EC2所在子网的路由表是否存在指向RDS所在VPC的内网路由(同VPC默认存在,跨VPC需验证对等连接/中转网关配置)
  • 对于本地连接RDS:确认RDS所在子网的路由表是否有指向互联网网关(IGW)的路由,否则公网访问请求无法到达RDS

五、验证连接参数

  • 本地测试时,使用RDS的公网端点(控制台“Connectivity & security”下的“Endpoint”),不要用内网端点
  • 确认连接命令的端口、用户名、数据库名正确,测试命令示例:
    psql -h <RDS公网端点> -p 5432 -U <主用户名> -d <数据库名>
    
  • EC2上测试时,切换为RDS内网端点执行上述命令

六、排查PostgreSQL内部配置

  • 查看RDS参数组,确认listen_addresses是否设置为*(RDS默认配置为允许所有地址,若自定义修改过需调整)
  • 验证数据库用户的连接权限:用主用户登录RDS后执行SELECT * FROM pg_hba_rule;,排查是否存在IP限制规则

内容的提问来源于stack exchange,提问作者Adolfo Esparza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:42:09