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
/ setprop
funktioniert nicht mehr. Wenn diese Werte geändert werden, werden sie vom netd
Dämon einfach ignoriert .
Es ist notwendig, direkt über den /dev/socket/netd
Socket mit dem Daemon zu kommunizieren . In Android gibt es jetzt ein Tool namens, ndc
das 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.
ndc resolver setifdns <iface> <domains> <dns1> <dns2> ...
. Beispiel:ndc resolver setifdns eth0 "" 8.8.8.8 8.8.4.4
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.
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
Suchen Sie die Zeilennummer, die udp dpt: 53 bis: xxx.xxx.xxx.xxx: 53 entspricht, und führen Sie den Befehl aus
quelle
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.
quelle
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 shell
mit probiereund 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
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
getprop
mich 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.conf
festgelegten 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.conf
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, 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?
quelle
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.
quelle
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 .
quelle