Mengapa android mengabaikan perubahan etc / hosts saya di browser?

19

Saya telah menghitung ulang /syssebagai rw, menambahkan satu entri ke etc/hosts(misalnya 10.0.0.1 x.com www.x.com) dan mem-boot ulang perangkat saya.

Setelah reboot, jika saya periksa etc/hosts, entri baik-baik saja. Jika saya ping x.com, ping alamat IP yang benar saya masukkan.

Tapi, jika saya membuka browser web (baik stock atau Dolphin), dan browse ke x.com, itu akan pergi ke alamat IP yang DNS putuskan.

Apa yang terjadi?

(Ponsel saya adalah Nexus One, yang menjalankan ROM Cyanogen 7.1 khusus berdasarkan Android 2.3.7)

Pembaruan:
Pada aplikasi ' LAN Droid ' saya mendapatkan alamat yang sudah diedit (jadi 10.0.0.1) baik-baik saja. Sepertinya hanya browser yang berperilaku salah.

gcb
sumber
Hanya ingin tahu: bagaimana jika Anda melakukannya sebaliknya, dan menetapkan domain yang cukup dikenal (atau situs iklan) untuk menjadi localhost saja? Apakah itu gagal memuat itu? Dan apakah itu benar-benar nama domain pendek seperti yang digunakan dalam contoh Anda? (Fakta yang tidak terlalu menyenangkan: Internet Explorer berhenti menerima cookie untuk domain dua huruf . Tentu saja, tidak terkait dengan masalah Anda, tetapi mungkin nama domain pendek memiliki batasan aneh lainnya di beberapa browser? Saya rasa tidak.)
Arjan
2
dapatkah Anda melakukan ini - ls -l /etc/hosts, mungkin masalah izin / kepemilikan?
t0mm13b
@ t0mm13b "-rw-r - r-- root root"
gcb
@ t0mm13b Anda tepat! Dalam kasus saya itu adalah izin. chmod 644 /system/etc/hostsmengatasinya
KalenGi

Jawaban:

6

Ini terdengar persis seperti ini , hingga ping berfungsi tetapi bukan browser. Solusi akhirnya dikutip di bawah ini:

Pertanyaan bodoh, tetapi apakah Anda mengedit file di handset atau hanya mendorong file yang Anda posting di sini? Yang Anda posting dalam format dos, sehingga memiliki karakter linefeed tambahan di akhir baris yang dapat membingungkan sistem linux.

Saya tidak tahu apa yang Anda gunakan untuk memodifikasinya, tetapi Anda mungkin ingin memeriksa karakter linefeed / baris baru apa yang digunakannya.

Egobit
sumber
diedit dengan vi pada terminal emulator. mencoba untuk memaksa ff=unixsekarang dan set listuntuk melihat setiap jeda baris DOS ... bahkan terus maju dan menjalankan regexp seolah-olah ada jeda baris DOS, tidak ada yang ditemukan.
gcb
4

Tidak yakin apakah ini membantu tapi saya punya masalah dengan file host yang diabaikan dan diselesaikan oleh seorang pria di utas ini - jawabannya adalah dengan meletakkan baris baru kosong di akhir file.

Fletch
sumber
2

Bisakah Anda menginstal strace dan membandingkan output running strace pada ping dengan strace pada browser untuk melihat mengapa pencarian DNS ditangani secara berbeda?

Apakah Anda yakin tidak ada caching terus-menerus? Apa TTL pada catatan domain Anda?

Android tampaknya tidak menggunakan /etc/resolv.conf, tetapi mungkin ada beberapa properti yang mengontrol aplikasi mana yang menggunakan / etc / hosts dan yang langsung menuju pencarian DNS. https://groups.google.com/forum/?fromgroups#!topic/android-platform/K2Wr4WaEneI

Kieran Tully
sumber
poin bagus. TTL adalah 1 jam, standar untuk menangkap semua aturan yang saya miliki. Utas g.group sebagian besar tentang keputusan server nama mana yang akan dipukul selama permintaan DNS, logika ini terjadi setelah etc / hosts. saya harap. Sekarang saya akan menjalankan strace (mencari tahu cara sebelumnya) dan melaporkan kembali.
gcb
2

Jika Anda membuat file hosts di mesin windows, pastikan setiap baris dipisahkan oleh LF saja (bukan [CR] [LF], hanya [LF]). Anda dapat memverifikasi itu dan membuat file host yang tepat menggunakan notepad ++.

Tom Teman
sumber
0

Saya pikir Anda perlu menyiram DNS di Android Anda memeriksa pertanyaan ini /programming/2101762/android-flush-dns , terutama "masuk ke pengaturan -> aplikasi -> Lokasi Jaringan -> Hapus data."

Komunitas
sumber
bahkan tidak memiliki opsi ini di android 2.3.7. Tetapi ponsel dengan perubahan ini pada etc / hosts selama berbulan-bulan sekarang. dan saya reboot sering ... saya berharap DNS tidak di-cache selama berbulan-bulan karena alasan apa pun.
gcb
0

Kecurigaan saya adalah bahwa browser dikonfigurasi untuk bekerja melalui proxy.

Anda mungkin dapat mengetahui menggunakan netstat -n atau mencari di / proc / net / tcp (atau lebih baik lagi, / proc / # browser_pid # / net / tcp) alamat apa yang sebenarnya terhubung. Jika itu tidak cocok dengan alamat situs web Anda, kemungkinan Anda akan melalui perantara.

Chris Stratton
sumber
-2

Saya biasanya mengatakan (tapi ini tidak berlaku untuk Anda, sayangnya):

Coba saja reboot jika perubahan tidak diperhatikan karena mesin virtual Dalvik atau sistem yang mendasari mungkin telah men-cache permintaan DNS sebelumnya.

Anda dapat mencoba AdAway untuk secara manual menambahkan entri ke file host Anda (hanya untuk memeriksa silang apakah itu sama seperti yang Anda lakukan secara manual).

ce4
sumber