Wie ändere ich das DNS der mobilen Verbindungen auf Android KitKat?

Ich möchte eine Zensur durch meinen lokalen mobilen ISP vermeiden (er blockiert zum Beispiel imgur aus unbekannten Gründen.

Bildschirmfoto
Screenshot (Bild anklicken für größere Variante)

Ich bin mir ziemlich sicher, dass ich dies umgehen kann, indem ich mein DNS in Google DNS oder OpenDNS ändere, aber ich bin mir nicht sicher, wie ich das auf KitKat bewerkstelligen soll.

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

Antworten (6)

Ok, zuerst einmal die vollständige Offenlegung : Ich bin der Autor einer App, die jetzt im Google Play Store erhältlich ist und die es Ihnen ermöglicht, DNS für jede mobile Verbindung auf Android 4.4 zu ändern. Die App benötigt Root , kostet ein paar Dollar und heißt Override DNS . Mir wurde in einer jetzt gelöschten Antwort gesagt, dass es fair ist, auf meine App zu verlinken, solange ich sie klar darlege.

Das Problem, das ich bei dieser Version von Android (4.4) gefunden habe, ist, dass anscheinend aus Caching-Gründen das Systemverhalten geändert wurde, um alle DNS-Anfragen an einen System-Daemon namens umzuleiten netd(hier ist ein Link zu einer Präsentation im Zusammenhang mit Android-Netzwerken vor 4.4, die , deckt jedoch einen Teil dieser Themen ab).

Die getprop/ setpropMethode funktioniert nicht mehr. Wenn diese Werte geändert werden, werden sie vom netdDaemon einfach ignoriert.

/dev/socket/netdEs ist notwendig, über den Socket direkt mit dem Daemon zu kommunizieren . In Android ist jetzt ein Tool namens vorhanden ndc, das genau diese Aufgabe übernimmt.

Die Syntax für das DNS-bezogene Zeug lautet wie folgt:

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

Die App errät automatisch den Namen des Netzwerkgeräts und wendet diese Befehle jedes Mal an, wenn ein Mobilfunknetz aktiviert wird.

Die korrekte Syntax von setifdns lautet: ndc resolver setifdns <iface> <domains> <dns1> <dns2> .... Beispiel:ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4
@Christiand'Heureuse du hast recht, ich habe die Antwort aktualisiert, danke.

Ich habe dieses Problem "gelöst", indem ich eine iptables-Regel verwendet habe, um alle Port-53-Verbindungen an einen beabsichtigten DNS-Server weiterzuleiten; Meine Erfahrung mit Android 4.4.2 beim Versuch, DNS-Einstellungen zu ändern, während ich mit 3G verbunden war, war genau so, wie Leo es beschrieben hat; Unkenntnis der Werte in getprop |grep dns[0-9]\]: und dhcpd.conf.

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

Der Grund ist wie hier beschrieben: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 Alle Apps führen DNS-Lookups durch netd über einen /dev/socket/dnsproxyd-Unix-Socket durch. Dieser Thread beschreibt auch, warum Systemeigenschaften ignoriert werden.

Um dies rückgängig zu machen, tun Sie es

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

, suchen Sie die Zeilennummer, die udp dpt:53 to:xxx.xxx.xxx.xxx:53 entspricht, und führen Sie dies aus

iptables -t nat -D OUTPUT *linenumber*
Danke! auch Zusammenfassung des Grundes: Google spielt Wettrüsten mit Werbeblockern. Sie haben versucht, die aktuellen Mittel zu deaktivieren, mit denen Werbeblocker funktionierten, und Werbeblocker zu einem anderen verschoben, während alle Benutzer (unabhängig davon, ob sie Werbeblocker verwenden oder nicht) für immer von diesem Schritt von Google genervt sein werden. ... Ich dachte, jeder wüsste inzwischen, dass der Kampf gegen Werbeblocker ein dummer Schachzug ist. blödes googlen. (Außerdem ist die Open-Source-App AFWALL eine bequeme Möglichkeit, diese benutzerdefinierte Regel einfach hinzuzufügen.)
AfWall+ Wiki darüber, wie man benutzerdefinierte Iptables-Regeln wie diese anwendet

Leider ist dies derzeit möglicherweise nicht möglich, es ist jedoch möglich, DNS Changer auszuprobieren . Dies kann funktionieren, wenn Sie gerootet sind, aber es gibt keine Garantien.

Ein guter DNS-Dienst wäre der öffentliche DNS-Dienst von Google. Es funktioniert hier in der Regel sehr gut für diese Art von Problemen.

Wenn nichts davon funktioniert, suchen Sie weiter nach Antworten. Eine gute Seite für solche Dinge ist XDA Developers . Sie neigen dazu, viele Antworten auf Dinge für Android zu haben.

Ich bin auf KitKat Cyanogenmod 11, was bedeutet, dass ich standardmäßig gerootet bin. Trotzdem kann ich nur Fehler melden:

1. Methode:

Wenn ich das adb shellmit versuche

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

und teste dann, zu welcher IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk auflöst ... Ich bekomme eine NXDOMAIN-Antwort, was bedeutet, dass sie nicht von dem von mir eingestellten OpenDNS-Nameserver stammt (der eine Antwort mit einer alternativen IP zurückgeben würde, um Ihnen zu dienen, fügt hinzu).

Beim machen

getprop | grep dns

Ich würde nur sehen, was ich konfiguriert habe. Wenn ich jedoch von WLAN auf Mobilfunk (3G oder 4G/LTE) umschalte, sehe ich IPs, die ich als meinem Mobilfunkanbieter zugewiesen erkenne. Apps wie "DNSwitch" oder "DNS Changer" können diese Resolver bei einem Netzwerkwechsel automatisch zurücksetzen. Was getpropmich jedoch meldet, ist immer noch nicht das, was wirklich die Auflösung bewirkt.

2. Methode [a]:

Ein anderer Weg, den ich versucht habe, ist das Ändern und Festlegen /system/etc/dhcpcd/dhcpcd-hooks/20-dns.confvon dort festgelegten Dingen (aber beachten Sie, dass Netzwerknamen und die Anzahl der Resolver unterschiedlich sein können). Ohne Erfolg.

2. Methode [b]:

Und in /system/etc/dhcpcd/dhcpcd.confhabe ich den Parameter entfernt, um Resolver bei der DHCP-Aushandlung zu akzeptieren. Auch kein Erfolg.

3. Methode:

Bisher würde das einzige, was ein wenig funktionieren würde, die Verwendung eines "poor man VPN", die Verwendung der App "SSH Tunnel", die Verwendung von SOCKS4 sein, aber damit habe ich nicht gerade ein gutes Ergebnis erzielt.

Weitermachen:

Es scheint, als ob entweder DNS woanders gesetzt ist oder alle weitergeleitet (gekapert) werden, sobald das Netzwerk mobil ist.

Also, wie kommt es? Ist es ein weiterer schmutziger Weg, Netzbetreibern ein Werkzeug zur Verfügung zu stellen, um die Netzneutralität zu zerstören?

In Ihrem Fall war Ihre Frage deswegen. Haben Sie SSH zum Ausprobieren, ob SSHTunnel eine alternative Lösung ist, um die Zensur Ihrer Netzbetreiber zu umgehen?

Ich habe einen Weg gefunden, die Sperre zu umgehen, aber es ist umständlich und von Fall zu Fall abhängig. Ich bin gerootet, also habe ich Zugriff auf die Hosts-Datei. Als nächstes habe ich nach den direkten IP-Adressen von imgur gesucht und diese Werte dann manuell in die Hosts-Datei eingegeben. Problem vorerst gelöst.

Ich bin heute auf das gleiche Problem gestoßen, und dank Transfusion. Ich habe versucht, eine App " DNS-Forwarder " zu entwickeln, um es zu lösen. Es ändert den DNS-Server auf dem System nicht, sondern leitet DNS-Abfragen an einen anderen Server weiter. Diese Problemumgehung funktioniert gut für mich auf Kitkat (Nexus 5/4.4.3 und Moto Razr/CM11). Hoffe es kann auch anderen helfen.

Das funktioniert tatsächlich, nicht sicher, warum Sie nicht gewählt wurden

Derzeit glaube ich nicht, dass es eine Möglichkeit gibt, Ihr DNS auf Ihren mobilen Daten zu ändern. Aber wenn Ihr Telefon gerootet ist, können Sie Apps wie Set DNS verwenden .

Leider scheint diese App Android 4.3 und höher nicht zu unterstützen :( Entnommen aus der Beschreibung der App: "BITTE INSTALLIEREN SIE IM MOMENT NICHT AUF ANDROID 4.3, ES GIBT PROBLEME MIT DER ART UND WEISE, WIE DIE DNS-VERARBEITUNG IM KERNEL GEÄNDERT WURDE. ICH HABE ES FÜR 4.3-GERÄTE VOM MARKT GEZOGEN."
Ihre Frage besagt, dass Sie es für Android KitKat benötigen, das Android 4.4. * ist, während Android 4.3 Jellybean ist.
Ich habe bereits die Seite der App im Play Store auf meinem Gerät geöffnet, und ganz oben steht: „Ihr Gerät ist mit dieser Version nicht kompatibel.“ Ich bin mir also sicher, dass das Problem von Version 4.3 bis KitKat weiterhin besteht.
Das Empfehlen von Apps ist laut FAQ nicht wirklich Teil dieser Seite. Ich habe die Frage beantwortet, ob Android das nativ kann. Ich empfehle, selbst im Play Store zu suchen.
Hinweis: Beim Besuch der Apps-Seite auf AppBrain werden mehrere Alternativen aufgelistet (obere 4 rechts). Beachten Sie jedoch, dass die meisten Lösungen in diesem Bereich Root-Zugriff erfordern.