屏幕截图(单击图像获得较大的变体)我敢肯定,可以通过将DNS更改为Google DNS或OpenDNS来解决此问题,但是我不确定如何在KitKat上完成此操作。
#1 楼
好的,首先要完全公开:我是一个应用程序的作者,该应用程序现在在Google Play商店中,可让您更改Android 4.4上任何移动连接的DNS。该应用程序需要root用户,花费几美元,并称为Override DNS。有人告诉我,在一个已删除的答案上,只要我清楚地公开它,就可以链接到我的应用程序。
我在此版本的Android(4.4)中发现的问题是,显然是出于缓存原因,系统行为已更改为将所有DNS查询重定向到名为
netd
的系统守护程序(这是与以下内容相关的演示文稿的链接) 4.4之前的Android联网(但是,其中涵盖了部分主题)。getprop
/ setprop
方法不再起作用。更改后,这些值将被netd
守护程序简单地忽略。必须通过
/dev/socket/netd
套接字直接与守护程序通信。在Android中,现在提供了一个名为ndc
的工具,可以完成此工作。与DNS相关的东西的语法是:该应用程序会自动猜测网络设备名称,并在每次激活移动网络时应用这些命令。
评论
setifdns的正确语法为:ndc解析器setifdns
–克里斯蒂安·德·赫里乌斯(Christian d'Heureuse)
2015年1月10日在22:14
@ Christiand'Heureuse,您说得对,我更新了答案,谢谢。
– MaxChinni
15年1月11日,0:45
#2 楼
我通过使用iptables规则将所有端口53连接转发到预期的DNS服务器来“解决”了该问题;我在Android 4.4.2上尝试尝试在连接3G时修改DNS设置的经验与Leo完全相同; getprop | grep dns [0-9] \]中的值不了解:和dhcpd.conf。iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 8.8.8.8:53
原因如下:http:// forum .xda-developers.com / showpost.php?p = 44722857&postcount = 6所有应用程序都通过/ dev / socket / dnsproxyd Unix套接字通过netd进行DNS查找。该线程还描述了为什么忽略系统属性的方法。 dpt:53 to:xxx.xxx.xxx.xxx:53
并执行
iptables -t nat -L OUTPUT -n -v --line-numbers
评论
谢谢!此外,原因摘要:Google正在与广告拦截器进行军备竞赛。他们试图禁用当前意味着广告拦截器正常工作,并将广告拦截器移至另一个广告拦截器,而所有用户(无论是否使用广告拦截器)都将永远被Google的举动所烦扰。 ...我以为每个人都知道现在与广告拦截器作斗争是愚蠢的举动。傻谷歌。 (此外,开源应用程序AFWALL是轻松添加此自定义规则的便捷方法)
– gcb
2014年7月15日在0:22
关于如何应用自定义iptables规则的AfWall + Wiki
–betatester07
16 Mar 25 '16 at 22:37
#3 楼
令人遗憾的是,目前可能无法执行此操作,但是可以尝试使用DNS Changer。如果您已扎根,这可能会起作用,但不能保证。要使用的优质DNS服务将是Google的公共DNS服务。对于这里的这类问题,它往往很适用。
如果这些都不起作用,请继续寻找答案。 XDA Developers是一个很好的解决这类问题的网站。他们倾向于在Android方面有很多答案。
#4 楼
我在KitKat Cyanogenmod 11上,这意味着我默认是扎根的。尽管如此,我只能报告失败:第一种方法:
当我尝试用
setprop net.rmnet0.dns1 208.67.222.222
setprop net.rmnet0.dns2 208.67.222.222
setprop net.rmnet1.dns1 208.67.222.222
setprop net.rmnet1.dns2 208.67.222.222
setprop net.rmnet2.dns1 208.67.222.222
setprop net.rmnet2.dns2 208.67.222.222
setprop net.dns1 208.67.222.222
setprop net.dns1 208.67.222.222
然后测试要解析到哪个IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk解决的问题。您添加)。
做
getprop | grep dns
我只会看到我配置的内容。但是,从WiFi切换到移动设备(3G或4G / LTE)时,我看到了我认为已分配给移动运营商的IP。诸如“ DNSwitch”或“ DNS Changer”之类的应用程序可以在网络更改时自动重置这些解析器。但是
adb shell
告诉我的内容仍然不是真正的解决方法。第二种方法[a]:
我尝试的另一种方法是修改
getprop
的固定问题在那里(但请注意网络名称和解析器的数量可以不同)。没有成功。第二种方法[b]:
在
/system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf
中,我删除了在DHCP协商中接受解析器的参数。 第三种方法:
到目前为止,唯一可行的方法是使用“穷人VPN”和“ SSH隧道”应用,使用SOCKS4,但是使用它并没有得到很好的结果。网络是移动的。
那么,为什么呢?为运营商提供消除网络中立性的工具是另一种肮脏的方式吗?
您的问题就是因为这个原因。
您是否可以使用SSH尝试SSHTunnel是否是替代解决方案?绕过您的运营商审查?
评论
我已经找到一种规避障碍的方法,但是它很麻烦,而且要视具体情况而定。我已经扎根,因此可以访问hosts文件。接下来,我查找了imgur的直接IP地址,然后将这些值手动输入到hosts文件中。现在问题解决了。
–user51893
2014年3月11日在16:48
#5 楼
今天,由于输血,我遇到了同样的问题。我试图开发一个应用程序“ DNS转发器”来解决这个问题。它不会更改系统上的dns服务器,但会将dns查询转发到另一台服务器。对于我在Kitkat(Nexus 5 / 4.4.3和Moto Razr / CM11)上,该解决方法对我来说效果很好。希望它也能帮助其他人。评论
这实际上有效,不确定您为什么被否决
–战歌
2014年11月30日22:46
#6 楼
目前,我不认为有任何方法可以更改移动数据上的DNS。但是,如果您的手机已扎根,则可以使用Set DNS之类的应用。评论
可悲的是,该应用程序似乎不支持Android 4.3及更高版本:(摘自该应用程序的描述:“请暂时不要安装ANDROID 4.3,内核中的DNS处理方式存在问题。我已经从市场上购买了4.3种设备。”
–user51893
2014年1月28日4:48
您的问题是,对于Android KitKat(Android 4.4。*)需要它,而Android 4.3是Jellybean。
– Karan Raj Baruah
2014年1月28日下午4:52
我已经在设备上的Play商店上打开了该应用程序的页面,并在最上方显示:“您的设备与此版本不兼容。”因此,我确定问题仍然存在,从4.3版到KitKat。
–user51893
2014年1月28日下午5:01
根据常见问题解答,推荐应用程序实际上并不是该网站的一部分。我回答了Android是否可以原生执行的问题。我建议您自己搜索Play商店。
– Karan Raj Baruah
2014年1月28日在7:20
提示:访问AppBrain上的应用程序页面列出了几种选择(右侧顶部4)。但是请注意,该部门中的大多数解决方案都需要root访问。
– Izzy♦
2014年1月28日在8:23
评论
如何正确配置DNS?