当 dig 报告 cname 记录的更新版本时,为什么 ssh 使用缓存的 dns 记录?

当 dig 报告 cname 记录的更新版本时,为什么 ssh 使用缓存的 dns 记录?

我有一个 Jenkins 管道,它将启动我的 AWS Ubuntu EC2 实例。此 Jenkins 管道还将更新我在 route53 中为我的 EC2 实例设置的 CNAME 记录。

有时,我通过 CNAME ssh 连接到实例时会遇到很长的延迟。我认为这可能是缓存问题,但如果我执行,我会看到 DNS 记录的更新版本。此外,我也可以毫无问题地 ssh 到新 IP 和AWS 为我的实例提供的dig the-cname.example.comDNS 记录的值。A

我的 ssh 客户端是否使用了 CNAME 的缓存版本?

答案1

dig执行实际的 DNS 查询,而ssh只会要求您的系统(最有可能通过gethostbyname)解析名称。

dig将询问实际的 DNS 服务器,同时ssh将询问负责 DNS 的本地服务(现在最有可能是 systemd-resolve),该服务将缓存结果。

如果使用 systemd,您可以使用 清除现金systemd-resolve flush-caches

相关内容