尝试

尝试

我通过两台笔记本电脑连接到 LTE/WIFI 路由器。两台笔记本电脑均通过 WIFI 连接。两台笔记本电脑均可正常浏览路由器管理网站。两台笔记本电脑均可正常 ping 8.8.8.8。

  • 在笔记本电脑 1 上可以按预期浏览“外部”网站。
  • 在笔记本电脑 2 上访问“外部”网站不能无法浏览。DNS 似乎已损坏。

尝试

  1. 在路由器上手动配置 DNS 服务器(1.1.1.1, 8.8.8.8)。
  2. 在笔记本电脑 2 的 WIFI 连接上手动配置 DNS 服务器(1.1.1.1, 8.8.8.8

关于笔记本电脑 2

  • 联想 ThinkPad T400
  • Ubuntu 22.04.3

对于如何进一步调查有什么建议吗?

答案1

对于如何进一步调查有什么建议吗?

  1. 确保这确实是 DNS 问题。

    “无法浏览网站”可能可能是由 DNS 引起的,但不一定意味着它是 DNS(即使俗话说“它总是 DNS”)——例如,您可能无法浏览网站,因为任何 HTTP 连接失败,但这根本与 DNS 无关。

    不要立即相信 Firefox 或 Chrome 显示的错误代码。使用其他非浏览器工具(例如)curl -v https://www.google.com检查问题是否确实出在解析域名上,而不是 HTTP 或 TLS 连接上。

    调查任何网络问题最有用的工具之一是数据包捕获 - 在主网络接口上启动 Wireshark(或至少 tcpdump)并验证您看到的数据包。(也就是说,您是否看到 DNS 数据包?您是否看到回复?您是否在端口 443 上看到 TCP SYN 数据包?)

  2. 如果curl似乎有效,而只有浏览器不工作,则可能是由于浏览器使用他们自己的DNS 设置,通常用于 DNS-over-HTTPS。请尝试在浏览器中禁用该功能,然后再次测试。

  3. 如果确实是域查找问题,请检查使用绕过操作系统名称查找功能的工具(例如dighostnslookup(所有这些工具都直接使用 DNS,而不管操作系统配置如何))是否能获得相同的结果。例如,dig google.com直接使用 /etc/resolv.conf 中指定的任何内容,dig google.com @8.8.8.8甚至绕过它。

    (如果 /etc/resolv.conf 有多个“nameserver”条目,请测试每个分别。)

    确保 /etc/resolv.conf 文件实际上是全世界可读的;您应该能够读取其内容,并且“dig”和“nslookup”应该可以工作没有root 权限(sudo),没有任何与权限相关的错误。

  4. “/etc/resolv.conf 中指定的内容”可能并不总是真正的 DNS 服务器 - 通常它指向在同一系统上运行的本地 DNS 缓存,例如 dnsmasq 或 systemd-resolved。如果该文件包含类似“nameserver 127.0.0.x”的条目,请使用它sudo ss -lp sport 53来找出哪个进程正在监听该地址上的 DNS 查询。

    如果发现 systemd-resolved 正在使用中,请使用 检查其配置resolvectl(确保没有任何意外的网络接口和意外的 DNS 服务器)并使用 检查相关的系统日志systemctl status -n 200 systemd-resolved

  5. 如果dig看起来运行正常但curl仍不正常,请检查系统的名称查找配置是否/etc/nsswitch.conf合理 – 特别是“hosts:”行。使用 测试整个设施getent hosts google.com,并使用 逐个测试相关模块(“dns”和“resolve”)。getent -s dns hosts google.com

    (“dns”模块是直接读取 /etc/resolv.conf 的模块,而“resolve”模块是使用 systemd-resolved 服务的模块。如果正在使用 systemd-resolved,则两者都应该可以工作。)

  6. 另一方面,如果“dig”等工具都不起作用,请返回数据包捕获。确保程序至少将 UDP 数据包发送到它应该与之通信的服务器。(还要查看这些数据包的 MAC 地址;确保它与网关的 MAC 匹配。)

    如果您没有看到任何数据包 – 请检查 中是否有任何不寻常的接口ip -c addr,或者 中是否有不寻常的策略路由规则ip -4 rule(应该只有三个:本地/主/默认),或者 中是否有不寻常的防火墙iptables-save规则nft list ruleset

    一个常见的原因是 VPN 应用程序(尤其是 ProtonVPN)安装了各种“终止开关”配置来阻止非 VPN 访问,但在卸载 VPN 时无法删除该配置。

相关内容