Como alterar o DNS dos Conexões Móveis no Android Kitkat? -- 4.4-kitkat campo com dns camp android Relacionado O problema

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


24
vote

problema

português

Eu quero evitar a censura do meu ISP móvel local (bloqueia Imgur, por exemplo, por algum motivo desconhecido.

screenshot
screenshot (clique em Imagem para maior variante)

Estou muito certo de que posso contornar isso alterando meu DNS para o Google DNS ou Opendns, mas eu não tenho certeza de como realizar isso no Kitkat.

  Info: Device: Nexus 5 Android version: 4.4.2 Device status: rooted    
Inglês Original

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 
     

Lista de respostas

18
 
vote

OK, em primeiro lugar Divulgação Completa : Eu sou o autor de um aplicativo que agora está na loja do Google e o que faz você conseguir alterar o DNS para qualquer conexão móvel no Android 4.4. O aplicativo requer raiz , custa um par de dólares e é chamado Substituir DNS . Foi-me dito, em uma resposta agora excluída, isso é justo para vincular ao meu aplicativo, desde que eu exponha claramente.

O problema que encontrei com este lançamento do Android (4.4) é que, aparentemente para motivos de cache, o comportamento do sistema foi alterado para redirecionar todas as consultas DNS para um daemon do sistema chamado ABCDEFGHIJKLMNABCDEFGHIJKLMN0 (Aqui está um link para uma apresentação relacionada para o Android Networking antes de 4.4, o que, no entanto, cobre parte desses tópicos).

o getprop / setprop método não funciona mais. Esses valores, quando alterados, fique simplesmente ignorado pelo daemon ABCDEFGHIJKLMNABCDEFGHIJKLMN3

É necessário se comunicar diretamente ao daemon através do soquete abcdefghgjklmn4 . No Android agora está presente uma ferramenta chamada ndc que faz exatamente este trabalho.

A sintaxe para o material relacionado ao DNS é este:

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

o app adivinha automaticamente o nome do dispositivo de rede e aplica esses comandos toda vez que uma rede móvel é ativada.

 

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

I "resolvido" este problema usando uma regra de iptables para encaminhar todas as conexões da porta 53 para um servidor DNS pretendido; Minha experiência no Android 4.4.2 com a tentativa de modificar as configurações de DNS enquanto conectada a 3G foi exatamente como Leo descreveu; ignorância de valores no getprop | grep dns [0-9] ]: e dhcpd.conf.

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

A razão é como descrito aqui: http: //forum.xda-developers. com / showpost.php? p = 44722857 & amp; postcount = 6 Todos os aplicativos do DNS Lookups através do NETD através de um soquete Unix / DNSProxyd. Este tópico também descreve por que as propriedades do sistema estão sendo ignoradas.

Para desfazer isso, faça

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

, encontre o número da linha que corresponde ao UDP DPT: 53 a: xxx.xxx.xxx.xxx: 53 e fazer

  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

Infelizmente, pode ser impossível fazer a partir de agora, no entanto, é possível tentar Changer DNS . Isso pode funcionar se você estiver enraizado, mas não há garantias.

Um bom serviço DNS para usar seria o serviço DNS público do Google. Tende a trabalhar muito bem para esses tipos de problemas aqui.

Se nada disso funcionar, continue procurando respostas. Um bom site para coisas como esta é desenvolvedores XDA . Eles tendem a ter muitas respostas em coisas para o 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

Estou no Kitkat CyanogenMod 11, o que significa que estou enraizado por padrão. Apesar de eu só posso relatar falhas:

1º método:

Quando eu tento o adb shell com

  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    

e, em seguida, teste para o qual IP HJFDKHFJKYUIWNWETBYEBVTWGQWDI.TK Resolve ... Eu recebo uma resposta nxdomain, o que significa que não veio do nome do Opendns que eu defini (o que retornaria uma resposta com um IP alternativo, para atendê-lo).

Ao fazer

  getprop | grep dns    

Eu só veria o que configurei. No entanto, ao mudar de WiFi para Mobile (3G ou 4G / LTE), vejo IPs que reconheço como sendo atribuído à minha transportadora móvel. Apps como "dnswitch" ou "DNS Changer" podem reconfigurar esses resolvedores automaticamente na mudança de rede. No entanto, o que getprop informa-me, ainda não é o que realmente está fazendo a resolução.

2º método [a]:

Outra maneira que eu tentei, é modifieng /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf um conjunto de coisas fixadas lá (mas estar ciente de nomes de rede e número de resolvedores podem ser diferentes). Sem sucesso.

2º método [b]:

e em /system/etc/dhcpcd/dhcpcd.conf Eu removi o parâmetro para aceitar os resolvedores na negociação DHCP. Nenhum sucesso também.

3th método:

até agora a única coisa que funcionaria um pouco é usando um "pobre homem vpn", usando o aplicativo "ssh túnel", usando a Socks4, mas usando que eu não consegui exatamente um bom resultado.

currículo:

Parece que o DNS Set em outro lugar ou todos são encaminhados (seqüestrados) assim que a rede é móvel.

Então, como vem? É outra maneira suja de fornecer transportadoras uma ferramenta para demolir a neutralidade da rede?

No seu caso, sua pergunta foi por causa disso. Você tem ssh para tentar se o sshtunnel é uma solução alternativa para contornar suas transportadoras censurando?

 

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

Eu encontrei o mesmo problema hoje e graças à transfusão. Eu tentei desenvolver um aplicativo " DNS FORKE R" para resolver isso. Ele não altera o servidor DNS no sistema, mas encaminhamos consultas DNS para outro servidor. Esta solução funciona bem para mim no Kitkat (Nexus 5 / 4.4.3 e Moto Razr / cm11). Espero que possa ajudar outros também.

 

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

Atualmente não acho que há alguma maneira de alterar seu DNS em seus dados móveis. Mas se o seu telefone estiver enraizado, você pode usar aplicativos como Set 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.

 
 
         
         

Perguntas relacionadas

8  Android WiFi diz "conectado, sem internet", mas a Internet funciona muito bem  ( Android wifi says connected no internet but internet works just fine ) 
Esta é uma coisa estranha que começou a acontecer com a rede WiFi no meu trabalho. Dispositivos Android conectados à rede dizem "conectado, sem internet", no ...

1  Como bloquear o acesso a domínios com DNS66?  ( How to block access to domains with dns66 ) 
Estou usando o open source android app dns66 para bloquear anúncios no meu smartphone. É possível bloquear domínios inteiros (como facebook.com, twitter.com...

7  Eu quero um telefone inteligente que eu possa bloquear as configurações de DNS. É android "o único"  ( I want a smart phone that i can lock in dns settings is android the one ) 
É tudo sobre ser o Chefe da Internet . Eu quero ser capaz de bloquear ou senha proteger as configurações de DNS para OpenDns, para que eu possa ter um smartp...

0  Driver Android redefine o DNS no meu host Win7  ( Android driver resets dns on my win7 host ) 
alguns dias atrás eu conectou meu telefone Android (HTC1) à minha máquina Win7 que nunca tinha nenhum problema de rede. Quando eu conectar, também fiz a seg...

6  Phone Gingerbread somente consultas para registros AAAA?  ( Gingerbread phone only queries for aaaa records ) 
Desde ontem eu tenho (além do IPv4 regular) IPv6 na minha LAN em casa (IPv6 nativo é fornecido pelo My ISP). Eu tenho o Windows XP, o Windows 7 e o Linux de...

24  Como alterar o DNS dos Conexões Móveis no Android Kitkat?  ( How to change mobile connectionss dns on android kitkat ) 
Eu quero evitar a censura do meu ISP móvel local (bloqueia Imgur, por exemplo, por algum motivo desconhecido. screenshot (clique em Imagem para maior var...

6  Posso substituir as configurações de DNS padrão em um HTC EVO sem acesso root?  ( Can i override the default dns settings on an htc evo without root access ) 
Existe alguma maneira de substituir o (s) servidor (s) Sprint DNS usado por padrão na conexão 3G de um HTC EVO executando Froyo sem acesso root? A razão que...

28  Como chegar a um computador local via nome da máquina em vez de IP?  ( How to reach local computer via machine name instead of ip ) 
Desenvolvedor aqui Prototipando um aplicativo móvel, um pouco novo para celular: Eu tenho um serviço HTTP simples em execução (atualmente) no meu laptop pr...

5  Como definir o servidor DNS no Nexus One?  ( How to set the dns server on nexus one ) 
O ISP que uso no meu N1 não me permite abrir o Facebook. Usando um PC, posso usar o servidor DNS do Google (8.8.8.8) para passá-los, mas no N1, não consigo en...

2  Problema acessando a Internet em 4,0 ics  ( Problem accessing internet in 4 0 ics ) 
Por alguma razão estranha, meu tablet ICs Android 4.0 não é mais capaz de acessar a Internet. Primeiro, via WiFi, pode conectar-se a duas redes distintas. Ent...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.