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

0  Como habilitar chaves programáveis ​​em Xiaomi Redmi 1S?  ( How to enable soft keys on xiaomi redmi 1s ) 
Como habilitar o Nexus 5 Como teclas programáveis ​​(teclas de navegação na tela de toque) em dispositivos Android? Meu dispositivo é Xiaomi RedMi 1S Running ...

0  Por que o discador às vezes falha em discar?  ( Why does dialler sometimes fail to dial ) 
Eu comprei recentemente um moto g2, com o Android 4.4.4. Estou muito feliz com isso, além do fato de que às vezes quando disque um número, o telefone simplesm...

5  "Infelizmente, os serviços do Google Play parou." No Android L Developer Preview  ( Unfortunately google play services has stopped on android l developer previe ) 
Estou executando a visualização do desenvolvedor do Android L no meu Nexus 5. Estou tentando instalar o Google Inbox Beta, mas só posso chegar à tela de inscr...

11  Como (desabafar WhatsApp Contact / Remover WhatsApp Account) no Samsung Galaxy S5?  ( How to unhide whatsapp contact remove whatsapp account in samsung galaxy s5 ) 
Por favor, seja paciente para eu explicar a situação. Este parece ser um caso estranho para mim, mas isso pode acontecer com todos usando o Android. Eu faço...

0  A estrutura XPosed exige ser Buillt especificamente para o dispositivo ou apenas a versão do Android?  ( Does xposed framework require to be buillt specifically for the device or just t ) 
Ao instalar a estrutura XPOSED, eu preciso do binário específico do dispositivo (como recuperação personalizada ou ROM) ou apenas o aplicativo que funciona pa...

2  Wi-Fi se conecta às vezes então desconecta e nunca conecta  ( Wifi connects for sometimes then disconnects and then never connects ) 
deles é uma grande questão de wifi no meu telefone quando eu comprei pela primeira vez ... meu telefone é um spice stellar MI-439, Android Kitkat V4.4.2, p...

50  Backup de ADB cria arquivo 0-byte; solicita a senha de backup atual, apesar de nunca definir um; "Falha ao definir a senha" para a senha de backup da área de trabalho  ( Adb backup creates 0 byte file prompts for current backup password even though ) 
o problema: Toda vez que eu executo backup adb, recebo uma mensagem perto da parte inferior da tela inicial dizendo Backup starting... , seguido por uma me...

0  Configuração de aplicação não funciona  ( Application setting not work ) 
Eu tenho a Micromax Canvas Gold A300 e sua configuração de aplicativo não funciona quando tento abrir a configuração de mostrar infelizmente. Então eu não con...

1  Como posso forçar meu dispositivo a puxar mais watts do carregador?  ( How can i force my device to pull more watts from charger ) 
Eu tenho três dispositivos, Nobis NB7022 S, Droid Mini, ASUS Memo Pad 7 (ME170CX). Eu estou usando um carregador que tem uma avaliação de 2000mA. O nobis atra...

1  Excluir uma tela inicial no Motorola Moto G  ( Delete a homescreen on motorola moto g ) 
Eu me perguntei como eu poderia remover uma tela inicial em um motorola moto g com o Android 4.4 (Kitkat) .. Eu tentei zoom, como costumava fazer com o meu te...

1  Como sincronizar fotos excluídas com o Google Fotos / Drive?  ( How to sync deleted photos with google photos drive ) 
Tenha em mente que quando eu tirar fotos, posso levar 2 fotos da mesma instância. Eu chego em casa, comece a Wi-Fi. Todas as fotos são sincronizadas com fotos...

1  Play Store continue batendo enquanto atualiza aplicativos no Nexus 5  ( Play store keep crashing while updating apps on nexus 5 ) 
OK, então eu tenho um Nexus 5, estoque, atualizado para a última versão do Android. Quando atualizo aplicativos, alguns deles, ao fazer o download da atuali...

1  Problema SMS - Moto G Update 4.4.4  ( Sms problem moto g update 4 4 4 ) 
Um problema apareceu no meu moto g após a atualização para 4.4.4. O aplicativo Hangout Pare de trabalhar com SMS. Além disso, não consigo ativar o aplicativo ...

1  Ativando o armazenamento em massa em vez de MTP / PTP  ( Enabling mass storage instead of mtp ptp ) 
Existe alguma maneira de permitir o antigo modo de armazenamento de massa no Android 4.4.2? Agora eu só posso ver modos MTP ou PTP, mas não o modo de armaze...

1  Bateria para baixo durante a noite?  ( Battery down over night ) 
Eu só encontrei uma pergunta em que a causa desse problema foi o serviço de troca. Mas no meu caso, a bateria caiu de 80 a 9% durante a noite, com 55% consumi...




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


Licensed under cc by-sa 3.0 with attribution required.