Как мне очистить кэш DNS?

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

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

Ubuntu 17.04 и выше (18.04)

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

sudo systemd-resolve --flush-caches

Для 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 глючит и не рекомендуется.

12.04

Ubuntu 12.04 использует dnsmasq который встроен в network-manager, но это не кэшируйте 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 вместо dns вашего интернет-провайдера, и более подробная информация об этом находится подробно здесь.

Обратите внимание, что Ubuntu использует systemd-resolve с 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-файл=/var/run/NetworkManager/dnsmasq.pid \ --listen-address=127.0.1.1 \ --conf-файл=/var/запустите/NetworkManager/dnsmasq.conf \  --размер кэша=0 \ --proxy-dnssec \ --enable-dbus=org.freedesktop.NetworkManager.dnsmasq \ --conf-dir=/etc/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-серверы, управляемые интернет-провайдерами, будут использовать свои собственные кэши. Единственный способ гарантировать защиту от сетевого кэша - это использовать кэш, который вы можете обновить вручную. Вот почему мне нравится OpenDNS.
  • В клиентском приложении (в частности, в браузерах). Приложения могут выполнять все виды собственного кэширования, на которое Ubuntu никак не влияет. Как Firefox кэширует DNS. Как очистить DNS-кэш Chrome. Другие браузеры (и приложения) могут иметь свои собственные механизмы.
  • Я здесь разбираюсь в деталях, но, возможно, вы установили нестандартный DNS-сервер в Ubuntu вместо того, чтобы включить кэширование в dnsmasq. Есть много: nscd, DJBDNS dnscache (он же TinyDNS), pdns, pdnsd, Bind9 (и его варианты) и многое другое, что я даже не могу вспомнить. Они будут возможно быть засвидетельствованным в /etc/resolv.conf (с конфигурацией в /etc/resolvconf/` для автоматического создания этого файла). Ниже показан локально перехваченный DNS-запрос:

    $ nslookup askubuntu.comServer:     127.0.1.1Address:    127.0.1.1#53Non-authoritative answer:Name:   askubuntu.comAddress: 198.252.206.24

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

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

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

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

За 12.04:

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

sudo kill -HUP $(pgrep dnsmasq)

sudo /etc/init.d/nscd restart

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

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

dig @8.8.8.8 example.com

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

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

Если вы используете nscd:

sudo /etc/init.d/nscd restart

Стоит отметить, что это может быть не та ОС, которая его кэширует. Каждый любит кэшировать DNS... Некоторые тесты:

Проверьте, является ли это новым или старым IP-адресом. Большинство браузеров также кэшируют DNS, поэтому, если вы не перезапустили Chromium или что-то еще, возможно, вы не видите последнюю версию.

ping yourdomain.com

Переключите свой локальный сервер имен в /etc/resolv.conf на другого поставщика, google или level , примеры:

nameserver 8.8.8.8nameserver 4.2.2.2

А затем снова пингуйте.

Убедитесь, что ваш маршрутизатор не кэширует DNS в какой-либо форме. (Зависит от маршрутизатора / прошивки / и т.д.)

Наконец, терпение. DNS может занять некоторое время для распространения по всему Интернету.

Все приведенные выше ответы забыли одну важную вещь в разрешении имен: как правило, DNS-серверы, к которым вы запрашиваете разрешение имен, не являются теми, на которых хранятся сами записи (авторитетный сервер).Поскольку каждая запись DNS имеет значение Времени жизни, которое обяжет каждый DNS-сервер в цепочке разрешений выполнять кэширование в течение количества секунд, указанного этим значением.Таким образом, вы не только можете кэшировать на своем компьютере, но и, КОНЕЧНО ЖЕ, результат поиска имени будет кэшироваться где-то на сервере, который вы не контролируете.

Единственным решением для получения немедленного уведомления об изменении записи имени является использование значения TTL, равного 0, при создании / обновлении записи на авторитетном сервере имен. Но это означает, что для каждого разрешения имени сервер будет поражен, обычно регистраторы этого не разрешают. Например, они могут предоставить список предопределенных значений TTL, которые вы можете выбрать.

Я управляю разными доменными именами и, чтобы быть уверенным, что изменения правильно применяются на авторитетных серверах имен, я использую инструмент под названием dnstracer это может показать результат поиска на каждом сервере из корня DNS.

В заключение, даже без какого-либо решения для кэширования DNS все равно будет задержка между моментом, когда вы измените записи DNS, и изменением, которое будет видно на ПК.Эта задержка в значительной степени зависит от TTL записей и от количества DNS-серверов между вашим ПК и авторизованным сервером имен.

Я использовал следующую команду, чтобы очистить кэш dns на моем 12.10 ubuntu box, и это сработало фантастически.

sudo kill -HUP $(pgrep dnsmasq)

Другим полезным сигналом является SIGUSR1, который сбрасывает небольшую статистику в системный журнал или, как это указано, из man dnsmasq:

В режиме --no-daemon или когда включено полное ведение журнала (-q), выполняется полный дамп содержимого кэша.

многие из этих ответов предполагают, что кэширование отключено по умолчанию, но они также относятся к более старым версиям. Он, безусловно, включен по умолчанию на моей машине (18.04), и различные ответы ниже показывают вам, как его очистить, ** просто прокрутите вниз**

Кроме того, проверьте /etc/hosts. Я только что был уверен, что старый IP-адрес моего домена кэшировался, но только `strace ping example.com "выяснилось, что я забыл удалить запись “/etc/hosts”, которую я добавил некоторое время назад из-за нехватки терпения для распространения DNS.