使用Terraform部署AWS Aurora Postgres RDS无法公网访问问题排查
Aurora Postgres集群公网访问故障排查方案
- 第一步:确认数据库子网路由配置
你调用的VPC模块虽然开启了create_database_internet_gateway_route参数,但是首先要确认你传入的var.vpc_database_subnets属于公网网段,且子网关联的路由表存在0.0.0.0/0指向互联网网关(IGW)的路由规则。如果数据库子网默认关联私有路由表,仅指向NAT网关,就算实例开启公网访问属性也无法接收公网入站请求。
同时要确认数据库子网开启了「自动分配公网IPv4地址」属性,你可以在VPC控制台的子网配置页查看该选项,也可以在Terraform的VPC模块中新增map_public_ip_on_launch = true配置给数据库子网。 - 第二步:验证实例公网IP分配状态
登录AWS RDS控制台,查看Aurora集群下每个实例的详情页,确认「公网IPv4地址」字段有公网地址显示。如果没有该字段,说明publicly_accessible = true配置未生效,通常是子网不符合公网部署要求导致。 - 第三步:排除网络限制问题
- 本地网络测试:执行命令
nc -zv <你的集群端点> 5432,如果返回连接失败,先测试本地是否能访问其他公网的5432端口,排除本地运营商封禁5432端口的可能。 - 域名解析验证:执行命令
nslookup <你的集群端点>,确认返回的IP是公网IP段,而非10.x.x.x、172.16-31.x.x、192.168.x.x这类内网IP。 - 网络ACL检查:确认数据库子网关联的VPC网络ACL没有封禁5432端口的入站、出站流量,默认网络ACL为全通状态,如果你手动修改过ACL规则需要额外校验。
- 本地网络测试:执行命令
- 安全优化建议
你当前安全组将5432端口对0.0.0.0/0全开放存在极高被攻击风险,排查完成后建议将cidr_blocks修改为你本地的公网IP段,例如["114.xxx.xxx.xxx/32"],仅允许指定来源访问数据库。
内容的提问来源于stack exchange,提问作者George Ferreira
相关产品推荐
相关产品推荐

