我想避免来自本地移动ISP的审查(例如,由于某些未知原因,它阻止了imgur。

屏幕截图(单击图像获得较大的变体)我敢肯定,可以通过将DNS更改为Google DNS或OpenDNS来解决此问题,但是我不确定如何在KitKat上完成此操作。

评论

如何正确配置DNS?

#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 <域> ...。示例:ndc解析器setifdns eth0“” 8.8.8.8 8.8.4.4

–克里斯蒂安·德·赫里乌斯(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