Warum ignoriert Android meine etc / hosts Änderungen im Browser?


19

Ich habe /sysals erneut gemountet rw, einen Eintrag zu etc/hosts(z. B. 10.0.0.1 x.com www.x.com) hinzugefügt und mein Gerät neu gestartet.

Wenn ich nach dem Neustart prüfe etc/hosts, ist der Eintrag in Ordnung. Wenn ich pinge x.com, pingt es die richtige IP-Adresse, die ich eingegeben habe.

Wenn ich jedoch einen Webbrowser (entweder Stock oder Dolphin) öffne und zu navigiere, x.comwechselt dieser zu der IP-Adresse, in die der DNS aufgelöst wird.

Was ist los?

(Mein Telefon ist ein Nexus One, auf dem das benutzerdefinierte Cyanogen 7.1-ROM auf Basis von Android 2.3.7 ausgeführt wird.)

Update:
Auf der App ' LAN Droid ' bekomme ich die bearbeitete Adresse (also 10.0.0.1) auch prima. Es scheint, dass es nur die Browser sind, in denen es sich falsch verhält.


Nur neugierig: Was ist, wenn Sie es umgekehrt machen und stattdessen eine bekannte Domain (oder eine Werbeseite) einrichten, um Localhost zu werden? Kann es das dann nicht laden? Und ist es wirklich so ein kurzer Domainname, wie er in Ihrem Beispiel verwendet wird? (Nicht so witzig: Internet Explorer akzeptiert keine Cookies mehr für aus zwei Buchstaben bestehende Domains . Natürlich unabhängig von Ihrem Problem, aber vielleicht haben kurze Domain-Namen in einigen Browsern andere merkwürdige Einschränkungen? Ich denke aber nicht.)
Arjan

2
Können Sie dies tun - ls -l /etc/hostsmöglicherweise Berechtigungs- / Besitzprobleme?
t0mm13b

@ t0mm13b "-rw-r - r-- root root"
gcb

@ t0mm13b Du bist genau richtig! In meinem Fall waren es die Berechtigungen. chmod 644 /system/etc/hostsaussortiert
KalenGi

Antworten:


6

Das hört sich genau so an , bis auf Ping, aber nicht auf den Browser. Seine letztendliche Lösung wird unten zitiert:

Dumme Frage, aber bearbeiten Sie die Datei auf dem Mobilteil oder verschieben Sie einfach die Datei, die Sie hier gepostet haben? Das, was Sie gepostet haben, ist im DOS-Format, daher enthält es zusätzliche Zeilenvorschubzeichen am Ende der Zeile, die ein Linux-System verwirren könnten.

Ich weiß nicht, was Sie zum Ändern verwendet haben, aber Sie möchten möglicherweise überprüfen, welche Art von Zeilenvorschub- / Zeilenumbruchzeichen verwendet werden.


bearbeitet mit vi auf dem terminal emulator. versuchte nun zu erzwingen ff=unixund set listeinen DOS-Zeilenumbruch zu sehen ... ging sogar voran und führte einen regulären Ausdruck aus, als gäbe es einen DOS-Zeilenumbruch, nichts gefunden.
GCB

4

Ich bin mir nicht sicher, ob das hilft, aber ich hatte ein Problem mit einer ignorierten Hosts-Datei und es wurde von einem Typ in diesem Thread gelöst. Die Antwort ist, eine leere neue Zeile am Ende der Datei einzufügen.


2

Können Sie strace installieren und die auf ping ausgeführte Ausgabe mit strace im Browser vergleichen, um festzustellen, warum DNS-Lookups anders gehandhabt werden?

Sind Sie sicher, dass kein beständiges Caching stattfindet? Was ist die TTL in Ihren Domain-Einträgen?

Android scheint /etc/resolv.conf nicht zu verwenden, aber möglicherweise gibt es einige Eigenschaften, die steuern, welche Apps / etc / hosts verwenden und welche direkt zur DNS-Suche gehen. https://groups.google.com/forum/?fromgroups#!topic/android-platform/K2Wr4WaEneI


gute Argumente. TTL ist 1h, der Standard für die Catch All-Regel, die ich habe. Der Thread g.groups handelt hauptsächlich von der Entscheidung, welcher Nameserver bei DNS-Abfragen betroffen sein soll. Diese Logik erfolgt nach etc / hosts. Ich hoffe. Jetzt laufe ich die Strecke (finde heraus, wie es vorher geht) und melde mich zurück.
GCB

2

Wenn Sie die Hosts-Datei auf einem Windows-Computer erstellen, stellen Sie sicher, dass jede Zeile nur durch ein LF getrennt ist (nicht [CR] [LF], nur [LF]). Sie können dies überprüfen und mit Notepad ++ die richtigen Hostdateien erstellen.


0

Ich denke, Sie müssen DNS auf Ihrem Android-Gerät leeren. Überprüfen Sie diese Frage /programming/2101762/android-flush-dns , insbesondere "Einstellungen aufrufen -> Anwendungen -> Netzwerkspeicherort -> Daten löschen".


Ich habe nicht einmal diese Option auf Android 2.3.7. Aber das Telefon ist mit dieser Änderung seit Monaten auf etc / hosts. und ich starte es häufig neu ... ich hoffe, dass DNS aus irgendeinem Grund seit Monaten nicht zwischengespeichert wird.
GCB

0

Mein Verdacht wäre, dass der Browser so konfiguriert ist, dass er über einen Proxy funktioniert.

Möglicherweise können Sie mithilfe von netstat -n oder in / proc / net / tcp (oder besser noch in / proc / # browser_pid # / net / tcp) feststellen, mit welcher Adresse die Verbindung tatsächlich hergestellt wird. Wenn dies nicht mit der Adresse Ihrer Website übereinstimmt, gehen Sie wahrscheinlich zu einem Vermittler.


-2

Normalerweise würde ich sagen (aber das trifft leider nicht auf Sie zu):

Versuchen Sie einfach einen Neustart, wenn Änderungen nicht bemerkt werden, weil die Dalvik-Maschineninstanz oder das zugrunde liegende System möglicherweise eine frühere DNS-Anforderung zwischengespeichert hat.

Sie können AdAway versuchen, Einträge manuell zu Ihrer Hosts-Datei hinzuzufügen (nur um zu überprüfen, ob es das Gleiche tut wie manuell).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.