西雅图大学不提供任何 Linux 支持,但我的 Android 手机似乎工作正常。我可以连接到加密和未加密的无线网络以及有线网络,并且我被分配了一个 IP 地址。我似乎能够 ping 外部 IP,例如 Google 的 DNS 8.8.8.8,并且我知道有效但未使用的 IP 地址没有返回 ping(到目前为止一切正常)。我也可以 curl 外部 IP。但是,当我尝试解析 DNS 主机时,它不起作用,无论是有线还是无线。我尝试在网络管理器中将我的 DNS 设置为使用 Google 的 DNS,但这似乎没有任何改变。根据他们配置 Windows、OSX 和 Android 的经验,我已与 IT 部门核实我的设置是否正确。
我该如何排除故障或解决这个问题?这位 IT 人员不知道 Ubuntu 和 Android 是基于 Linux 的,他唯一的建议是“好吧,它应该可以工作,但如果它不安装 Windows 的话。”
编辑:
当我运行 dig 时它看起来像这样:
$ dig google.com @8.8.8.8 ; <<>> DiG 9.9.5-3ubuntu0.4-Ubuntu <<>> google.com @8.8.8.8 ;; global options: +cmd ;; connection timed out; no servers could be reached
我的 resolv.conf 看起来很好,当我设置为 Google 的 DNS 时,它会选择 Google 的 DNS,否则它会选择看起来像大学的 DNS 服务器。
答案1
通常为了解决 DNS 问题我会执行以下操作:
- 检查公共 DNS 服务器(如 Google 的 8.8.8.8)是否可以访问:
ping 8.8.8.8
(IIUC 这对你有用)
- 尝试解析一个名称以查看 DNS 查询是否可以到达它(大学的防火墙可能会阻止它们或以其他方式干扰):
dig google.com @8.8.8.8
或者
host google.com 8.8.8.8
如果这不起作用,那么您就不能使用 8.8.8.8 作为 DNS 服务器。
- 检查系统是否确实配置为通过 8.8.8.8 解析名称(因为您说您在网络管理器中静态配置了它):
cat /etc/resolv.conf
你应该看到类似这样的内容:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
如果不是这种情况,我会再次检查 NetworkManager 配置。
您也可以编辑该文件以进行快速修复,但请记住,NetworkManager 或其他程序会在您下次重新连接时覆盖它(例如,如果 wifi 断线,这种情况可能比您想象的要早)。因此,最好在 NetworkManager 中配置它。
- 检查您是否确实可以通过该 DNS 服务器解析所需的名称。
通常使用外部 DNS 服务器是可以的,除非您所在大学的校园内有使用私有 IP 地址的机器。这些机器无法通过外部 DNS 服务器解析。因此您实际上需要使用您所在大学的 DNS 服务器。
在这种情况下,您可以保留 NetworkManager 中未配置的 DNS 服务器,它应该会从 DHCP 中获取它们。如果没有发生这种情况,您可以对其进行故障排除,或者从另一台可以正常工作的机器复制 DNS 设置并在 NetworkManager 中对其进行静态设置。