如何在Android Kitkat上更改移动连接的DNS? -- 4.4-kitkat 领域 和 dns 领域 android 相关 的问题

How to change mobile connections's DNS on Android KitKat?


简体版||繁體版
24
vote

问题

中文

我想避免我当地的移动ISP中的审查(例如,因为一些未知原因,它阻止了Imgur。

screenshot
屏幕截图(单击图像的较大变体)

我很确定我可以通过将我的DNS更改为Google DNS或Opendns来规避这一点,但我并不肯定如何在Kitkat上完成这一点。

  Info: Device: Nexus 5 Android version: 4.4.2 Device status: rooted   
english

I want to avoid censorship from my local mobile ISP (it blocks imgur, for example, for some unknown reason.

Screenshot
Screenshot (click image for larger variant)

I'm pretty certain that I can circumvent this by changing my DNS to Google DNS or OpenDNS, but I'm not really sure how to accomplish this on KitKat.

Info: Device: Nexus 5 Android version: 4.4.2 Device status: rooted 
     

回答列表

18
 
vote

确定,首先完整披露:我是一个应用程序的作者,现在在Google Play商店上,它使您能够在Android 4.4上更改任何移动连接的DNS。 app 需要root ,花费了几个降压,称为覆盖DNS 。 我被告知,在一个现在删除的答案,这是为了链接到我的应用程序的公平,只要我清楚地暴露它。

在这个版本中找到的问题是Android(4.4)是,显然是为了缓存的原因,系统行为已更改为将所有DNS查询重定向到称为 netd (这是一个链接

getprop / setprop 方法不再起作用。这些值,当更改时,通过 netd 守护程序来忽略。

必须通过 /dev/socket/netd 套接字直接通信给守护程序。在Android中,它现在存在一个名为 ndc 的工具,这完全是这项作业。

DNS相关材料的语法是这样的:

  # ndc resolver flushif <iface> # ndc resolver flushdefaultif # ndc resolver setifdns <iface> <domains> <dns1> <dns2> # ndc resolver setdefaultif <iface>   

app 自动猜测网络设备名称每次移动网络激活时都会应用这些命令。

 

Ok, first of all full disclosure: I'm the author of an app which is now on the Google Play Store and which makes you able to change DNS for any mobile connection on Android 4.4. The app requires root, costs a couple of bucks and is called Override DNS. I was told, on a now deleted answer, that is fair to link to my app as long as I expose it clearly.

The problem I found with this release of Android (4.4) is that, apparently for caching reasons, the system behaviour has been changed to redirect all DNS queries to a system daemon called netd (here's a link to a presentation related to Android networking before 4.4 which, however, covers part of these topics).

The getprop/setprop method does not work anymore. Those values, when changed, get simply ignored by the netd daemon.

It's necessary to communicate directly to the daemon via the /dev/socket/netd socket. In Android it's now present a tool called ndc which does exactly this job.

The syntax for the DNS related stuff is this:

# ndc resolver flushif <iface> # ndc resolver flushdefaultif # ndc resolver setifdns <iface> <domains> <dns1> <dns2> # ndc resolver setdefaultif <iface> 

The app automatically guesses the network device name and applies these commands each time a mobile network gets activated.

 
 
   
   
13
 
vote

我通过使用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&amp; postcount = 6 所有应用通过/ dev / socket / dnsproxyd unix套接字执行DNS查找。此线程还介绍为什么系统属性正在忽略。

要撤消这一点,请执行此操作,请执行
  iptables -t nat -L OUTPUT -n -v --line-numbers   

,找到与UDP DPT:53对应的行号:xxx.xxx.xxx.xxx:53 并做

  iptables -t nat -D OUTPUT *linenumber*   
 

I "solved" this problem by using an iptables rule to forward all port 53 connections to an intended DNS server; my experience on Android 4.4.2 with attempting to modify DNS settings while connected to 3G has been exactly as Leo described; ignorance of values in getprop |grep dns[0-9]\]: and dhcpd.conf.

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 8.8.8.8:53 

The reason is as described here: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 All apps do DNS lookups through netd via a /dev/socket/dnsproxyd unix socket. This thread also describes why system properties are being ignored.

To undo this, do

iptables -t nat -L OUTPUT -n -v --line-numbers 

, find the line number that corresponds to udp dpt:53 to:xxx.xxx.xxx.xxx:53 and do

iptables -t nat -D OUTPUT *linenumber* 
 
 
 
 
1
 
vote
遗憾的是,从现在开始,可能是不可能的,但是,可以尝试 DNS换更换器。如果您扎根,这可能会有效,但没有保证。

使用的良好DNS服务将是Google的公共DNS服务。它倾向于在这里的这些类型的问题效果很好。

如果没有这项工作,请继续寻找答案。一个很好的网站,就像这样的事情是 xda开发人员。他们倾向于对Android的事情有很多答案。

 

Sadly, it may be impossible to do as of right now, however, it is possible to try DNS Changer. This may work if you are rooted, but there are no guarantees.

A good DNS service to use would be Google's public DNS service. It tends to work out very well for these type of issues right here.

If none of this works, keep looking for answers. A good site for things like this is XDA Developers. They tend to have many answers on things for Android.

 
 
1
 
vote

我在Kitkat cyanogenmod 11,这意味着我默认扎根了。尽管我只能报告失败:

1st方法:

当我尝试 adb shell 时用

  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解析的... 我得到了一个nxdomain的反应,这意味着它没有来自我设置的Opendns名称服务器(它将用替代IP返回一个答案,为您添加)。

在做

  getprop | grep dns   

我只会看到我配置了什么。但是,当从WiFi切换到移动(3G或4G / LTE)时,我会看到IP,我识别为分配给我的移动运营商。像"DNSwitch" 或"DNS更换器" 这样的应用程序可以在网络变更时自动重新设置这些解析器。但是 getprop 报告我,仍然不是真正正在做的解决方案。

2nd方法[a]:

另一种我尝试的方式,是modifieng /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf 一个固定在那里的设置东西(但是要注意的网络名称和resclvers的数量可能有所不同)。没有成功。

2nd方法[b]:

/system/etc/dhcpcd/dhcpcd.conf 我删除了在DHCP否定的参数接受解析器。没有成功。

第3方法:

到目前为止,唯一可以使用的是使用"糟糕的人VPN" ,使用App"SSH隧道" ,使用Socks4,但使用我没有完全得到一个好的结果。

resume:

似乎是在其他地方设置的DNS,或者所有都会转发(劫持),只需立即移动到移动。

所以,怎么来?是否另一种肮脏的方法来提供具有拆除网络中立的工具的载体?

在你的情况下,你的问题是因为它。 如果sshtiunnel是替代解决方案,你是否有ssh尝试绕过载体审查?

 

I'm on KitKat Cyanogenmod 11, meaning I'm rooted by default. Despite that I can only report failure:

1st method:

When I try the adb shell with

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 

and then test to which IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk resolve's... I get an NXDOMAIN response, meaning it didn't came from the OpenDNS nameserver I've set (which would return an answer with an alternative IP, to serve you adds).

When doing

getprop | grep dns 

I would only see what I've configured. However when switching from WiFi to mobile (3G or 4G/LTE) I see IP's that I recognize as being assigned to my mobile carrier. Apps like "DNSwitch" or "DNS Changer" can re-set those resolvers automaticly at network change. However what getprop reports me, is still not what's truly doing the resolving.

2nd method [a]:

Another way I tried, is modifieng /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf an set things fixed in there (but be aware network names and number of resolvers can differ). Without success.

2nd method [b]:

And in /system/etc/dhcpcd/dhcpcd.conf I removed the parameter to accept resolvers at DHCP negociation. No success either.

3th method:

So far the only thing that would work a little is using a "poor man VPN", using the app "SSH Tunnel", using SOCKS4, but using that I did not exactly got a good result.

Resume:

It seems like either DNS set elsewhere, or all are forwarded (hijacked) as soon the network is mobile.

So, how come? Is it another dirty way to provide carriers with a tool to demolish network neutrality?

In your case your question was because of that. Do you have SSH to try if SSHTunnel is a alternative solution to get around your carriers censoring?

 
 
 
 
1
 
vote

我今天遇到了同样的问题,并且感冒了输血。我试图开发一个应用程序"转发 r" 解决它。它不会在系统上更改DNS服务器,但是将DNS查询转发到另一台服务器。这种解决方法在Kitkat(Nexus 5/4.3和Moto Razr / CM11)上适合我。希望它可以帮助其他人。

 

I encountered the same problem today, and thanks to Transfusion. I tried to develop an app "DNS forwarder" to work it out. It does not change dns server on system, but forward dns queries to another server. This workaround works fine for me on Kitkat (Nexus 5/4.4.3 and Moto Razr/CM11). Hope it can help other as well.

 
 
 
 
0
 
vote

目前,我认为没有任何方法可以在移动数据上更改DNS。但是,如果您的手机植被植被,您可以使用

 

Currently I don't think there's any way to change your DNS on your mobile data. But if your phone is rooted you can use apps like Set DNS.

 
 
         
         

相关问题

28  如何通过机器名称而不是IP到达本地计算机?  ( How to reach local computer via machine name instead of ip ) 
Developer在这里原型设计了一个移动应用程序,有点新增移动: 我有一个简单的HTTP服务运行(当前)在我的主要笔记本电脑上,带有机器名称 latitude 。 另一台笔记本电脑名为 vaio 共享相同的wifi网络可以通过 http://latitude:8080 - 换句话说,它可以轻松解决(当前)I...

2  在4.0 ICS中访问Internet的问题  ( Problem accessing internet in 4 0 ics ) 
对于一些奇怪的原因,我的Android 4.0 ICS平板电脑不再能够访问Internet。 首先,通过WiFi,它可以连接到两个不同的网络。 然后,我试图通过DHCP将其连接到家庭路由器。它不能。 至于Wifi,平板电脑获得IP号。 我不知道这是怎么发生的,如果它是 route 问题或dns问题或其他。 试图安装终...

5  如何在Nexus One上设置DNS服务器?  ( How to set the dns server on nexus one ) 
我在我的n1上使用的ISP不允许我打开Facebook。使用PC,我可以使用Google DNS服务器(8.8.8.8)来逐行它们,但在N1上,我找不到将stufff放在哪里。 如果您知道如何,请帮助。 ...

1  如何使用DNS66阻止访问域名?  ( How to block access to domains with dns66 ) 
我正在使用开源Android应用程序DNS66 在我的智能手机上阻止广告。它也可以通过它阻止整个域名(如facebook.com,twitter.com)吗?我的目标:如果我参观,我的目标是没有加载。 Facebook.com在移动Chrome浏览器中。 ...

24  如何在Android Kitkat上更改移动连接的DNS?  ( How to change mobile connectionss dns on android kitkat ) 
我想避免我当地的移动ISP中的审查(例如,因为一些未知原因,它阻止了Imgur。 屏幕截图(单击图像的较大变体) 我很确定我可以通过将我的DNS更改为Google DNS或Opendns来规避这一点,但我并不肯定如何在Kitkat上完成这一点。 Info: Device: Nexus 5 Android ...

7  我想要一个我可以锁定在DNS设置中的智能手机。是Android“这是”  ( I want a smart phone that i can lock in dns settings is android the one ) 
是关于互联网boss 。我希望能够锁定或密码保护DNS设置,以便Opendns,因此我可以拥有一个安全的智能手机,我的孩子可以使用,无需担心访问PR0N或其他任何东西。任何人都知道这是否可能?我不想使用另一种内容过滤方法。 ...

0  Android驱动程序在我的Win7主机上重置DNS  ( Android driver resets dns on my win7 host ) 
几天前,我将我的Android(HTC1)手机插入我的Win7机器,从未有任何网络问题。 当我连接时,我还制作了以下变化: 移动热点&amp; tethering-&gt; USB网络设置 - &gt;互联网通过 即使手机是断开时,某些东西(新)将DNS设置重置为手机的IP地址。我用 ipconfig /rene...

6  我可以覆盖HTC EVO上的默认DNS设置是否没有root访问权限?  ( Can i override the default dns settings on an htc evo without root access ) 
是有没有办法覆盖默认情况下使用的Sprint DNS服务器在HTC EVO运行Froyo的3G连接上使用没有root Access? 我想要这样做的原因是因为当我在家里的WiFi连接时,某些网站可以在使用Opendns或Google DNS时解决,但是当我在3G时,同一个网站就返回页面找到了,所以最简单的罪魁祸首是D...

6  Gingerbread手机只查询AAAA记录?  ( Gingerbread phone only queries for aaaa records ) 
自昨天我(除了常规IPv4)IPv6在我的LAN中的IPv6(本机IPv6由我的ISP提供)。 我有Windows XP,Windows 7和Linux桌面以及Android 3.1平板电脑(华硕变压器101),所有工作都很好。他们可以访问Internet上的IPv4和IPv6网站。 问题在于我的三星Galaxy S...

8  Android Wifi说“连接,没有互联网”,但互联网运作很好  ( Android wifi says connected no internet but internet works just fine ) 
这是一个奇怪的事情,即在我的工作中开始发生在WiFi网络。连接到网络的Android设备说"连接,无互联网" 但互联网完全良好。这已发生在运行Android 6和7的设备上。这是美国的小型企业,也没有阻止任何DNS的代理或封装门户。 Windows和Ubuntu笔记本电脑连接并说一切都很好,似乎是Android特定的...




© 2022 it.wenda123.org All Rights Reserved. 问答之家 版权所有