Вопрос Как очистить кеш DNS?


Я просто обновил запись DNS (ns1, ns2, ns3.myhostingcompany.com) для сайта, на котором я размещен, но я все еще получаю страницу регистрации регистратора доменов.

Я хотел бы узнать, является ли проблема кэшированными DNS-записями Ubuntu. Есть ли способ очистить кэш DNS Ubuntu? (если такая вещь существует?)


153
2017-08-13 21:23


происхождения


Кроме того, проверьте /etc/hosts, Я только что был уверен, что старый IP-адрес моего домена кэшируется, но только strace ping example.com что я забыл удалить /etc/hosts запись, которую я добавил некоторое время назад из-за отсутствия терпения для распространения DNS. - ulidtko
многие из этих ответов показывают, что кеширование по умолчанию отключено, но они также относятся к более старым версиям. По-видимому, он включен по умолчанию в моей машине (18.04), и различные ответы ниже показывают вам, как очистить его, просто прокрутите вниз - Madivad


ответы:


За 18,04 и выше

смотреть на Ответ Майка Шульца,

Для 11.10 и ниже

Ubuntu по умолчанию не кэширует записи DNS, поэтому, если вы не установили кеш DNS, нет ничего, что можно было бы очистить.

DNS-записи, скорее всего, кэшируются DNS-серверами вашего провайдера, поэтому, если вы хотите проверить, были ли удалены изменения DNS, вы можете опросить DNS-сервер из своей службы хостинга домена с помощью dig:

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Вы хотите, чтобы Ubuntu начал кэширование dns. Я рекомендую установить pdnsd вместе с resolvconf, nscd является ошибочным и нецелесообразным.


52
2017-08-14 00:13



Любые рекомендации относительно того, почему nscd является ошибкой? Неужели он все еще неисправен сегодня (2012-10)? - jjmontes
Можете ли вы обновить свой банкомат ответа, похоже, что Ubuntu версии 11.10+ кэшируют записи DNS. - Martin Konecny


12,04

Ubuntu 12.04 использует dnsmasq который встроен в network-manager, но это не cache dns, поэтому нет необходимости его скрывать. Вот пример строки из моего syslog для доказательства этой точки:

dnsmasq[2980]: started, version 2.59 cache disabled

Также нет необходимости в какой-либо конфигурации dnsmasq, Если вы работаете с настройками запаса, он не будет кэшировать dns, так как для этого вам нужно явно настроить его как это Статья Ubuntu описывает.

Если вы хотите обновить свои настройки, вы можете отключить, а затем включить работу в сети или запустить

sudo service network-manager restart

Это перезапускается dnsmasq потому что он встроен в network-manager; Проверьте свои syslog за доказательства этого.

Если вы используете проводное соединение с dhcp network manager будет принимать настройки непосредственно с вашего маршрутизатора, и ваше соединение будет автоматически установлено при входе в Ubuntu. Вы можете проверить правильность настроек на своем маршрутизаторе, если вы можете получить к нему доступ через веб-интерфейс и, возможно, перезагрузите его, если необходимо.  Если это общая проблема с dns, вы можете попробовать использовать Google dns вместо своих isp dns, и больше информации об этом подробнее здесь,


69
2017-09-14 20:39



sudo service network-manager restart сделал трюк для меня с Debian - Pierre de LESPINAY


Обратите внимание, что Ubuntu использует systemd-resol с 17.04 и далее, поэтому этот ответ больше не применим к последним версиям Ubuntu. Видеть "очистить DNS-кеш в Ubuntu 17.04 и выше (18.04)"

По умолчанию DNS не кэшируется в Ubuntu <17.04 (но он может быть кэширован в сети или приложении)

Чтобы подтвердить, так или иначе, dnsmasq кэширование, запуск ps ax | grep dnsmasq и посмотрите на текущую команду. Вот разбивка моей машины по умолчанию 13.10:

/ usr / sbin / dnsmasq \
  --no-resolv \
  --keep-in-foreground \
  --no-hosts \
  --bind-interfaces \
  --pid-file = / var / run / NetworkManager / dnsmasq.pid \
  --listen-address = 127.0.1.1 \
  --conf-file = / var / run / NetworkManager / dnsmasq.conf \
   --cache величину = 0 \
  --proxy-dnssec \
  --enable-dbus = org.freedesktop.NetworkManager.dnsmasq \
  --conf-DIR = / и т.д. / NetworkManager / dnsmasq.d

/etc/NetworkManager/dnsmasq.d по умолчанию пуст. Таким образом, нет никаких переопределений и просто чтобы проверить --cache-size=0означает, что мы думаем, что это означает (вместо неограниченный кэша), man dnsmasq показывает:

-c, --cache-size=<cachesize>
  Set the size of dnsmasq's cache. The default is 150 names. 
  Setting the cache size to zero disables caching.

Так что пока dnsmasq  Можно кэш DNS, он не кэширует окно. Вы можете проверить свою машину и различные каталоги конфигурации, чтобы проверить, что вы находитесь на одной странице.

Если вы видите проблемы с кешем, это, вероятно, происходит в одном из нескольких мест:

  • Поток от вашего компьютера. Некоторые кеширование маршрутизаторов. Многие корпоративные сети будут кэшировать DNS. Многие DNS-серверы, работающие на ISP, будут использовать свои собственные кеши. Единственный способ гарантировать сетевой кеш - использовать кеш, который вы можете обновить вручную. Вот почему мне нравится OpenDNS.
  • В клиентском приложении (особенно в браузерах). Приложения могут делать все виды своего собственного кэширования, на которые Ubuntu не влияет. Как Firefox кэширует DNS, Как очистить кэш DNS от Chrome, Другие браузеры (и приложения) могут иметь свои собственные механизмы.
  • Я очищаю бочку здесь, но, возможно, вы установили нестандартный DNS-сервер в Ubuntu вместо того, чтобы включить кеширование в dnsmasq, Здесь очень много: nscd, DJBDNS dnscache (ака TinyDNS), pdns, pdnsd, Bind9 (и его варианты), и больше я даже не могу вспомнить. Они будут вероятно проявляться в /etc/resolv.conf (с конфигурацией в файле / etc / resolvconf / `для автоматического создания этого файла). Ниже показан локально перехваченный DNS-запрос:

    $ nslookup askubuntu.com
    Server:     127.0.1.1
    Address:    127.0.1.1#53
    
    Non-authoritative answer:
    Name:   askubuntu.com
    Address: 198.252.206.24
    

    Если вы не нажмете 8.8.8.8 (или как вы ожидаете, что ваш DNS-сервер будет), проверьте, на что вы нападаете. В моем случае я вижу, что это просто dnsmasq настроен на зеркальное отображение DNS-запросов для LXC, но в вашем случае это может привести к плохим тайным вещам.

    Если вы сделали из перечисленных кешей, процесс их очистки варьируется:

    sudo /etc/init.d/nscd reload    # nscd
    sudo /etc/init.d/named restart  # bind9
    

На слегка связанной заметке, см. это, чтобы включить кеширование в dnsmasq,


59
2018-03-17 10:40



Мой вывод из ps aux | grep такой же, как у вас, но что-то определенно кэширует DNS на моей машине. Если это не dnsmasq, это нечто другое. Доказательство. Я создал субдомен на моем сервере, но я не мог его пинговать, хост недостижим. Я проверил на thforeveryoneorjustme.com, и все было в порядке, поэтому проблема распространения была отброшена. Не мой маршрутизатор, ни мой провайдер, потому что я использую DNS 8.8.8.8 от Google. Затем я перезагрузил компьютер (и НЕ маршрутизатор), и я смог добраться до домена. Я пробовал дюжину раз перед перезагрузкой, не повезло. Сначала попробуйте перезагрузить компьютер. - matteo
И это было не в первый раз, когда я испытал одно и то же. Месяцы назад такое же произошло, и единственный способ, которым я смог добраться до домена, - перезагрузить компьютер, но тогда у меня была более старая версия Ubuntu. - matteo
@matteo Браузер? - Oli♦
нет, поскольку я сказал, что тестировал с помощью ping, а не (только) браузер (ы). - matteo
@matteo Я добавил больше, но у меня заканчиваются идеи. Там не так много других мест кто-то мог кэш DNS :) - Oli♦


Для 12.04:

Ubuntu 12.04 кэширует DNS с помощью dnsmasq (см. man dnsmasq). Для очистки кеша используйте следующее:

sudo kill -HUP $(pgrep dnsmasq)

40
2017-07-21 21:32



Спасибо! Вы первый, о котором я упоминал, упоминал о кэшировании по умолчанию 12.04! - Tarka
12.04 не кэширует dns по умолчанию - проверьте ваш syslog после перезапуска сетевого менеджера; у него будет запись, показывающая, что dnsmasq начинается с отключения кэша.
Я не знаю, включен ли кеш по умолчанию, но этот ответ сработал для меня. - jeyk
Почему не просто sudo killall -HUP dnsmasq? - James Haigh
использование pkill вместо kill а также pgrep - Robert Siemer


sudo /etc/init.d/nscd restart

http://www.ubuntugeek.com/howto-clearflush-dns-cache-in-ubuntu.html

Также в качестве примечания вы можете проверить и посмотреть, распространяются ли ваши DNS-изменения, используя dig и поиск против кого-то другого, кроме DNS-серверов по умолчанию. В этом случае DNS Google.

dig @8.8.8.8 example.com


16
2017-08-13 21:25



Стоит отметить, что nscd не установлен по умолчанию. - Scaine


Ubuntu 17.04 и выше (18.04)

Начиная с Ubuntu 17.04 и далее, systemd-resolve используется для DNS. Вы можете очистить кеши systemd так:

sudo systemd-resolve --flush-caches

12
2018-06-27 04:09



ОМГ, ты выйдешь за меня замуж? Решил мою проблему с 18.04 тоже \ o / - NiKo
Это не сработало для меня в 16.04 LTS - но было полезно увидеть еще один способ, которым он мог бы кэшировать: sudo systemd-resolve --statistics - Phil


Лично я бы использовать OpenDNS и использовать их Функция проверки кеша для принудительного обновления, чтобы убедиться, что изменения работают, но вы не можете гарантия они будут обновляться для ваших пользователей в течение 48 часов.

DNS - медленный зверь. Терпение будет держать вас в здравом уме.


11
2017-08-13 21:26



+1 Я использую OpenDNS, а также четкий кэш очень полезен. - Mark Davidson
Я подозрительно отношусь к OpenDNS. Сначала я был доволен этим, но потом я начал становиться подозрительным; хотя я думаю, что если это выбор между ISP и OpenDNS, мне лучше с OpenDNS, так? - Jono
Я бы сказал, что OpenDNS - это меньшее зло. Они хотели бы монетизировать ваш трафик, но только при неудачных хитах домена. - Oli♦