Ok, antes de mais nada, a divulgação completa : sou o autor de um aplicativo que agora está na Google Play Store e que permite alterar o DNS de qualquer conexão móvel no Android 4.4. O aplicativo requer raiz , custa alguns dólares e é chamado Substituir DNS . Foi-me dito, em uma resposta agora excluída, que é justo vincular ao meu aplicativo, desde que eu o exponha claramente.
O problema que encontrei com esta versão do Android (4.4) é que, aparentemente por motivos de cache, o comportamento do sistema foi alterado para redirecionar todas as consultas DNS para um daemon do sistema chamado netd
(aqui está um link para uma apresentação relacionada à rede Android anterior à 4.4) , no entanto, abrange parte desses tópicos).
O método getprop
/ setprop
não funciona mais. Esses valores, quando alterados, são simplesmente ignorados pelo netd
daemon.
É necessário se comunicar diretamente com o daemon através do /dev/socket/netd
soquete. No Android, agora está presente uma ferramenta chamada ndc
que faz exatamente esse trabalho.
A sintaxe para as coisas relacionadas ao DNS é esta:
# ndc resolver flushif <iface>
# ndc resolver flushdefaultif
# ndc resolver setifdns <iface> <domains> <dns1> <dns2>
# ndc resolver setdefaultif <iface>
O aplicativo adivinha automaticamente o nome do dispositivo de rede e aplica esses comandos sempre que uma rede móvel é ativada.
ndc resolver setifdns <iface> <domains> <dns1> <dns2> ...
. Exemplo:ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4
Eu "resolvi" esse problema usando uma regra 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 conectado ao 3G foi exatamente como descrito por Leo; ignorância de valores em getprop | grep dns [0-9] \]: e dhcpd.conf.
O motivo é o descrito aqui: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 Todos os aplicativos fazem pesquisas de DNS através do netd por meio de um soquete unix / dev / socket / dnsproxyd. Este encadeamento também descreve por que as propriedades do sistema estão sendo ignoradas.
Para desfazer isso, faça
, encontre o número da linha que corresponde a udp dpt: 53 a: xxx.xxx.xxx.xxx: 53 e faça
fonte
Infelizmente, pode ser impossível fazer a partir de agora, no entanto, é possível tentar o DNS Changer . Isso pode funcionar se você estiver enraizado, mas não há garantias.
Um bom serviço DNS a ser usado seria o serviço DNS público do Google. Isso tende a funcionar muito bem para esse tipo de problema aqui.
Se nada disso funcionar, continue procurando respostas. Um bom site para coisas como essa é o XDA Developers . Eles tendem a ter muitas respostas sobre o Android.
fonte
Estou no KitKat Cyanogenmod 11, o que significa que estou enraizado por padrão. Apesar disso, só posso relatar falhas:
1º método:
Quando eu tento o
adb shell
come, em seguida, teste para qual IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk resolve ... recebo uma resposta NXDOMAIN, o que significa que não veio do servidor de nomes OpenDNS que defini (que retornaria uma resposta com um IP alternativo para servir a você).
Ao fazer
Eu só veria o que configurei. No entanto, ao mudar de WiFi para celular (3G ou 4G / LTE), vejo IPs que reconheço como atribuídos à minha operadora de celular. Aplicativos como "DNSwitch" ou "DNS Changer" podem redefinir esses resolvedores automaticamente na alteração de rede. No entanto, o que
getprop
me informa, ainda não é o que realmente está fazendo a resolução.Segundo método [a]:
Outra maneira que tentei, é modificar
/system/etc/dhcpcd/dhcpcd-hooks/20-dns.conf
um conjunto de coisas corrigidas lá (mas esteja ciente de que os nomes de rede e o número de resolvedores podem ser diferentes). Sem sucesso.Segundo método [b]:
E em
/system/etc/dhcpcd/dhcpcd.conf
eu removi o parâmetro para aceitar resolvedores na negociação de DHCP. Sem sucesso também.3º método:
Até agora, a única coisa que funcionaria um pouco seria usar uma "VPN de homem pobre", usar o aplicativo "SSH Tunnel", usar SOCKS4, mas usar isso não foi exatamente um bom resultado.
Currículo:
Parece que o DNS está definido em outro lugar ou todos são encaminhados (seqüestrados) assim que a rede estiver móvel.
Então como vai? É outra maneira suja de fornecer às operadoras uma ferramenta para demolir a neutralidade da rede?
No seu caso, sua pergunta foi por causa disso. Você tem o SSH para tentar se o SSHTunnel é uma solução alternativa para contornar a censura de suas operadoras?
fonte
Encontrei o mesmo problema hoje e graças à Transfusion. Tentei desenvolver um aplicativo " DNS forwarde r" para resolver isso. Ele não altera o servidor DNS no sistema, mas encaminha as consultas DNS para outro servidor. Esta solução alternativa funciona bem para mim no Kitkat (Nexus 5 / 4.4.3 e Moto Razr / CM11). Espero que possa ajudar outros também.
fonte
Atualmente, acho que não há nenhuma maneira de alterar seu DNS nos dados móveis. Mas se o seu telefone estiver enraizado, você poderá usar aplicativos como Definir DNS .
fonte