能够通过ip访问web,但不能通过dns名称访问
我想为我在大学遇到的问题发布一个解决方案。 这个问题与这篇文章密切相关。 我问用户他是否找到了解决方案,但他从未回复过。 另外,我不确定这个解决方案是特定于案例还是一般的。
情况
在我的一所大学的建筑物中,公共Wi-Fi只能使用IP地址,但不能使用域名。 例如,我可以通过74.125.227.142
IP地址ping 8.8.8.8
或者在Firefox中google,但ping google.com
或在firefox中访问google.com
是行不通的。
解决方案
我会在下面的问题上发布解决方案。 请随意为可能遇到类似问题的其他用户添加其他回复或其他解决方案。
一旦我遇到这个问题,我已经研究了一段时间,并发现这可能是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
我相信,我的uni有自己的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插件用于提供本地缓存名称服务器function(加速DNS查询)并将DNS数据推送到使用它的应用程序。
因此,通过设置dns=208.67.222.222
我可能基本上阻止网络管理员使用该插件,否则将使用本地DNS服务器(显然不起作用)。
更新#2 :
到目前为止我所做的是评论dnsmasq并放弃我的互联网服务提供商的DNS。 现在,在这篇文章中解释了网络管理器,它是一种GUI方法:只需打开网络管理器指示器,选择“编辑连接”,按“编辑”打开网络名称,然后在“IPv4设置”选项卡下选择“自动”( DHCP)仅解决“。
通过编辑存储在/etc/NetworkManager/system-connections
特定连接的文件,可以在命令行中完成同样的操作。 Bellow是我的连接文件的相关部分:
[ipv4] method=auto dns=208.67.222.222; ignore-auto-dns=true [ipv6] method=auto
现在,通过所有这些配置(从NetworkManager.conf中注释掉dsnmaq插件并仅将连接设置为自动(DHCP)地址),我基本上实现了我一直想要的所有 – 通过我的机器连接域名,并以某种方式使用大学的DNS服务器,因为这让我无处可去。
nm-tool
确认我正在使用我想要的DNS,以及dig google.com
和/etc/resolv.conf
。
这是此问题/答案的最后一次更新,我不打算添加任何其他内容,但可以随意添加任何相关信息作为单独的答案或评论,以及建议。
希望这有助于其他Ubuntu用户和Linux用户一般!
“