DNS Önbelleğini nasıl temizleyebilirim?


27

Android telefonumda DNS önbelleğimi nasıl temizleyebilirim? (Droid3, Gingerbread, spesifik olması için köklü)

İdeal olarak terminal emülatöründen geçecek bir komut arıyorum, buna benzer bir şey

ipconfig /flushdns

Windows makinesinde.

Bunun Linux versiyonu nedir?


Bunu bir sistem uygulaması, üçüncü taraf uygulaması veya uygulamanız için yapmanız mı gerekiyor?
onik 01:11

Üçüncü taraf sanırım? Terminal Emulator ile bir sunucuya ping işlemi yaparken ihtiyacım var.
Steve Robbins

Lütfen CLI tabanlı bir yanıt istediğinizi yansıtmak için başlığınızı güncelleyin. Bu, Google’daki sıralamasıdır ve bu başlığı arayan kişilerin% 99’unun kök veya CLI becerileri yoktur.
PJ Brunet

Yanıtlar:


11

Tipik bir Linux sisteminde önbellek çalıştırılarak temizlenir /etc/init.d/nscd restart, ancak en azından ROM'um nscd'yi DNS önbelleğe almak için kullanmaz. Senin olup olmadığını kontrol edebilirsin, ama şüpheliyim. Tarayıcı önbelleğini temizlemenin DNS önbelleğini de temizleyeceği önerilerini gördüm, ancak kesin bir yol sert bir yeniden başlatma yapmaktır (kapatma, 30 saniye için pili çıkarın, pili yeniden takın ve önyükleyin).


1
Benim googling'imin hepsi aynı zamanda "sert yeniden başlatma" önerisini gündeme getiriyor.
Chahk

Cevap düşürüyorum çünkü cevap kök gerektiriyor ve / veya çoğu Android kullanıcısı için gerçekçi olmayan kabuk erişimini üstleniyor. Cevabın geri kalanı benim sorunumu çözmedi. Ayrıca Matthew Read'in soruyu kilitlemeyi tekrar gözden geçirmesi gerektiğine inanıyorum, çünkü bu kesinlikle "bitmiş bir anlaşma" değil. DNS son derece karmaşıktır ve henüz Android hesabı olmayan kişilerden daha meşru cevaplar alınacak, bunun bir örneğiyim. FWIW 10+ itibarım var ve hala soruyu cevaplayamadım.
PJ Brunet

@PJBrunet Doğruyu söylemek gerekirse, bu sitede kazanmadığınızdan beri sayılmayan birleşme bonusu üzerinden 1 ve 100 puanınız vardır. Bkz. “Korunan” bir soru nedir? daha fazla ayrıntı için. Soruya gelince, şimdilik koruyacağım.
onik 11:15 '

14

Adresler varsayılan olarak 600 saniye (10 dakika) önbelleğe alınır. Başarısız aramalar 10 saniye önbelleğe alınır. Gördüğüm her şeyden, önbelleği temizlemek için yerleşik hiçbir şey yok. Bu görünüşe göre Android’te DNS önbelleğini saklama biçimi nedeniyle bildirilen bir hata . Tarayıcı önbelleğini temizlemek DNS'ye dokunmaz, "donanımdan sıfırlama" işlemi zaman aşımına uğradığından temizler.

DNS önbelleğini temizleme gereğinin altında yatan nedenleri sorabilir miyiz? Belki de kaçırılan başka bir çözüm var çünkü daha büyük resme bakmıyoruz.


2
OP hakkında emin değilim, ancak ev ağımın server.home.mydomain.com gibi adreslere hizmet ettiği bir kullanım durumum var, ancak ISS'm * * alan_admin.com adresini çözdü ("*" herhangi bir değeri için bu zaten eşlenmedi) Telefonum 3G / 4G’de ise www.mydomain.com adresine gidin, bu nedenle bazen önbellek zaman aşımına uğrayana kadar ev ağıma erişemiyorum.
TomG

Zorla 10 dakikalık önbelleğe alma JB'de sabitlenmiş gibi görünüyor - bu işleme bakın . Geçmiş dağıtımlar için Java önbellek davranış tarafından ayarlanmış olabilir networkaddress.cache.ttlve networkaddress.cache.negative.ttliçinde build.prop.
Sergey Vlasov

Fwiw, hala 4.3'te bile bazı (belki de farklı) DNS sorunları var - wifi üzerindeki tabletler, Linux ve Windows makinelerinin (wifi barındıran ağdaki) çözebileceği adlar için IP adresi alamayabilir.
Jon Shemitz

7

Android'de bunu yapmanın tek yolu sert bir yeniden başlatma yapmaktır. Gerekli komut satırı araçları normalde mevcut değildir, ancak testlerimde sert bir yeniden başlatma her zaman benim için hile yaptı (Galaxy Nexus ve HTC Desire, çeşitli ROM'lar).

Bu bir acıdır, ancak 10dk önbellek zaman aşımından daha hızlıdır.


Kişi bunu nasıl yapar?
Steve Robbins,

1
- Güç düğmesini basılı tutun - "Kapat" seçeneğini seçin - Telefonun tamamen kapanmasına izin verin - Pili çıkarın ve 30 saniye bekleyin - Pili geri çevirin - Güç telefonu tekrar açın. Tecrübelerime göre, bataryayı çıkarmak gerekli değildir, ancak bazıları bu adımı kaçırırsanız işe yaramadığını bildirdi.
Martin

2
Pili çıkarmak çok saçma. Yeniden başlatma çalışıyor. Bunun için ek sürenin yalnızca bazı harici DNS önbelleklerinin zaman aşımına uğramasına izin verdiğinden şüpheleniyorum.
Matthias Urlichs 27:16

5

Internet Booster gibi "DNS önbelleğini temizleme" (diğer şeylerin yanı sıra) gibi uygulamalar da var . Kendim denemedim ve ayrıca bunu yapmanın bir yolu yok (sadece "iyileştirmeler uygulayan" bir "optimize et" düğmesi); Ayrıca etkileri cihazlar arasında farklılık gösterebilir (uygulamanın açıklamasını söyler) - ancak yeniden başlatmadan daha iyi olabilir. Btw: Root gereksinimi olarak bahsedilmemesine rağmen, yine de gerekli olabilir.

Google Play'de listelenen birkaç "benzer uygulama" var - ancak çoğunun Airpush reklamları içerdiğini ve / veya aşırı izinler istediklerini unutmayın; bu yüzden onları burada adlandırmadım.


Başka bir olası çözüm (kendim tarafından test edilmedi) MadPC'de buldum , görünüşte user8522'nin cevabını belirterek

En son seçenek, ancak yalnızca güncellemeyi beklemek istemedikleri sürece, kullanıcının kendisi için en yoğun olanı: Kullanıcılarınızın ayarlara girmesini sağlayın -> uygulamalar -> Ağ Konumu -> Verileri temizle

Başka bir kısa , DNS'yi yıkamak için farklı ve kolay bir yoldan bahsetti (yine, bunu kendim test etmedim): Basitçe uçak moduna geç (ayy, ağ yok mu?) Ve geri (ah, işte orada) hile yapmalı. Aptalca bir ses olabilir, ancak uçak moduna girerken Android'in /etc/init.d/networking stopyan etki olarak DNS'ye sahip bir şeye benzer bir şey yaptığını hayal edebiliyorum .


Dtumaykin tarafından aşağıdaki yorumlarda çok kolay bir çözüm sağlandı : basitçe uçak kipine geçmek ve geri yapmak çoktan işe yarayabilir (ağın yan etkisi birkaç saniyeliğine aşağıya indiğinde bile) Bazı cihazlarda denenmeye değer: Ek kurulum gerektirmez ve n00bs tarafından bile kolayca yapılabilir.

Herhangi biri bu çözümlerden birini denediyse, onaylama (veya tam tersi) kesinlikle kabul edilir :)


3
Kabuk komutları vardır ndc resolver flushdefaultifve ndc resolver flushif wlan0; kök gerektirirler. JB'den önce sadece CHANGE_NETWORK_STATE gerektiren, ancak daha sonra CONNECTIVITY_INTERNAL'e kilitlenmiş olan NetworkManagementService.flushDefaultDnsCache () yöntemi de var . Yani görünüşe göre kök olmadan DNS önbelleğini temizlemenin kesin bir yolu vardı (Java düzeyindeki önbelleği öldürmek için build.prop ayarından sonra), ancak JB'de çalışmaz.
Sergey Vlasov

Ek bilgi için teşekkürler, @SergeyVlasov! Bahsettiğim yöntemlerden herhangi birinin cevabımda en son belirtilen iki önerilen çözüm tarafından tetiklenip tetiklenmediğini biliyor musunuz (veya çalışırlarsa, ancak farklı bir nedenden dolayı)?
Izzy

4
Uçak modu açma-kapama benim için çalıştı. Samsung Galaxy S4 Mini ve CM12.1.
dtumaykin

Cevap veremem çünkü Matthew Read soruyu kilitledi. Lütfen benim için onu tokatla :-) Sert yeniden başlatma benim için işe yaramadı, uçak modu işe yaramadı, "konumu" (cevap başına) temizleyerek, işe yaramadı, bekleme saatlerini işe yaramadı. Geçmişte, bunu tarayıcı sekmesini kapatıp yeni bir sekme açarak çözdüm. "Kök yok" 8.8.8.8 uygulaması (Google DNS) var, ancak zaten ödediğim bir VPN uygulamasına sahip olduğum için VPN erişimi veremiyorum. Benim için çözüm VPN'in "sanal konumu" ayarını değiştirdi ya da çözüm VPN'imi durdurmak ve başlatmaktı. VPN'imin kendi DNS önbelleğine sahip olduğunu varsayalım.
PJ Brunet

@ PJBrunet Bir mod tokat atmayacağım (çok tehlikeli, hesabımı kapatabilir;) ve ayrıca kollarım denizaşırı olacak kadar uzun değil). Ancak 10 rep kazanmak çok zor değil (2 oy alarak iyi bir soru sorun veya 1 oy alarak bir cevap yazın); Bununla beraber buraya geri dönün ve cevabınızı yazın :) Paylaştığınız için teşekkür ederiz!
Izzy

2

Android'in modern sürümlerinde Chrome'un DNS önbelleğini chrome: // net-internals / # dns altında temizleme seçeneği vardır


benim için işe yaramadı, hala sert bir yeniden başlatma yapmak zorunda kaldı
Cerveser

0

Benim durumumda, temizlenmesini istediğim bir alan adı vardı. Uçak Modunu değiştirmek, sert bir yeniden başlatma yapmak veya chrome: // net-internals / # dns gibi işlemler benim için işe yaramadı. Bunun yerine, Google’ın ad sunucusunu 8.8.8.8’de kullanmak için WiFi ayarlarımı geçici olarak değiştirdim.

İşte attığım adımlar:

  • Ayarlar -> WiFi -> mevcut bağlantıya dokunun ve mevcut IP adresini not edin
  • Uzun süre geçerli bağlantıyı tıkla -> Ağı değiştir
  • "Gelişmiş ayarlar" seçeneğini işaretleyin
  • "IP ayarlarını" "statik" olarak değiştirin
  • İlk adımdan itibaren "IP adresini" geçerli IP'ye ayarlayın.
  • "Ağ Geçidi" ni IP adresinize ayarlayın, ancak dördüncü sayı olarak .1 kullanın (Bu sadece bir tahmindir. Farklı bir şey olduğunu biliyorsanız, onu kullanın)
  • "DNS 1" i 8.8.8.8 olarak ayarlayın

Bu adımlardan sonra ping, konsoldaki etki alanı adını yazdığımda doğru IP adresini çözdü ve eski önbelleğe alınmış olanın üzerine yazıyor gibiydi. Muhtemelen bir tarayıcıda etki alanı ziyaret aynı etkiye sahip olacaktır.

WiFi’ye geri döndüğümde ve “IP ayarları” nı “DHCP” ye geri ayarladığımda, doğru etki alanı geçerli IP adresine gitmeye devam etti.

Bu Android 5.1.1 çalıştıran bir Sony Xperia Z3 üzerinde


0

İki WLAN arasında değiştirilen yanlış DNS alan bir Adroid 5.1 Mobile'da; (WLAN Bağlantısındaki bir soru işareti. Telefonumu bir kez yaptığım gibi geri yüklemek istemedim. Engelsiz: DNS Değiştirici düzeltti; )

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.