Jak mogę opróżnić pamięć podręczną DNS?

27

Jak mogę wyczyścić pamięć podręczną DNS na moim telefonie z Androidem? (Droid3, Piernik, zrootowany, aby być konkretnym)

Idealnie szukam polecenia do uruchomienia przez emulator terminala, coś podobnego do

ipconfig /flushdns

Na maszynie z systemem Windows.

Jaka jest wersja Linux?

Steve Robbins
źródło
Czy musisz to zrobić w przypadku aplikacji systemowej, aplikacji innej firmy czy aplikacji?
onik
Wydaje mi się, że trzecia strona? Potrzebuję tego, gdy pinguję serwer za pomocą emulatora terminali.
Steve Robbins,
Zaktualizuj swój tytuł, aby odzwierciedlał odpowiedź na pytanie dotyczące interfejsu CLI. To jest ranking w Google, a 99% osób szukających tego tytułu nie ma umiejętności rootowania ani CLI.
PJ Brunet,

Odpowiedzi:

11

W typowym systemie Linux pamięć podręczna jest czyszczona przez uruchomienie /etc/init.d/nscd restart, ale przynajmniej moja pamięć ROM nie używa nscd do buforowania DNS. Możesz sprawdzić, czy twoje, ale wątpię w to. Widziałem sugestie, że wyczyszczenie pamięci podręcznej przeglądarki również wyczyści pamięć podręczną DNS, ale pewnym pewnym sposobem jest wykonanie twardego restartu (zamknięcie, usunięcie baterii na 30 sekund, ponowne podłączenie baterii i uruchomienie).

onik
źródło
1
Całe moje wyszukiwanie w Google powoduje również sugestię „twardego restartu”.
Chahk
Oddaję głos, ponieważ odpowiedź wymaga roota i / lub zakłada dostęp do powłoki, co jest nierealne dla większości użytkowników Androida. Reszta odpowiedzi nie rozwiązała mojego problemu. Uważam również, że Matthew Read powinien ponownie rozważyć zablokowanie pytania, ponieważ absolutnie nie jest to „skończona umowa”. DNS jest niezwykle skomplikowany i będą jeszcze bardziej wiarygodne odpowiedzi od osób bez kont Androida, jestem tego przykładem. FWIW Mam reputację 10+ i nadal nie mogę odpowiedzieć na pytanie.
PJ Brunet,
@PJBrunet Aby być dokładnym, masz 1 powtórzenie i 100 powtórzeń z premii stowarzyszenia, co nie ma znaczenia, ponieważ nie zdobyłeś go na tej stronie. Zobacz Co to jest „chronione” pytanie? po więcej szczegółów. Co do pytania, na razie go nie ochronię.
onik
14

Adresy są domyślnie buforowane przez 600 sekund (10 minut). Nieudane wyszukiwania są buforowane przez 10 sekund. Ze wszystkiego, co widziałem, nie ma nic wbudowanego do opróżnienia pamięci podręcznej. Najwyraźniej jest to zgłoszony błąd w Androidzie ze względu na sposób przechowywania pamięci podręcznej DNS. Wyczyszczenie pamięci podręcznej przeglądarki nie dotyka DNS, „twardy reset” usuwa go, ponieważ po prostu upłynął limit czasu.

Czy możemy zapytać o przyczynę konieczności wyczyszczenia pamięci podręcznej DNS? Być może brakuje innego rozwiązania, ponieważ nie patrzymy na szerszy obraz.

użytkownik8522
źródło
2
Nie jestem pewien co do OP, ale mam przypadek użycia, w którym moja sieć domowa obsługuje adresy takie jak server.home.mydomain.com, ale mój dostawca usług internetowych rozpoznaje * .mydomain.com (dla dowolnej wartości „*” to nie jest jeszcze zamapowane) do www.mydomain.com, jeśli mój telefon ma 3G / 4G, więc czasami nie mogę uzyskać dostępu do mojej sieci domowej, dopóki pamięć podręczna się nie skończy.
TomG
Wygląda na to, że wymuszone 10-minutowe buforowanie jest naprawione w JB - zobacz to zatwierdzenie . W starszych wersjach zachowanie cache Java mogą być dostrojone przez networkaddress.cache.ttli networkaddress.cache.negative.ttlw build.prop.
Sergey Vlasov
Fwiw, nadal istnieją pewne (być może różne) problemy z DNS, nawet w 4.3 - tablety w Wi-Fi mogą nie uzyskać adresu IP dla nazw, które komputery z systemem Linux i Windows (w sieci obsługującej Wi-Fi) mogą rozwiązać.
Jon Shemitz
7

Jedynym sposobem na to w Androidzie jest przeprowadzenie twardego restartu. Niezbędne narzędzia wiersza poleceń nie są normalnie dostępne, jednak w moich testach twardy restart zawsze mi pomógł (Galaxy Nexus i HTC Desire, różne ROMy).

Jest to ból, ale jest szybszy niż 10-minutowy limit pamięci podręcznej.

Jaskółka oknówka
źródło
Jak to zrobić?
Steve Robbins
1
- Przytrzymaj przycisk zasilania - Wybierz „Wyłącz” - Pozwól, aby telefon całkowicie się zamknął - Wyjmij baterię i poczekaj 30s - Zwróć baterię - Włącz telefon z powrotem. Z mojego doświadczenia wynika, że ​​usunięcie baterii nie jest konieczne, ale niektórzy zgłosili, że nie działa, jeśli przegapisz ten krok.
Martin
2
Wyjmowanie baterii to nonsens. Reboot działa. Podejrzewam, że dodatkowy czas po prostu pozwala na przekroczenie limitu czasu dla zewnętrznej pamięci podręcznej DNS.
Matthias Urlichs
5

Są też takie aplikacje, jak Internet Booster, który obiecuje „wyczyścić pamięć podręczną DNS” (między innymi). Sam tego nie wypróbowałem, a ponadto wydaje się, że nie ma sposobu, aby to zrobić (tylko jeden przycisk „optymalizuj”, który „stosuje ulepszenia”); także jego efekty mogą się różnić między urządzeniami (mówi opis aplikacji) - ale może być lepsze niż ponowne uruchomienie. Btw: chociaż nie wspominając o rootie jako wymaganiu, może być nadal potrzebne.

Istnieje kilka „podobnych aplikacji” wymienionych w Google Play - ale pamiętaj, że większość z nich zawiera reklamy Airpush i / lub chcesz nadmiernych uprawnień, dlatego ich tutaj nie wymieniłem.


Inne możliwe rozwiązanie (nie testowane przeze mnie) znalazłem w MadPC , najwyraźniej cytując odpowiedź użytkownika8522 przed stwierdzeniem:

Ostatnia opcja, ale najbardziej intensywna dla samego użytkownika, chyba że chce tylko poczekać na aktualizację: Niech użytkownicy wejdą w ustawienia -> aplikacje -> Lokalizacja sieci -> Wyczyść dane

Kolejny krótki poradnik wspomina o innym łatwym sposobie opróżniania DNS (ponownie, nie testowałem tego sam): wystarczy przełączyć się na tryb samolotowy (ups, brak sieci?), A powrót (ach, oto jest) powinien załatwić sprawę. Może to zabrzmi głupio, ale mogłem sobie wyobrazić, kiedy wchodząc w tryb samolotowy Android robi coś podobnego /etc/init.d/networking stop, co ma efekt uboczny DNS.


Bardzo proste rozwiązanie zostało dostarczone przez dtumaykin w komentarzach poniżej: po prostu przejście do trybu samolotowego i wstecz może już to zrobić (oczywiście z efektem ubocznym awarii sieci na kilka sekund;) Może to nie działać na niektórych urządzeniach warto spróbować: bez dodatkowych instalacji i łatwe do wykonania nawet przez n00bs.

Jeśli ktoś wypróbuje jedno z tych rozwiązań, potwierdzenie (lub odwrotnie) jest z pewnością mile widziane :)

Izzy
źródło
3
Istnieją polecenia powłoki ndc resolver flushdefaultifi ndc resolver flushif wlan0; wymagają rootowania. Istnieje również metoda NetworkManagementService.flushDefaultDnsCache () , która wymagała tylko CHANGE_NETWORK_STATE przed JB, ale następnie została zablokowana na CONNECTIVITY_INTERNAL. Więc najwyraźniej istniał pospieszny sposób czyszczenia pamięci podręcznej DNS bez rootowania (po dostrojeniu build.prop, aby zabić pamięć podręczną na poziomie Java), ale nie będzie działać w JB.
Siergiej Własow
Dzięki za dodatkowe informacje, @SergeyVlasov! Czy wiesz, czy którakolwiek z wymienionych metod zostanie uruchomiona przez dwa zaproponowane rozwiązania wymienione w mojej ostatniej odpowiedzi (lub jeśli działają, ale z innego powodu)?
Izzy
4
Tryb włączania i wyłączania samolotu działał dla mnie. Samsung Galaxy S4 Mini i CM12.1.
dtumaykin
Nie mogę odpowiedzieć, ponieważ Matthew Read zablokował pytanie. Proszę go uderzyć za mnie :-) Twarde ponowne uruchomienie nie działało dla mnie, tryb samolotowy nie działał, czyszczenie „lokalizacji” (zgodnie z odpowiedzią) nie działało, godziny oczekiwania też nie działały. W przeszłości po prostu rozwiązałem ten problem, zamykając kartę przeglądarki i otwierając nową kartę. Istnieje aplikacja 8.8.8.8 „bez uprawnień roota” (Google DNS), ale nie mogę przyznać dostępu VPN, ponieważ mam już aplikację VPN, za którą zapłaciłem. Rozwiązaniem dla mnie była zmiana ustawienia „wirtualnej lokalizacji” VPN lub rozwiązaniem było zatrzymanie i uruchomienie mojej VPN. Zakładając, że moja sieć VPN ma własną pamięć podręczną DNS.
PJ Brunet,
@PJBrunet Nie uderzę modą (zbyt niebezpieczne, może zamknąć moje konto;) a poza tym moje ramiona nie są wystarczająco długie, aby dotrzeć do zamorskiego). Ale uzyskanie 10 powtórzeń nie jest zbyt trudne (zadaj dobre pytanie, zdobywając 2 głosy poparcia lub napisz odpowiedź, otrzymując 1 opinię); po tym wróć tutaj i napisz odpowiedź :) Dziękujemy za udostępnienie!
Izzy
2

W nowoczesnych wersjach Androida istnieje możliwość wyczyszczenia pamięci podręcznej DNS Chrome pod chrome: // net-internals / # dns

Joao Costa
źródło
nie działało dla mnie, nadal musiałem dokonać twardego restartu
Cerveser
0

W moim przypadku miałem tylko jedną nazwę domeny, której potrzebowałem. Sugestie takie jak przełączanie trybu samolotowego, przeprowadzanie twardego restartu lub działania w chrome: // net-internals / # dns nie działały dla mnie. Zamiast tego tymczasowo zmieniłem ustawienia Wi-Fi, aby używać serwera nazw Google w wersji 8.8.8.8.

Oto kroki, które podjąłem:

  • Ustawienia -> Wi-Fi -> dotknij bieżącego połączenia i zanotuj aktualny adres IP
  • Bieżące połączenie z długim kliknięciem -> Zmień sieć
  • Zaznacz „Ustawienia zaawansowane”
  • Zmień „Ustawienia IP” na „statyczne”
  • Ustaw „Adres IP” na bieżący adres IP od pierwszego kroku
  • Ustaw „Gateway” na swój adres IP, ale z .1 jako czwartą liczbą (To tylko przypuszczenie. Jeśli wiesz, że to coś innego, użyj tego)
  • Ustaw „DNS 1” na 8.8.8.8

Po wykonaniu tych kroków pingnazwa domeny w konsoli została zmieniona na poprawny adres IP i wydawało się, że zapisuje na starej pamięci podręcznej. Przypuszczalnie odwiedzenie domeny w przeglądarce będzie miało taki sam efekt.

Kiedy wróciłem do Wi-Fi i ustawiłem „Ustawienia IP” z powrotem na „DHCP”, poprawna domena kontynuowała rozpoznawanie obecnego adresu IP.

To jest na Sony Xperia Z3 z Androidem 5.1.1

szkatułka
źródło
0

Na telefonie komórkowym Adroid 5.1, który wziął nieprawidłowy DNS, ponieważ został przełączony na wiele między dwiema sieciami WLAN; (Znak zapytania na połączeniu WLAN. Nie chciałem przywracać telefonu tak, jak to zrobiłem raz .. Engelsiz: DNS Changer naprawił to; )

użytkownik237310
źródło