为什么我的手机使用Google Public DNS?


10

我只是想知道我的手机使用了什么DNS服务器。因此,我启动了一个终端模拟器,然后输入:

$ cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

如您所见,我的手机使用8.8.8.8和8.8.4.4作为DNS服务器(Google Public DNS服务器)。

在家里(Wifi),我的路由器配置为通过DHCP为OpenDNS的服务器提供服务。但是,在我的手机上,cat /etc/resolv.conf返回相同的输出。3G同样如此。而且,即使我同时禁用了Wifi和3G,然后重新启动电话,它仍然使用Google的Public DNS服务器。

我不记得已经更改resolv.conf或安装了任何应用程序来对其进行更改。

我的手机是带有CyanogenMod 7.2.0.1(Android 2.3.7)的HTC Desire。

有人可以向我解释为什么我的手机使用Google Public DNS吗?它是任何Android设备或CyanogenMod ROM的通用配置吗?

Answers:


11

根据Steve Kondik的说法,这实质上是旧代码,是旧版本CyanogenMod遗留下来的代码:

这仅适用于在旧CM版本中与uclibc静态链接的应用程序。可以将其删除。

但是,他还继续指出

另外,由于/ system只读,因此在连接网络时不会写入此文件。实际的DNS服务器是从系统属性中读取的。

我还刚刚验证了DHCP提供的服务器实际上正在使用,因此除非有人证明,否则此问题无效。

因此,中的值/etc/resolv.conf实际上并不反映您的DNS设置。您可以改用getprop查找DNS值。如果您像这样grep输出,则可以很好地削减它:

getprop | grep dns

还值得注意的是:该/etc/resolv.conf文件似乎在更高版本的CyanogenMod中已被完全删除。我在CM10上根本没有一个,但是getprop正确显示了我的DNS设置。


伟大的答案,谢谢。但是,getprop | grep dns不返回任何东西。getprop | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'(寻找IPv4地址)不会返回相关结果。返回的属性是ro.basebandro.build.descriptionro.modversiongsm.version.baseband。任何的想法?
Morgan Courbet 2012年

@Morgan:我想这可能是CM7(您正在运行)和CM10(我测试过的)之间的某种差异。如果您根本不对输出进行grep会发生什么?你看到任何相关的东西吗?(可能希望将其传送到more类似文件中,因为它可能很长)
eldarerathis

1
@Morgan:我没有要测试的Gingerbread设备,但是如果您配置了静态IP,则应该有一种方法可以在标准无线设置中进行测试(如果您使用静态IP,我认为您不能这样做)不幸的是,DHCP。在JB上,我长按我连接的网络,然后选择“修改”以进入该网络。但是,它可能在“高级设置”下(在wifi网络列表上的菜单按钮)。您也可以使用,setprop但不会在重新启动/断开连接后持续存在。例如。setprop net.rmnet0.dns1 <your DNS IP>应该更改net.rmnet0.dns1属性的值。
eldarerathis 2012年

1
而且我认为适配器(net.rmnet0.dns1在您的情况下)将使用更具体的适配器,尽管它可能是从更通用的net.dns1属性继承该值。
eldarerathis 2012年

1
@Rhyuk:我不知道。setprop如果您为它提供空白值,则可能是一个临时解决方案,但是您必须在每次引导时都运行它(而且我不确定这是否会真正起作用)。
eldarerathis 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.