我的Android设备中的以太网DNS解析失败(android 4.4.2)

时间:2014-05-02 07:10:05

标签: sockets dns ethernet android-4.4-kitkat gethostbyname

我正在尝试在我的设备上启用有线以太网,它运行在android 4.4上。我成功地获得了eth0接口。但是DNS解析没有发生。从adb中获取地址工作正常。(如果我通过WiFi连接到我的路由器,那么dns就会得到解决,可以用以太网浏览)。更多的观察是如果我不存在这个问题使用Firefox而不是默认浏览器。

从日志中可以清楚地看到gethostbyname()调用失败。当我进一步跟踪时,很明显在android_open_proxy()函数中打开的代理套接字不包含正确的值。

    /*   reading proxy-- proxy -->/dev/socket/dnsproxyd ..*/

if(fread(1,sizeof(buf),proxy)!= sizeof(buf))return NULL;

    /* This is reading serialized data from system/netd/DnsProxyListener.cpp
     * and changes here need to be matched there */
    int result_code = strtol(buf, NULL, 10);

***这里result_code是401(在成功的情况下是222)。

3 个答案:

答案 0 :(得分:1)

值得注意的是,摩托罗拉已在其手机中修改了部分DNS解析代码(在Bionic libc库中),因此提及您拥有的设备可能有助于缩小问题范围。

P.S。可能需要'ndc resolver'命令来更改默认的DNS配置。 例如:

ndc resolver setifdns wlan0 "" 192.168.0.1
ndc resolver setdefaultif if wlan0

答案 1 :(得分:0)

这很奇怪,我可能需要更多的描述来帮助我解决这个问题。以下内容可能有所帮助,只是尝试排除一些事情:

您可能想要检查dns服务器是否与以太网位于不同的网络/子网上, 这可以通过物理检查或查看两者的设置是否匹配来完成。

尝试手动/静态设置设置。

我猜测firefox可能正在使用缓存来解析域名,不同的浏览器不应该有不同的DNS服务器。我能想到的最后一件事是firefox使用代理服务器自动解析地址。

尝试一些事情,看看是否可以排除故障。

答案 2 :(得分:0)

我在使用USB以太网适配器的媒体棒设备的kitkat版本上遇到了这个问题。 dhcpcd eth0会让我按IP地址浏览,但我需要以下内容才能启用dns查找:

ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4

ndc resolver setdefaultif eth0