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

通过VPC Peering从本地连接RDS的技术问题求助

我之前碰到过几乎一模一样的场景,给你几个关键的排查和配置步骤,应该能解决你的问题:

核心问题:DNS解析 + 路由的联动配置

你遇到的本质问题是:本地请求RDS endpoint时,要么解析到了公网IP(不走peering),要么解析到了私网IP但路由没打通。下面是具体的解决步骤:

1. 开启VPC对等连接的DNS解析权限

这是最关键的一步,默认情况下VPC1的DNS不会把VPC2里的RDS endpoint解析为私网IP,必须手动开启:

  • 登录AWS控制台,进入VPC服务,找到你的VPC Peering连接
  • 分别编辑VPC1侧和VPC2侧的连接选项,勾选「Allow DNS resolution from peer VPC」
  • 这个配置会让VPC1的DNS服务器(即VPC网段的第二个IP,比如10.0.0.0/16的VPC对应10.0.0.2)能解析VPC2内RDS的私网IP,而不是返回公网IP

2. 确保本地DNS能正确转发RDS域名查询到AWS

既然你本地能解析Route53的主机名,那可以做以下配置:

  • 如果你的RDS使用的是AWS默认的*.rds.amazonaws.com域名:把这个域名的DNS查询转发到VPC1的DNS服务器(比如10.0.0.2),这样本地解析时会拿到VPC2内的RDS私网IP
  • 如果你用了Route53私有托管区域:在私有托管区域里添加一条A记录,把RDS的endpoint指向它的私网IP(可以在RDS控制台的实例详情里找到私网IP),这样本地解析时直接返回私网IP

3. 验证路由表的双向连通性

虽然你说已经配置了路由,但再仔细核对一遍:

  • VPC1的关联路由表(和DirectConnect网关绑定的那个):添加一条路由,目标是VPC2内RDS所在子网的网段,下一跳选择你的VPC Peering连接ID
  • VPC2的关联路由表(RDS所在子网使用的那个):添加一条路由,目标是你的本地网络网段,下一跳选择VPC Peering连接ID
  • 确保这两条路由都处于「活跃」状态

4. 检查安全组和NACL的规则

很多时候连通性问题是安全组/NACL拦截了流量:

  • RDS的安全组:添加入站规则,允许来自本地网络IP段的数据库端口(比如MySQL用3306,PostgreSQL用5432)的访问
  • VPC1和VPC2的NACL:确保入站和出站规则都允许双向流量:入站允许本地网段到RDS端口的请求,出站允许RDS到本地网段的响应流量(临时端口范围一般是1024-65535)

5. 用EC2实例验证流量路径

如果还是无法连通,建议在VPC1里启动一个测试EC2实例,用来排查:

  • 登录EC2,执行nslookup <你的RDS endpoint>,确认解析到的是VPC2内的私网IP(而不是公网IP)
  • 用telnet <RDS endpoint> <端口>或nc -zv <RDS endpoint> <端口>测试连通性,如果能通,说明VPC间的peering和RDS配置没问题
  • 如果EC2能访问但本地不行,那问题大概率出在本地到VPC1的DirectConnect配置(比如本地路由没指向VPC2网段,或者DNS转发没生效)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:25:44