【问题标题】:RDS resolves to public IP from within VPCRDS 从 VPC 内解析到公共 IP
【发布时间】:2020-08-25 04:58:57
【问题描述】:

我正在使用运行 Ubuntu 20.04 和 RDS 的 EC2 实例;两者都在同一个 VPC 中。我添加了安全组以允许从 EC2 实例连接到 RDS。

我遇到一个问题,即从 EC2 对 RDS 实例的 ping 解析为公共 IP 而不是私有 IP,因此 mysql 连接失败;如果我使用内部 IP,则连接成功,因此不是无法访问的问题。

我假设这与某些 DNS 缓存有关,但我已尝试刷新但仍然无法正常工作。我试过的命令如下:

sudo systemd-resolve --flush-caches
sudo /etc/init.d/dns-clean start

有什么想法可以解决这个问题吗? rds端点如何解析到内部IP?

【问题讨论】:

  • 您确定您的数据库子网是由私有子网组成的。你能确认一下吗?
  • 是的,我可以使用私有 IP 连接。
  • 您在创建 RDS 时是否勾选了选项PubliclyAccessibletrue。我认为是这样的
  • 是的,但我有其他实例可以解析到内部 IP。
  • 不建议使用特定 ip 连接,建议使用端点 url 连接。因为亚马逊可以更改IP地址

标签: amazon-web-services amazon-ec2 dns amazon-rds


【解决方案1】:

为了提高安全性,最好使用PubliclyAccessible = No。这将导致 DNS 名称解析为只能从 VPC 内部访问的私有 IP。它还将帮助使用安全组来控制对数据库的访问。

【讨论】:

  • 仅当从数据库实例的 VPC 外部访问 DNS 名称时,它才会解析为公共 IP。根据AWS文档docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…,当它被标记为PubliclyAccessible时,它应该从VPC内部解析为私有IP地址但是,从OP的问题中不清楚他们的EC2实例是否与数据库在同一个VPC中。
  • @talonx 感谢您的更正——我自己刚刚尝试过,可以确认使用Publicly Accessible = Yes 启动的数据库将解析为同一 VPC 中的私有 IP。我会相应地更新我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 2015-04-09
  • 2017-12-26
  • 2020-06-25
  • 2014-05-15
  • 2021-04-10
相关资源
最近更新 更多