VPC对等连接无法连接RDS和与之不同区域的EC2,但在相同对等连接VPC的EC2之间是可以的。

0

【以下的问题经过翻译处理】 我在us-east和eu-west之间建立了节点连接,使用了以下方法:

us-east:创建了一个公开面向的RDS和一个在同一VPC上的EC2 [1]; us-west:在VPC [2] 上创建了一个EC2; 为VPC [1]与VPC [2] (us-east到eu-west)创建了一个节点连接; 设置节点连接以解析DNS主机(两端); 更新了双方的路由表以接受对应VPC的CIDR范围; 更新了双方的安全组以允许来自CIDR范围的入站和出站连接。

我能够成功从eu-west的EC2向us-east的EC2实例发送ping请求来通信,这表明VPC对等隧道正确设置。

但是,当我尝试从eu-west的EC2连接到us-east的RDS mySQL实例时,无法解析它。

我使用netcat测试,使用以下方法:

nc -zv databasex.xxxxxx.us-east-2.rds.amazonaws.com 3306

已经附加到RDS的安全组有一个允许从与eu-west VPC相关的CIDR范围的端口3306连接的规则,就像我在EC2安全组上做的一样。我已经查阅了许多文章、帮助帖子和其他事情,看起来我已经正确地设置了所有的东西,所以我不知道为什么我不能从这个对等连接连接到RDS。

当然,当我添加一条记录到RDS安全组中,允许从eu-west的公共IP连接时,它会连接,但是我想利用节点连接而不是使用通过Internet网关的流量。请告诉我是否有必要看一些我可能明显错过的东西。谢谢。

profile picture
专家
已提问 8 个月前115 查看次数
1 回答
0

【以下的回答经过翻译处理】 我认为问题在于,当你从VPC外解决公共RDS实例的DNS名称时,你会得到公共地址。这就是为什么你的流量通过对等连接路由,但通过IGW"互联网"出去的原因。结果是数据包似乎来自EC2和NATGW的公共IP,而不是VPC CIDR的私有IP。

简单的解决方案是使RDS变成私有的,我认为这样DNS就总是解析为私有IP。如果不可能,那么可能会更复杂。可以使用私有区域中的别名进行解决(我自己没有测试过),参见https://repost.aws/knowledge-center/vpc-peering-troubleshoot-dns-resolution

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则