CLI 中的 DNS 解析问题

CLI 中的 DNS 解析问题

旧 MacBook 屏幕快坏了,所以改用新的 Ubuntu 22 笔记本电脑

立即出现迄今为止从未遇到过的 DNS 问题

我正在使用暂存盒 (AWS) xsubdomain.xdomain.com。 Web 浏览器愉快地解析了该 url,证明我已正确设置 AWS 安全组,并且 DNS 记录已正确更新(Web DNS 查找工具同意)。但是所有在 Mac 上运行的 CLI 工具在 Linux 上都失败了(curl 和 ssh 就足够了)。当我尝试对盒子进行 ping 操作时,症状就显现出来了 - 我注意到显示了错误的 IP 地址。

nslookup/dig 与 ping 一致,将 url 解析为相同的错误 IP。

浏览器(Chrome 和 Brave)使用的 DNS 数据与终端中的命令不同,这是肯定的。目前的假设是,不知何故,我的 DNS 缓存变坏了。我尝试(天真地)编辑/etc/systemd/resolved.conf(DNS = 8.8.8.8)并重新启动解决,但无济于事。

我还尝试过什么:

resolvctlflush-caches(据报道我需要清理缓存)

sudo systemctl restart systemd-resolved

resolvectl 统计信息(确认缓存是干净的)

但 nslookup/dig 仍然显示奇怪的 IP...

我究竟做错了什么?感谢您的时间

答案1

现代网络浏览器可能使用 DNS-over-SSL 或 DNS-over-HTTPS 服务,并绕过操作系统中配置的常规 DNS 服务,因为这些服务据称比常规 DNS 更安全。在您的情况下,这可能会产生预期的正确 URL 解析。

如果您在 Ubuntu 中安装了nscdunscd软件包,那么它是一个名称服务器缓存守护进程 - 在这种情况下,您可能需要运行sudo nscd -i hosts以刷新其缓存。

DNS 诊断工具nslookup通常bind会绕过nscd缓存并直接与/etc/resolv.conf.但是,如果您的系统正在使用systemd-resolved(如包含nameserver 127.0.0.53/etc/resolv.conf显示resolvectl status实际 DNS 设置而不是错误消息所示),它们可能仍会受到本地缓存的影响。但resolvectl flush-caches应该已经处理过该缓存了。

正如 QuartzCristal 的评论中提到的,dig @8.8.8.8 xsubdomain.xdomain.com告诉dig命令直接联系 Google 的 8.8.8.8 公共 DNS 服务,跳过为操作系统配置的任何 DNS 服务。如果这导致显示正确的 IP 地址,则问题要么出在您的本地系统中,要么出在为其配置的名称服务器中;如果这也导致错误的 IP 地址,那么某些东西(可能是恶意软件)可能正在操纵您和互联网之间的任何未加密的 DNS 流量。

如果输出nameserver中的行/etc/resolv.conf和/或 DNS 服务器设置resolvectl status指向您的路由器,则重置路由器可能是个好主意:将其关闭 30 秒左右,然后重新打开。您可能想查看您的路由器是否有可用的安全更新:有一些恶意软件会攻击具有已知漏洞的路由器,其中某些版本可能会尝试重定向用户的流量,可能是为了窥探或注入额外的广告。您的路由器可能容易受到其中之一的攻击。

据我所知,路由器中的大多数此类恶意软件感染都可以通过重置路由器来清除,但如果路由器中仍然存在易受攻击的固件版本,则它可能会很快重新感染。

如果您的resolvectl status/etc/resolv.conf文件指向您的 Internet 服务提供商的 DNS 服务器,或者它们指向您的路由器,并且重置路由器并更新其固件没有帮助,那么您的 ISP 的 DNS 服务器可能存在某种问题。在这种情况下,您可能应该联系您的 ISP 并报告问题。在等待 ISP 最终解决问题时,您可能需要将 Ubuntu 和/或路由器配置为使用 Google 的 8.8.8.8 或其他公共 DNS 服务,而不是 ISP 的名称服务器,作为解决方法。

相关内容