我想发布一个我在大学遇到的问题的解决方案。这个问题与这帖子。我问过用户是否找到了解决方案,但他没有回复。另外,我不确定这个解决方案是针对具体案例的还是通用的。
情况
在我所在的一所大学里,公共 Wi-Fi 只能通过 IP 地址使用,而不能通过域名使用。例如,我可以ping 8.8.8.8
通过 IP 地址在 Firefox 中访问 google 74.125.227.142
,但无法在 Firefox 中ping google.com
访问。google.com
解决方案
我将在下面发布我的问题的解决方案。欢迎为可能遇到类似问题的其他用户添加其他回复或其他解决方案。
答案1
遇到这个问题后,我研究了一段时间,发现这可能是dns问题。通过阅读这帖子中,我了解到有很多方法可以添加或者取代您的网络提供的 DNS 服务器,但似乎没有一个解决方案有效。正如用户 brad 提到的,dns 仍然由 dnsmasq 控制。
现在,通过查看配置文件,/etc/
我找到了/etc/NetworkManager/NetworkManager.conf
包含以下信息的文件:
[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq
[ifupdown]
managed=false
我修改了该dns
行,现在文件内容如下:
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222
[ifupdown]
managed=false
重新启动网络管理器后,sudo service network-manager restart
一切开始正常工作,解决方案在重新启动后仍然有效。注意:208.67.222.222 是 OpenDNS 公共服务器。
可能发生的情况:
在网络上,输出nm-tool
如下:
DNS: 4.2.2.2
DNS: 8.8.8.8
DNS: 164.47.7.10
DNS: 164.47.7.11
我相信,我的大学有自己的 DNS 服务器,即 164.47.7.11 和 .10,并且 dnsmasq 查询最近的服务器,所以我的请求甚至从未到达 8.8.8.8。
希望这个解决方案对其他用户有所帮助,并且请让我知道我对这个问题的解决方案是否有效、足够安全或足够合理。
关于回答我自己的问题:
我这样做是为了让这个解决方案公开并记录下来,至少对我的特定情况而言。我还想引用这个邮政在 meta.askubuntu.com 上。
更新:
今天从大学回家后,我发现无法连接到家里的 wifi。我查阅了一下资料,man NetworkManager.conf
发现dns=
in[main]
实际上是一行插件,所以一行dns=dnsmasq
实际上是将 dnsmasq 插件添加到网络管理器中。所以我的解决方案仍然有效,只是没有达到预期的效果。以下是手册页的摘录:
dns=plugin1,plugin2, ... 列出以“,”分隔的 DNS 插件名称。DNS 插件用于提供本地缓存名称服务器功能(可加快 DNS 查询速度)并将 DNS 数据推送到使用它的应用程序。
因此,通过设置dns=208.67.222.222
,我可能基本上阻止了网络管理员使用该插件,否则将使用本地 DNS 服务器(显然不起作用)。
更新 #2:
到目前为止,我所做的就是注释掉 dnsmasq 并放弃我的互联网服务提供商的 DNS。现在,告诉网络管理器的解释是这帖子,这是一种 GUI 方法:只需打开网络管理器指示器,选择“编辑连接”,按“编辑”打开网络名称,然后在 IPv4 设置选项卡下,选择“仅自动(DHCP)地址”。
您可以在命令行中完成相同的操作,方法是编辑存储在中的特定连接的文件/etc/NetworkManager/system-connections
。下面是我的连接文件的相关部分:
[ipv4]
method=auto
dns=208.67.222.222;
ignore-auto-dns=true
[ipv6]
method=auto
现在,通过所有这些配置(从 NetworkManager.conf 中注释掉 dsnmaq 插件,并将连接设置为仅自动(DHCP)地址),我基本上实现了一直以来想要实现的所有目标 - 通过域名连接我的机器,并以某种方式使用大学的 DNS 服务器,因为那样对我没有任何帮助。
nm-tool
确认我正在使用我想要的 DNSdig google.com
以及/etc/resolv.conf
。
这是该问题/答案的最后一次更新,我不打算添加任何其他内容,但请随意添加任何相关信息作为单独的答案或评论以及建议。
希望这对其他 Ubuntu 用户以及 Linux 用户有所帮助!
``