Come modificare il DNS delle connessioni mobili su Android KitKat?


24

Voglio evitare la censura dal mio ISP mobile locale (blocca imgur, ad esempio, per qualche motivo sconosciuto.

Immagine dello schermo
Schermata (fare clic sull'immagine per una variante più grande)

Sono abbastanza certo di poter aggirare questo problema cambiando il mio DNS in Google DNS o OpenDNS, ma non sono davvero sicuro di come farlo su KitKat.

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

Risposte:


18

Ok, prima di tutto la piena divulgazione : sono l'autore di un'app che ora è su Google Play Store e che ti rende in grado di cambiare DNS per qualsiasi connessione mobile su Android 4.4. L'app richiede root , costa un paio di dollari e si chiama Override DNS . Mi è stato detto, su una risposta ora cancellata, che è giusto collegarsi alla mia app fino a quando la espongo chiaramente.

Il problema che ho riscontrato con questa versione di Android (4.4) è che, apparentemente per motivi di memorizzazione nella cache, il comportamento del sistema è stato modificato per reindirizzare tutte le query DNS a un demone di sistema chiamato netd(ecco un collegamento a una presentazione relativa alla rete Android prima della 4.4 che , tuttavia, copre parte di questi argomenti).

Il metodo getprop/ setpropnon funziona più. Questi valori, quando modificati, vengono semplicemente ignorati dal netddemone.

È necessario comunicare direttamente con il demone tramite il /dev/socket/netdsocket. In Android è ora presente uno strumento chiamato ndcche fa esattamente questo lavoro.

La sintassi per le cose relative al DNS è questa:

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

L' app indovina automaticamente il nome del dispositivo di rete e applica questi comandi ogni volta che viene attivata una rete mobile.


La sintassi corretta è setifdns: ndc resolver setifdns <iface> <domains> <dns1> <dns2> .... Esempio:ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4
Christian d'Heureuse,

@ Christiand'Heureuse hai ragione, ho aggiornato la risposta, grazie.
MaxChinni,

13

Ho "risolto" questo problema utilizzando una regola iptables per inoltrare tutte le connessioni della porta 53 a un server DNS previsto; la mia esperienza su Android 4.4.2 nel tentativo di modificare le impostazioni DNS durante la connessione a 3G è stata esattamente come descritta da Leo; ignoranza dei valori in 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

Il motivo è come descritto qui: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 Tutte le app eseguono ricerche DNS tramite netd tramite un socket / dev / socket / dnsproxyd unix. Questo thread descrive anche perché le proprietà di sistema vengono ignorate.

Per annullare questo, fare

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

, trova il numero di riga che corrisponde a udp dpt: 53 a: xxx.xxx.xxx.xxx: 53 e fai

iptables -t nat -D OUTPUT *linenumber*

2
Grazie! inoltre, riassunto del motivo: Google sta giocando alla corsa agli armamenti con gli ad blocker. hanno cercato di disabilitare gli attuali mezzi di blocco degli annunci e i blocchi degli annunci sono passati a un altro, mentre tutti gli utenti (indipendentemente dall'utilizzo del blocco degli annunci o meno) saranno infastiditi per sempre da quella mossa di google. ... Pensavo che ormai tutti sapessero che combattere contro gli ad blocker era una mossa stupida. sciocco google. (inoltre, l'app opensource AFWALL è un modo conveniente per aggiungere facilmente questa regola personalizzata)
gcb

AfWall + wiki su come applicare la regola personalizzata iptables in questo modo
betatester07

1

Purtroppo, potrebbe essere impossibile farlo al momento, tuttavia, è possibile provare DNS Changer . Questo può funzionare se si è rootati, ma non ci sono garanzie.

Un buon servizio DNS da utilizzare sarebbe il servizio DNS pubblico di Google. Tende a funzionare molto bene per questo tipo di problemi proprio qui.

Se nulla di tutto ciò funziona, continua a cercare risposte. Un buon sito per cose come questa è XDA Developers . Tendono ad avere molte risposte sulle cose per Android.


1

Sono su KitKat Cyanogenmod 11, il che significa che sono radicato per impostazione predefinita. Nonostante ciò, posso solo segnalare un errore:

1o metodo:

Quando provo il adb shellcon

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 quindi prova a quale IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk si risolve ... Ottengo una risposta NXDOMAIN, il che significa che non proviene dal nameserver OpenDNS che ho impostato (che restituirebbe una risposta con un IP alternativo, per servirti aggiunge).

Quando si fa

getprop | grep dns

Vorrei solo vedere quello che ho configurato. Tuttavia, quando si passa dal WiFi al cellulare (3G o 4G / LTE) vedo gli IP che riconosco essere assegnati al mio gestore di telefonia mobile. App come "DNSwitch" o "DNS Changer" possono reimpostare automaticamente quei resolver al cambio di rete. Tuttavia, ciò getpropche mi segnala, non è ancora ciò che sta veramente facendo la risoluzione.

2o metodo [a]:

Un altro modo in cui ho provato è modificare /system/etc/dhcpcd/dhcpcd-hooks/20-dns.confun set di cose riparate lì dentro (ma attenzione: i nomi di rete e il numero di resolver possono differire). Senza successo.

2o metodo [b]:

E in /system/etc/dhcpcd/dhcpcd.confho rimosso il parametro per accettare i resolver alla negoziazione DHCP. Nessun successo neanche.

3o metodo:

Finora l'unica cosa che avrebbe funzionato un po 'è usare una "povera VPN", usando l'app "SSH Tunnel", usando SOCKS4, ma usando quello non ho ottenuto esattamente un buon risultato.

Curriculum vitae:

Sembra che il DNS sia impostato altrove o che tutti vengano inoltrati (dirottati) non appena la rete è mobile.

Allora, come mai? È un altro modo sporco di fornire ai vettori uno strumento per demolire la neutralità della rete?

Nel tuo caso la tua domanda era per questo. Hai SSH da provare se SSHTunnel è una soluzione alternativa per aggirare la censura dei tuoi corrieri?


Ho trovato un modo per aggirare il blocco, ma è ingombrante e caso per caso. Sono rootato, quindi ho accesso al file hosts. Successivamente, ho cercato gli indirizzi IP diretti di imgur, quindi ho inserito manualmente quei valori nel file hosts. Problema risolto per ora.
user51893

1

Oggi ho riscontrato lo stesso problema e grazie a Transfusion. Ho provato a sviluppare un'app " DNS forwarder r" per risolverlo. Non cambia il server DNS sul sistema, ma inoltra le query DNS a un altro server. Questa soluzione alternativa funziona per me su Kitkat (Nexus 5 / 4.4.3 e Moto Razr / CM11). Spero che possa aiutare anche gli altri.


In realtà funziona, non sono sicuro del motivo per cui sei stato votato
guerra il

0

Attualmente non penso che ci sia modo di cambiare il tuo DNS sui tuoi dati mobili. Ma se il tuo telefono è rootato puoi usare app come Set DNS .


Purtroppo, questa app non sembra supportare Android 4.3 e versioni successive :( Tratto dalla descrizione dell'app: "PER FAVORE NON INSTALLARE SU ANDROID 4.3 PER IL MOMENTO, CI SONO PROBLEMI CON IL MODO IN CUI IL GESTIONE DEL DNS È STATO CAMBIATO NEL KERNEL. L'ho preso dal mercato per i dispositivi 4.3. "
user51893

La tua domanda dice che ne hai bisogno per Android KitKat che è Android 4.4. * Mentre Android 4.3 è Jellybean.
Karan Raj Baruah,

Ho già aperto la pagina dell'app sul Play Store sul mio dispositivo e dice proprio in alto: "Il tuo dispositivo non è compatibile con questa versione". Quindi sono sicuro che il problema persiste dalla versione 4.3 a KitKat.
user51893,

Raccomandare le app non fa davvero parte di questo sito secondo le FAQ. Ho risposto alla domanda se Android può farlo in modo nativo. Consiglio di cercare da solo il Play Store.
Karan Raj Baruah,

Suggerimento: visitare la pagina delle app su AppBrain elenca diverse alternative (in alto a destra 4). Si noti, tuttavia, che la maggior parte delle soluzioni in quel settore richiede l'accesso come root.
Izzy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.