【问题标题】:Why is Elastic IP *needed* for CNAME/ A/ AAAA records (public ip's don't work)为什么 CNAME/A/AAAA 记录需要弹性 IP*(公共 IP 不起作用)
【发布时间】:2019-11-16 22:10:31
【问题描述】:

我正在使用 terraform 来配置 EC2 实例,然后创建指向它的 DNS 记录。在 AWS 上,建议使用静态 IP 地址而不是公共 IP 地址,以便在重新启动时更改 IP 地址不会导致问题。但是使用 terraform,DNS 记录将使用新的公共 IP/公共 DNS 进行更新。 所以,理论上,我不需要弹性 IP 地址。

没有 eip,我仍然可以使用 AWS 提供的公共 IP 地址和公共 DNS/主机名进行 SSH。但是,当将 DNS 记录(A 或 CNAME)指向公共 IP 地址和公共 DNS 时,SSH 会超时。即使在 DNS 记录传播时也会发生这种情况(我使用 dig domain.com 全球 DNS 传播检查器进行了检查)。似乎有东西阻止了来自非 IP 地址/非 aws 公共 DNS 主机的访问。

有人在将 DNS 记录直接指向公共 IP/公共 DNS 时遇到过这个问题吗?

【问题讨论】:

  • 您可以将公共 IP 用于 DNS。每当您停止/启动实例时,公共 IP 都会不断变化。当它是 EIP 时它不会改变,因此最好将 EIP 用于 DNS

标签: amazon-ec2 dns terraform


【解决方案1】:

哇哦。事实证明它最终是 DNS 记录......在输入问题后,我重试了,它成功了。出于某种原因,dig 最初返回了更新的记录,但 ssh 使用的是旧记录?这怎么可能!

为什么 SSH 使用旧记录?使用dig,我可以清楚地得到正确的记录。

答案是 DNS 缓存!尽管 dig 会给我来自 Cloudflare 的 DNS 服务器的最新 DNS 记录,但我的计算机使用的是旧的。所以我不得不刷新DNS。在 mac 上,我使用了sudo killall -HUP mDNSResponder。然后这带来了检测到 DNS 欺骗的消息,所以我不得不更新 known_hosts 文件夹,使用ssh-keygen -R domain.com

dig 命令不使用 macOS 上运行的其他进程进程使用的主机名和地址解析或 DNS 查询路由机制。

来自Dig macOS man page

【讨论】:

  • 我想补充一下,DNS记录更新非常快,可能是因为我使用了Cloudflare。在使用 Route53 和其他 DNS 托管服务提供商时,我发现 TTL 设置得相当高。尽管如此,静态 IP 还是有用的,因为这个问题可能发生在用户身上:他们的 DNS 缓存会阻止他们访问新网站
猜你喜欢
  • 2017-01-01
  • 2019-01-15
  • 1970-01-01
  • 2017-08-23
  • 2015-08-09
  • 2019-07-08
  • 1970-01-01
  • 2011-11-27
  • 2013-07-20
相关资源
最近更新 更多