Dlaczego Android ignoruje zmiany w mojej przeglądarce etc / hosts w przeglądarce?

19

Ponownie zamontowałem /sysjako rw, dodałem jeden wpis etc/hosts(np. 10.0.0.1 x.com www.x.com) I ponownie uruchomiłem urządzenie.

Po ponownym uruchomieniu, jeśli sprawdzę etc/hosts, wpis jest w porządku. Jeśli pinguję x.com, pinguje poprawny adres IP, który podałem.

Ale jeśli otworzę przeglądarkę internetową (giełdową lub Dolphin) i x.comprzejdę do niej, przejdzie ona na adres IP, na który DNS rozpoznaje.

Co się dzieje?

(Mój telefon to Nexus One, na którym działa niestandardowa pamięć ROM Cyanogen 7.1 oparta na Androidzie 2.3.7)

Aktualizacja:
w aplikacji „ LAN Droid ” dostaję edytowany adres (więc 10.0.0.1) też w porządku. Wygląda na to, że tylko przeglądarki źle się zachowują.

gcb
źródło
Ciekawe: co zrobić, jeśli zrobisz to na odwrót i ustawisz dobrze znaną domenę (lub witrynę reklamową), aby zamiast tego zostać hostem lokalnym? Czy to wtedy nie ładuje? I czy to naprawdę tak krótka nazwa domeny jak w twoim przykładzie? (Niezbyt zabawny fakt: Internet Explorer przestał akceptować pliki cookie dla domen dwuliterowych . Oczywiście, nie ma to związku z twoim problemem, ale może krótkie nazwy domen mają inne dziwne ograniczenia w niektórych przeglądarkach? Chyba nie.)
Arjan
2
czy możesz to zrobić - ls -l /etc/hostsewentualnie problem z uprawnieniami / własnością?
t0mm13b
@ t0mm13b "-rw-r - r-- root root"
gcb
@ t0mm13b jesteś na miejscu! W moim przypadku były to uprawnienia. chmod 644 /system/etc/hostsrozwiązałem to
KalenGi

Odpowiedzi:

6

Brzmi to dokładnie jak ten , aż do ping pracy, ale nie w przeglądarce. Jego ostateczne rozwiązanie jest cytowane poniżej:

Głupie pytanie, ale czy edytujesz plik na słuchawce, czy tylko wypychasz plik, który tutaj opublikowałeś? Ten, który opublikowałeś jest w formacie dos, więc ma dodatkowe znaki wysuwu linii na końcu linii, które mogą mylić system Linux.

Nie wiem, co zmodyfikowałeś, ale możesz chcieć sprawdzić, jakich znaków linii / nowego wiersza używa.

Egobits
źródło
edytowane za pomocą vi na emulatorze terminali. próbował wymusić ff=unixteraz i set listzobaczyć przerwanie linii DOS ... nawet poszedł naprzód i uruchom wyrażenie regularne, jakby było jakieś przerwanie linii DOS, nic nie znaleziono.
gcb
4

Nie jestem pewien, czy to pomaga, ale miałem problem z ignorowanym plikiem hosts i został rozwiązany przez faceta w tym wątku - odpowiedzią jest umieszczenie pustej nowej linii na końcu pliku.

Fletch
źródło
2

Czy możesz zainstalować strace i porównać wyjściowe uruchomione śledzenie przy ping z śledzeniem w przeglądarce, aby zobaczyć, dlaczego wyszukiwania DNS są obsługiwane inaczej?

Czy na pewno nie trwa stałe buforowanie? Jakie jest TTL w Twojej domenie?

Wygląda na to, że Android nie używa /etc/resolv.conf, ale może istnieją pewne właściwości, które kontrolują, które aplikacje używają / etc / hosts i które przechodzą bezpośrednio do wyszukiwania DNS. https://groups.google.com/forum/?fromgroups#!topic/android-platform/K2Wr4WaEneI

Kieran Tully
źródło
słuszne uwagi. TTL to 1h, domyślna reguła catch all mam. Wątek g.groups dotyczy głównie decyzji, który serwer nazw powinien zostać trafiony podczas zapytań DNS, logika ta dzieje się po etc / hosts. mam nadzieję. Teraz uruchomię śledzenie (dowiedzę się, jak to zrobić wcześniej) i zdam raport.
gcb,
2

Jeśli tworzysz plik hosts na komputerze z systemem Windows, upewnij się, że każdy wiersz jest oddzielony tylko LF (nie [CR] [LF], tylko [LF]). Możesz to sprawdzić i utworzyć odpowiednie pliki hostów za pomocą notatnika ++.

Tom Teman
źródło
0

Myślę, że musisz opróżnić DNS na swoim Androidzie, sprawdź to pytanie /programming/2101762/android-flush-dns , szczególnie „przejdź do ustawień -> aplikacje -> Lokalizacja sieci -> Wyczyść dane”.

Społeczność
źródło
nawet nie mam tej opcji na Androidzie 2.3.7. Ale telefon jest z tą zmianą na etc / hosts od miesięcy. i często go restartuję ... mam nadzieję, że DNS nie jest buforowany przez wiele miesięcy z jakiegokolwiek powodu.
gcb
0

Podejrzewam, że przeglądarka jest skonfigurowana do pracy przez serwer proxy.

Możesz być w stanie stwierdzić za pomocą netstat -n lub w / proc / net / tcp (lub jeszcze lepiej, / proc / # browser_pid # / net / tcp) z jakim adresem się faktycznie łączy. Jeśli to nie zgadza się z adresem Twojej witryny, prawdopodobnie przechodzisz przez pośrednika.

Chris Stratton
źródło
-2

Zwykle powiedziałbym (ale nie dotyczy to ciebie, niestety):

Po prostu spróbuj zrestartować komputer, jeśli zmiany nie zostaną zauważone, ponieważ instancja komputera Dalvik lub podstawowy system mógł buforować poprzednie żądanie DNS.

Możesz spróbować AdAway ręcznie dodać wpisy do pliku hosts (aby sprawdzić, czy robi to tak samo jak ręcznie).

ce4
źródło