Wie ändere ich den DNS von Mobilfunkverbindungen in Android KitKat?

24

Ich möchte die Zensur meines lokalen mobilen Internetdienstanbieters vermeiden (sie blockiert zum Beispiel imgur aus einem unbekannten Grund).

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

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

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

Antworten:

18

Ok, vor allem vollständige Offenlegung : Ich bin der Autor einer App, die jetzt im Google Play Store verfügbar ist und mit der Sie DNS für jede mobile Verbindung unter Android 4.4 ändern können. Die App benötigt root , kostet ein paar Dollar und heißt Override DNS . In einer nun gelöschten Antwort wurde mir gesagt, dass es fair ist, auf meine App zu verlinken, solange ich sie klar ausstelle.

Das Problem, das ich bei dieser Version von Android (4.4) festgestellt habe, ist, dass anscheinend aus Caching-Gründen das Systemverhalten geändert wurde, um alle DNS-Abfragen an einen System-Daemon mit dem Namen umzuleiten netd(hier ist ein Link zu einer Präsentation, die sich auf das Android-Netzwerk vor 4.4 bezieht) deckt jedoch einen Teil dieser Themen ab).

Die Methode getprop/ setpropfunktioniert nicht mehr. Wenn diese Werte geändert werden, werden sie vom netdDämon einfach ignoriert .

Es ist notwendig, direkt über den /dev/socket/netdSocket mit dem Daemon zu kommunizieren . In Android gibt es jetzt ein Tool namens, ndcdas genau diesen Job erledigt.

Die Syntax für das DNS-bezogene Material 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 bei jeder Aktivierung eines Mobilfunknetzes an.

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

Ich habe dieses Problem "gelöst", indem ich eine iptables-Regel verwendet habe, um alle Verbindungen von Port 53 an einen vorgesehenen DNS-Server weiterzuleiten. Meine Erfahrung mit Android 4.4.2 beim Versuch, die DNS-Einstellungen zu ändern, während eine Verbindung zu 3G besteht, 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 dafür ist hier beschrieben: http://forum.xda-developers.com/showpost.php?p=44722857&postcount=6 Alle Apps führen DNS-Lookups über netd über einen / dev / socket / dnsproxyd-Unix-Socket durch. Dieser Thread beschreibt auch, warum Systemeigenschaften ignoriert werden.

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

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

Suchen Sie die Zeilennummer, die udp dpt: 53 bis: xxx.xxx.xxx.xxx: 53 entspricht, und führen Sie den Befehl aus

iptables -t nat -D OUTPUT *linenumber*
Transfusion
quelle
2
Vielen Dank! Zusammenfassung des Grundes: Google spielt Wettrüsten mit Werbeblockern. Sie haben versucht, die aktuellen Mittel zu deaktivieren, mit denen Anzeigenblocker funktioniert haben, und haben Anzeigenblocker auf einen anderen verschoben, während alle Nutzer (unabhängig davon, ob sie Anzeigenblocker verwenden oder nicht) für immer über diesen Google-Umzug verärgert sind. ... Ich dachte, jeder wüsste, dass der Kampf gegen Werbeblocker mittlerweile ein blöder Schachzug ist. albernes google. (auch, OpenSource-App AFWALL ist ein bequemer Weg, um diese benutzerdefinierte Regel einfach hinzuzufügen)
GCB
AfWall + Wiki über das Anwenden von benutzerdefinierten Iptables-Regel wie folgt
betatester07
1

Leider ist es derzeit möglicherweise nicht möglich, DNS Changer zu testen . Dies kann funktionieren, wenn Sie verwurzelt sind, es gibt jedoch keine Garantien.

Ein guter zu verwendender DNS-Dienst wäre der öffentliche DNS-Dienst von Google. Für diese Art von Problemen funktioniert es in der Regel sehr gut.

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

pyrogoggles
quelle
1

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

1. Methode:

Wenn ich das adb shellmit probiere

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 dann zu testen, auf welche IP hjfdkhfjkyuiwnwetbyebvtwgqwdi.tk auflöst ... Ich erhalte eine NXDOMAIN-Antwort, was bedeutet, dass sie nicht vom von mir festgelegten OpenDNS-Nameserver stammt (der eine Antwort mit einer alternativen IP zurückgeben würde, um Ihnen zu dienen, fügt hinzu).

Wenn du tust

getprop | grep dns

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

2. Methode [a]:

Eine andere Möglichkeit, die ich ausprobiert habe, besteht darin, die dort /system/etc/dhcpcd/dhcpcd-hooks/20-dns.conffestgelegten Dinge zu ändern (beachten Sie jedoch, dass die Netzwerknamen und die Anzahl der Resolver unterschiedlich sein können). Ohne Erfolg.

2. Methode [b]:

Und in habe /system/etc/dhcpcd/dhcpcd.confich 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, ein "Poor Man VPN", die App "SSH Tunnel", SOCKS4, verwenden, aber damit habe ich nicht gerade ein gutes Ergebnis erzielt.

Weitermachen:

Es sieht so aus, als ob entweder DNS an einer anderen Stelle eingestellt ist oder alle weitergeleitet (entführt) werden, sobald das Netzwerk mobil ist.

Wie kommt es? Ist es eine andere schmutzige Methode, Netzbetreibern ein Werkzeug zur Verfügung zu stellen, um die Netzneutralität zu zerstören?

In deinem Fall war deine Frage deswegen. Haben Sie SSH, um zu versuchen, ob SSHTunnel eine alternative Lösung ist, um die Zensur Ihrer Netzbetreiber zu umgehen?

Löwe
quelle
Ich habe einen Weg gefunden, um den Block zu umgehen, aber es ist umständlich und von Fall zu Fall. Ich bin verwurzelt, damit ich Zugriff auf die Hosts-Datei habe. Als nächstes suchte ich nach den direkten IP-Adressen von imgur und gab diese Werte manuell in die Hosts-Datei ein. Problem vorerst gelöst.
user51893
1

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

user64656
quelle
Dies funktioniert tatsächlich, nicht sicher, warum Sie gewählt wurden
Kriegshymne
0

Derzeit gibt es meiner Meinung nach keine Möglichkeit, Ihr DNS auf Ihren mobilen Daten zu ändern. Wenn Ihr Telefon jedoch gerootet ist, können Sie Apps wie Set DNS verwenden .

Karan Raj Baruah
quelle
Leider scheint diese App Android 4.3 und höher nicht zu unterstützen :( Entnommen aus der Beschreibung der App: "BITTE INSTALLIEREN SIE ANDROID 4.3 FÜR DEN MOMENT NICHT, ES GIBT PROBLEME MIT DER WEISE, IN DER DER DNS-UMGANG IM KERNEL GEÄNDERT WURDE. Ich habe es vom Markt für 4.3 Geräte abgezogen. "
user51893
Ihre Frage besagt, dass Sie es für Android KitKat benötigen, also Android 4.4. *, Während Android 4.3 Jellybean ist.
Karan Raj Baruah
Ich habe die Seite der App im Play Store auf meinem Gerät bereits 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.
user51893
Das Empfehlen von Apps ist laut FAQ nicht wirklich Teil dieser Website. Ich habe die Frage beantwortet, ob Android das nativ kann. Ich empfehle, den Play Store selbst zu durchsuchen.
Karan Raj Baruah
Tipp: Beim Besuch der Apps-Seite in AppBrain werden verschiedene Alternativen aufgelistet (rechts oben 4). Beachten Sie jedoch, dass die meisten Lösungen in diesem Sektor Root-Zugriff erfordern.
Izzy