Bagaimana saya bisa menghapus Cache DNS?

27

Bagaimana saya bisa menghapus cache DNS saya di ponsel Android saya? (Droid3, Gingerbread, di-root untuk lebih spesifik)

Idealnya saya sedang mencari perintah untuk dijalankan melalui emulator terminal, sesuatu yang mirip

ipconfig /flushdns

Di mesin windows.

Apa versi Linux ini?

Steve Robbins
sumber
Apakah Anda perlu melakukan ini untuk aplikasi sistem, aplikasi pihak ketiga atau aplikasi Anda?
onik
Pihak ketiga, kurasa? Saya membutuhkannya ketika saya melakukan ping ke server melalui Terminal Emulator.
Steve Robbins
Perbarui judul Anda untuk mencerminkan bahwa Anda menginginkan jawaban berbasis CLI. Ini peringkat di Google dan 99% orang yang mencari judul ini tidak memiliki keterampilan root atau CLI.
PJ Brunet

Jawaban:

11

Pada sistem Linux yang khas, cache dihapus dengan menjalankan /etc/init.d/nscd restart, tetapi setidaknya ROM saya tidak menggunakan nscd untuk melakukan cache DNS. Anda dapat memeriksa apakah Anda memilikinya, tetapi saya ragu. Saya telah melihat saran bahwa membersihkan cache browser akan menghapus cache DNS juga, tetapi satu cara yang pasti adalah dengan melakukan reboot keras (shutdown, lepaskan baterai selama 30-an, pasang kembali baterai dan boot).

onik
sumber
1
Semua googling saya juga memunculkan saran "hard reboot".
Chahk
Saya downvoting karena jawabannya memerlukan root dan / atau menganggap akses shell yang tidak realistis untuk sebagian besar pengguna Android. Sisa jawaban tidak memecahkan masalah saya. Saya juga percaya bahwa Matthew Read harus mempertimbangkan kembali mengunci pertanyaan karena ini sama sekali bukan "kesepakatan yang dilakukan." DNS sangat kompleks dan akan ada jawaban yang lebih sah dari orang-orang tanpa akun Android di sini, saya adalah contohnya. FWIW Saya punya 10+ reputasi dan masih belum bisa menjawab pertanyaan.
PJ Brunet
@PJBrunet Agar lebih akurat, Anda memiliki 1 rep dan 100 rep dari bonus asosiasi, yang tidak dihitung karena Anda belum mendapatkannya di situs ini. Lihat Apa itu pertanyaan "terlindungi"? untuk lebih jelasnya. Adapun pertanyaannya, saya akan membuka proteksi untuk saat ini.
onik
14

Alamat di-cache selama 600 detik (10 menit) secara default. Pencarian gagal di-cache selama 10 detik. Dari semua yang saya lihat, tidak ada yang dibangun untuk membersihkan cache. Tampaknya ini adalah bug yang dilaporkan di Android karena cara menyimpan cache DNS. Mengosongkan cache browser tidak menyentuh DNS, "hard reset" menghapusnya karena itu hanya habis.

Bisakah kita menanyakan alasan yang mendasari perlunya menghapus cache DNS? Mungkin ada solusi lain yang terlewatkan karena kita tidak melihat gambaran yang lebih besar.

pengguna8522
sumber
2
Tidak yakin tentang OP, tetapi saya memiliki kasus penggunaan di mana jaringan rumah saya melayani alamat seperti server.home.mydomain.com, tetapi ISP saya menyelesaikan * .mydomain.com (untuk nilai "*" apa pun ini belum dipetakan) ke www.mydomain.com jika ponsel saya menggunakan 3G / 4G, jadi saya kadang-kadang tidak dapat mengakses jaringan rumah saya sampai cache habis.
TomG
Sepertinya caching 10 menit yang dipaksakan telah diperbaiki di JB - lihat commit ini . Untuk rilis yang lebih lama, perilaku cache Java dapat disetel oleh networkaddress.cache.ttldan networkaddress.cache.negative.ttldalam build.prop.
Sergey Vlasov
Namun, masih ada beberapa (mungkin berbeda) masalah DNS bahkan di 4.3 - tablet pada wifi mungkin tidak mendapatkan alamat IP untuk nama yang dapat diselesaikan oleh mesin Linux dan Windows (pada jaringan yang menyelenggarakan wifi).
Jon Shemitz
7

Satu-satunya cara untuk melakukan ini di Android adalah dengan melakukan reboot keras. Alat baris perintah yang diperlukan biasanya tidak tersedia, namun dalam pengujian saya, reboot yang keras selalu melakukan trik untuk saya (Galaxy Nexus, dan HTC Desire, berbagai ROM).

Ini menyakitkan, tetapi lebih cepat dari batas waktu cache 10 menit.

Martin
sumber
Bagaimana seseorang melakukan ini?
Steve Robbins
1
- Tekan dan tahan tombol daya - Pilih "Matikan" - Izinkan ponsel untuk dimatikan sepenuhnya - Keluarkan baterai dan tunggu 30-an - Kembalikan baterai - Daya ponsel dihidupkan kembali. Dalam pengalaman saya melepas baterai tidak perlu, tetapi beberapa telah melaporkan itu tidak berfungsi jika Anda melewatkan langkah ini.
Martin
2
Melepaskan baterai adalah omong kosong. Mulai ulang bekerja. Saya menduga bahwa waktu tambahan untuk itu hanya memungkinkan beberapa cache DNS eksternal untuk time out.
Matthias Urlichs
5

Ada juga aplikasi seperti Internet Booster yang menjanjikan "menghapus cache DNS" (di antara hal-hal lain). Saya tidak mencobanya sendiri, dan lebih jauh lagi sepertinya tidak ada cara untuk melakukan itu (hanya satu tombol "optimalkan" yang "menerapkan peningkatan"); juga efeknya mungkin berbeda di antara perangkat (kata deskripsi aplikasi) - tetapi mungkin lebih baik daripada reboot. Btw: walaupun tidak menyebutkan root sebagai persyaratan, mungkin masih diperlukan.

Ada beberapa "aplikasi serupa" yang tercantum di Google Play - tetapi perlu diketahui bahwa kebanyakan dari mereka termasuk iklan Airpush dan / atau ingin izin berlebihan, itulah sebabnya saya tidak menyebutkannya di sini.


Solusi lain yang mungkin (tidak diuji sendiri) yang saya temukan di MadPC , sepertinya mengutip jawaban pengguna8522 sebelum menyatakan:

Opsi terakhir tetapi paling intensif pada pengguna itu sendiri kecuali mereka hanya ingin menunggu pembaruan keluar: Minta pengguna Anda masuk ke pengaturan -> aplikasi -> Lokasi Jaringan -> Hapus data

Howto singkat lain menyebutkan cara mudah berbeda untuk membersihkan DNS (sekali lagi, saya tidak menguji ini sendiri): Cukup beralih ke mode pesawat (oops, tidak ada jaringan?) Dan kembali (ah, itu dia) harus melakukan trik. Mungkin terdengar bodoh, tapi saya bisa membayangkan ketika memasuki mode pesawat Android melakukan sesuatu yang mirip /etc/init.d/networking stop, yang memiliki DNS flush sebagai efek samping.


Sebuah solusi yang sangat mudah disediakan oleh dtumaykin dalam komentar di bawah ini: cukup beralih ke mode pesawat dan kembali mungkin sudah melakukannya (tentu saja dengan efek samping dari jaringan turun selama beberapa detik;) Meskipun mungkin tidak bekerja pada beberapa perangkat, patut dicoba: tidak ada instalasi tambahan, dan mudah dilakukan bahkan oleh n00bs.

Jika ada yang mencoba salah satu solusi itu, konfirmasi (atau yang sebaliknya) pasti diterima :)

Izzy
sumber
3
Ada perintah shell ndc resolver flushdefaultifdan ndc resolver flushif wlan0; mereka membutuhkan root. Ada juga metode NetworkManagementService.flushDefaultDnsCache () , yang hanya membutuhkan CHANGE_NETWORK_STATE sebelum JB, tetapi kemudian dikunci ke CONNECTIVITY_INTERNAL. Jadi rupanya ada cara peretasan untuk membersihkan cache DNS tanpa root (setelah build.prop tuning untuk membunuh cache level-Java), tetapi itu tidak akan berfungsi di JB.
Sergey Vlasov
Terima kasih atas informasi tambahannya, @SergeyVlasov! Apakah Anda tahu jika salah satu metode yang Anda sebutkan dipicu oleh dua solusi yang diusulkan yang disebutkan terakhir dalam jawaban saya (atau jika mereka berhasil, tetapi karena alasan yang berbeda)?
Izzy
4
Mode pesawat hidup-mati bekerja untuk saya. Samsung Galaxy S4 Mini dan CM12.1.
dtumaykin
Saya tidak bisa menjawab karena Matthew Read mengunci pertanyaan. Tolong tampar dia untuk saya :-) Hard reboot tidak bekerja untuk saya, mode pesawat tidak bekerja, membersihkan "lokasi" (sesuai jawaban) tidak bekerja, jam menunggu tidak berfungsi juga. Di masa lalu, saya hanya menyelesaikan ini dengan menutup tab browser dan membuka tab baru. Namun ada aplikasi "no root" 8.8.8.8 (Google DNS), saya tidak dapat memberikan akses VPN karena saya sudah memiliki aplikasi VPN yang saya bayar. Solusi bagi saya adalah mengubah pengaturan "lokasi virtual" VPN atau solusinya adalah menghentikan & memulai VPN saya. Dengan asumsi VPN saya memiliki cache DNS sendiri.
PJ Brunet
@ PJBrunet Saya tidak akan menampar mod (terlalu berbahaya, dia mungkin menutup akun saya;) dan selain itu, lengan saya tidak cukup panjang untuk mencapai luar negeri). Tetapi mendapatkan 10 rep tidak terlalu sulit (ajukan pertanyaan yang bagus mendapatkan 2 upvotes, atau tulis jawaban dengan 1 upvote); dengan itu, kembali ke sini dan tulis jawaban Anda :) Terima kasih telah berbagi!
Izzy
2

Dalam versi modern Android ada opsi untuk menghapus cache DNS Chrome di bawah chrome: // net-internal / # dns

Joao Costa
sumber
tidak bekerja untuk saya, masih harus melakukan reboot keras
Cerveser
0

Dalam kasus saya, saya hanya punya satu nama domain yang saya perlu memerah. Saran seperti beralih Mode Pesawat, melakukan reboot keras, atau tindakan dalam chrome: // net-internal / # dns tidak bekerja untuk saya. Sebagai gantinya, saya mengubah sementara pengaturan WiFi saya untuk menggunakan server nama Google di 8.8.8.8.

Inilah langkah-langkah yang saya ambil:

  • Pengaturan -> WiFi -> ketuk koneksi saat ini dan catat alamat IP saat ini
  • Klik lama koneksi saat ini -> Ubah jaringan
  • Periksa "Pengaturan lanjutan"
  • Ubah "pengaturan IP" menjadi "statis"
  • Setel "alamat IP" ke IP saat ini dari langkah pertama
  • Setel "Gateway" ke alamat IP Anda tetapi dengan .1 sebagai nomor 4 (Ini hanya dugaan. Jika Anda tahu itu sesuatu yang berbeda, gunakan itu)
  • Setel "DNS 1" ke 8.8.8.8

Setelah langkah-langkah ini, ketika saya pingmengedit nama domain di konsol itu diselesaikan ke alamat IP yang benar dan sepertinya menulis di atas yang lama di-cache. Agaknya mengunjungi domain di browser akan memiliki efek yang sama.

Ketika saya kembali ke WiFi dan mengatur "pengaturan IP" kembali ke "DHCP", domain yang benar terus menyelesaikan ke alamat IP saat ini.

Ini ada pada Sony Xperia Z3 yang menjalankan Android 5.1.1

pix
sumber
0

Pada Adroid 5.1 Mobile yang telah mengambil DNS yang salah karena dialihkan ke banyak antara dua WLAN; (Tanda tanya pada WLAN Connexion. Saya tidak ingin mengembalikan telepon saya seperti yang saya lakukan sekali .. Engelsiz: DNS Changer memperbaikinya; )

pengguna237310
sumber