Як я можу очистити кеш DNS?


27

Як я можу очистити кеш-пам'ять DNS на телефоні Android? (Droid3, Пряники, коріння, щоб бути конкретними)

В ідеалі я шукаю команду для запуску через емулятор терміналу, щось подібне до

ipconfig /flushdns

На машині Windows.

Яка версія цього Linux?


Чи потрібно це робити для системного додатку, стороннього додатка чи вашої програми?
onik

Я думаю, третьої сторони? Мені це потрібно для того, коли я пінг-сервер через термінальний емулятор.
Стів Роббінс

Будь ласка, оновіть свою назву так, щоб відповідати, що ви хочете відповісти на основі CLI. Це рейтинг в Google і 99% людей, які шукають цю назву, не мають кореневих чи CLI-навичок.
PJ Brunet

Відповіді:


11

У типовій системі Linux кеш очищається за допомогою запуску /etc/init.d/nscd restart, але принаймні мій ROM не використовує nscd для кешування DNS. Ви можете перевірити, чи є ваш, але я сумніваюся. Я бачив пропозиції, що очищення кешу браузера також очистить кеш DNS, але один вірний спосіб - зробити важку перезавантаження (вимкнення, вийміть акумулятор на 30-х років, повторно встановіть батарею та завантажте).


1
Весь мій googling також підносить пропозицію "важкої перезавантаження".
Чах

Я підтримую заяву, тому що для відповіді потрібен root та / або передбачається доступ до оболонки, що нереально для більшості користувачів Android. Решта відповіді не вирішила моєї проблеми. Крім того, я вважаю, що Меттью Рид повинен переглянути рішення щодо запитання, оскільки це абсолютно не "зроблена угода". DNS надзвичайно складний, і тут ще буде більш законних відповідей людей, які не мають облікових записів Android, я є прикладом цього. FWIW Я маю репутацію 10+ і досі не можу відповісти на питання.
PJ Brunet

@PJBrunet Щоб бути точним, у вас є бонус від 1 асоціації та 100 повторень, що не враховується, оскільки ви цього не заробляли на цьому сайті. Див. Що таке "захищене" питання? для отримання детальної інформації. Щодо питання, я зараз його захищаю.
onik

14

Адреси кешуються за замовчуванням протягом 600 секунд (10 хвилин). Невдалі пошуки кешуються протягом 10 секунд. З усього, що я бачив, немає нічого вбудованого для очищення кешу. Це, мабуть, повідомлення про помилку в Android через те, як він зберігає кеш DNS. Очищення кеш-пам’ятника веб-переглядача не торкається DNS, «жорсткий скидання» очищає його, оскільки він просто вичерпується.

Чи можемо ми задати основну причину необхідності очищення кешу DNS? Можливо, є ще одне рішення, яке пропущено, оскільки ми не дивимось на більшу картину.


2
Не впевнений в операційній програмі, але у мене є випадок використання, коли моя домашня мережа обслуговує адреси, такі як server.home.mydomain.com, але мій провайдер вирішує * .mydomain.com (для будь-якого значення "*" це ще не відображено) на www.mydomain.com, якщо мій телефон в режимі 3G / 4G, тому я іноді не можу отримати доступ до своєї домашньої мережі, поки не закінчиться час кешу.
TomG

Схоже, вимушене 10-хвилинне кешування зафіксовано в JB - дивіться цю комісію . Для старих версій поведінку кешу Java може бути налаштовано за допомогою networkaddress.cache.ttlта networkaddress.cache.negative.ttlв build.prop.
Сергій Власов

Fwiw, все ще є деякі (можливо різні) проблеми з DNS, навіть у 4.3 - планшети на wifi можуть не отримати IP-адреси для імен, які Linux та Windows-машини (у мережі, що розміщує wifi) можуть вирішити.
Джон Шеміц,

7

Єдиний спосіб зробити це в Android - це зробити важку перезавантаження. Необхідні інструменти командного рядка зазвичай недоступні, проте в моїх тестах важкий перезавантаження завжди робив для мене хитрість (Galaxy Nexus і HTC Desire, різні ПЗУ).

Це біль, але це швидше, ніж 10-хвилинний тайм-аут кешу.


Як це зробити?
Стів Роббінс

1
- Утримуйте кнопку живлення - Виберіть "Вимкнути живлення" - Дозвольте телефону повністю вимкнутись - Вийміть акумулятор і почекайте 30-х - Поверніть акумулятор - Включіть телефон живлення. На мій досвід виймання акумулятора не потрібно, але деякі повідомили, що він не працює, якщо ви пропустите цей крок.
Мартін

2
Виймати акумулятор - це нісенітниця. Перезавантаження працює. Я підозрюю, що додатковий час для цього просто дозволяє деякий зовнішній кеш DNS тайм-аут.
Маттіас Урліхс

5

Є також такі програми, як Internet Booster, які обіцяють "очистити кеш-пам'ять DNS" (серед іншого). Я сам не пробував це, і крім того, здається, немає способу зробити лише це (лише одна кнопка "оптимізувати", яка "застосовує поліпшення"); також його ефекти можуть відрізнятися між пристроями (говорить опис програми) - але це може бути краще, ніж перезавантаження. Btw: хоча корінь не згадується як вимога, він все ще може знадобитися.

У Google Play є перелічені декілька "подібних додатків", але майте на увазі, що більшість з них включає оголошення Airpush та / або хочуть надмірних дозволів, тому я тут їх не назвав.


Ще одне можливе рішення (не перевірене власноруч) я знайшов у MadPC , здавалося б, цитуючи відповідь user8522 перед тим, як зазначити :

Останній варіант, але найінтенсивніший для самого користувача, якщо вони не хочуть просто почекати оновлення: Попросіть користувачів у налаштуваннях -> програми -> Мережеве розташування -> Очистити дані

Ще одне коротке керівництво згадує про інший простий спосіб очищення DNS (знову ж, я сам цього не перевіряв): просто перейдіть до літакового режиму (ой, немає мережі?) І назад (ах, це є) слід зробити свою справу. Можливо, це звучить нерозумно, але я міг уявити, що при вступі в режим літака Android робить щось подібне до цього /etc/init.d/networking stop, що має побічний ефект DNS.


У коментарях нижче dtumaykin запропонував дуже просте рішення : просто перехід у режим літака і назад може вже зробити це (звичайно, якщо побічний ефект від мережі зменшиться на пару секунд;) Хоча це може не спрацювати на деяких пристроях варто спробувати: без зайвих встановлень і їх легко виконувати навіть n00bs.

Якщо хтось спробував одне з цих рішень, підтвердження (або протилежне), безумовно, вітається :)


3
Є команди оболонки ndc resolver flushdefaultifі ndc resolver flushif wlan0; їм потрібен корінь. Існує також метод NetworkManagementService.flushDefaultDnsCache () , який вимагав просто CHANGE_NETWORK_STATE перед JB, але потім був заблокований до CONNECTIVITY_INTERNAL. Тож мабуть, був шалений спосіб очищення кешу DNS без корінця (після налаштування build.prop, щоб знищити кеш рівня Java), але він не працюватиме в JB.
Сергій Власов

Дякую за додаткову інформацію, @SergeyVlasov! Чи знаєте ви, що будь-який із згаданих вами методів викликається двома запропонованими рішеннями, згаданими останньою у моїй відповіді (або якщо вони працюють, але з іншої причини)?
Izzy

4
Для мене спрацював режим відключення літака. Samsung Galaxy S4 Mini та CM12.1.
dtumaykin

Я не можу відповісти, тому що Метью Ред закрив запитання. Будь ласка, ляпніть його за мене :-) Жорстке перезавантаження не працювало для мене, режим літака не працював, очищення "місцезнаходження" (за відповіддю) не працювало, години очікування теж не працювали. Раніше я це просто вирішував, закривши вкладку браузера та відкривши нову вкладку. Існує програма "без кореня" 8.8.8.8 (Google DNS), проте я не можу надати доступ до VPN, оскільки в мене вже є додаток VPN, за який я заплатив. Для мене було рішення змінити налаштування "віртуальної локації" VPN або рішенням зупинити та запустити свою VPN. Припустимо, що мій VPN має власний кеш DNS.
PJ Brunet

@PJBrunet Я не буду ляпати мода (занадто небезпечно, він може закрити мій рахунок;) і до того ж, у мене руки не досить довгі, щоб дістатися до закордону). Але отримати 10 представників не надто важко (задайте гарне запитання, отримавши 2 оновлення, або напишіть відповідь, отримавши 1 підсумок); з цим поверніться сюди і напишіть свою відповідь :) Дякую за обмін!
Izzy

2

У сучасних версіях Android є можливість очистити кеш-пам'ять DNS Chrome під хромом: // net-Internals / # dns


не працювало для мене, все-таки довелося зробити важке перезавантаження
Cerveser

0

У моєму випадку у мене було лише одне доменне ім’я, яке мені потрібно було промити. Такі пропозиції, як перемикання режиму літака, виконання жорсткого перезавантаження або дії з chrome: // net-Internals / # dns для мене не працювали. Натомість я тимчасово змінив налаштування Wi-Fi, щоб використовувати сервер імен Google на 8.8.8.8.

Це кроки, які я здійснив:

  • Налаштування -> WiFi -> натисніть поточне з'єднання та відзначте поточну IP-адресу
  • Тривале натискання поточного з'єднання -> Змінити мережу
  • Поставте прапорець "Розширені налаштування"
  • Змініть "Налаштування IP" на "статичне"
  • З першого кроку встановіть "IP-адресу" для поточної IP-адреси
  • Встановіть "Шлюз" на свою IP-адресу, але з .1 як 4-й номер (Це лише здогадка. Якщо ви знаєте, що це щось інше, використовуйте це)
  • Встановіть "DNS 1" на 8.8.8.8

Після цих кроків, коли я pingредагував доменне ім’я в консолі, він вирішив вказати правильну IP-адресу і, здавалося, писав над старою кешованою. Імовірно, відвідування домену в браузері матиме такий же ефект.

Коли я повернувся до WiFi та встановив "IP налаштування" назад на "DHCP", правильний домен продовжував вирішувати поточну IP-адресу.

Це на Sony Xperia Z3 під управлінням Android 5.1.1


0

На Adroid 5.1 Mobile, який сприйняв неправильний DNS, оскільки він перемикався на велику кількість між двома WLAN; (Позначення питання на WLAN Connexion. Я не хотів відновити свій телефон, як я це робив колись. Engelsiz: DNS Changer виправив це; )

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.