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

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

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

240
задан 2 June 2016 в 17:53

15 ответов

Для 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 является ошибкой и не рекомендуется.

76
ответ дан 2 June 2016 в 17:53

12.04

Ubuntu 12. 04 использует dnsmasq , который встроен в сетевой менеджер, но он не кэширует dns, так что нет необходимости его промывать. Вот пример строки из моего syslog, чтобы доказать этот момент:

dnsmasq[2980]: started, version 2.59 cache disabled

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

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

sudo service network-manager restart

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

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

70
ответ дан 2 June 2016 в 17:53

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

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

11
ответ дан 2 June 2016 в 17:53

Ubuntu 17.04 и выше (18.04)

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

sudo systemd-resolve --flush-caches
126
ответ дан 2 June 2016 в 17:53

Для 12.04:

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

sudo kill -HUP $(pgrep dnsmasq)
40
ответ дан 2 June 2016 в 17:53

sudo /etc/init.d/nscd restart

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

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

dig @8.8.8.8 example.com

15
ответ дан 2 June 2016 в 17:53

Для ubuntu 14.04 я рекомендую эту команду:

sudo service dns-clean
2
ответ дан 2 June 2016 в 17:53

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

sudo /etc/init.d/nscd restart

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

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

ping yourdomain.com

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

nameserver 8.8.8.8
nameserver 4.2.2.2

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

Проверьте, чтобы убедиться, что ваш маршрутизатор не кэширует DNS в любой форме. (Изменения по маршрутизатору/программному обеспечению/ и т.д.)

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

7
ответ дан 2 June 2016 в 17:53

dns ca ಅನ್ನು ಫ್ಲಶ್ ಮಾಡಲು ನಾನು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿದ್ದೇನೆ ನನ್ನ 12.10 ಉಬುಂಟು ಪೆಟ್ಟಿಗೆಯಲ್ಲಿ ಚೆ ಮತ್ತು ಅದು ಅದ್ಭುತವಾಗಿದೆ.

sudo kill -HUP $(pgrep dnsmasq)

ಮತ್ತೊಂದು ಸಹಾಯಕವಾದ ಸಂಕೇತವೆಂದರೆ SIGUSR1 ಇದು ಸಿಸ್‌ಲಾಗ್‌ಗೆ ಸ್ವಲ್ಪ ಅಂಕಿಅಂಶವನ್ನು ಡಂಪ್ ಮಾಡುತ್ತದೆ ಅಥವಾ ಮ್ಯಾನ್ dnsmasq ನಿಂದ ಸೂಚಿಸಿದಂತೆ:

--no-ಡೀಮನ್ ಮೋಡ್‌ನಲ್ಲಿ ಅಥವಾ ಪೂರ್ಣ ಲಾಗಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ (-q ), ಸಂಪೂರ್ಣ ಸಂಗ್ರಹದ ವಿಷಯಗಳ ಡಂಪ್ ಅನ್ನು ತಯಾರಿಸಲಾಗುತ್ತದೆ.

2
ответ дан 2 June 2016 в 17:53

Во всех приведенных выше ответах забыли одну важную вещь в разрешении имен: обычно DNS-серверы, к которым вы запрашиваете разрешение имен, не являются теми, которые содержат сами записи (авторитетный сервер). Поскольку каждая запись DNS имеет значение Time To Live, которое обязывает каждый DNS-сервер в цепочке разрешения выполнять кэширование в течение количества секунд, указанного этим значением. Таким образом, вы можете не только кэшировать на своем компьютере, но и ОБЯЗАТЕЛЬНО результат поиска имени будет кэшироваться где-нибудь на сервере, который вы не контролируете.

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

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

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

5
ответ дан 2 June 2016 в 17:53

Обратите внимание, что 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-file=/var/run/NetworkManager/dnsmasq.pid \
  --listen-address=127.0.1.1 \
  --conf-file=/var/run/NetworkManager/dnsmasq.conf \
  --cache-size=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.com
    Сервер: 127.0.1.1
    Адрес: 127.0.1.1 # 53
    
    Неавторитетный ответ:
    Имя: askubuntu.com
    Адрес: 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 .

61
ответ дан 2 June 2016 в 17:53

В Ubuntu 16.04 я не мог очистить кеш, если не сделал этого:

sudo service dnsmasq restart
1
ответ дан 2 June 2016 в 17:53

Я тоже нашел противоречия, но это: https://superuser.com/a/521562 работает для меня (Ubuntu 13.10 с последними обновлениями, никаких специальных сетевых пакетов не установлено).
Короче говоря, просто используйте этот
sudo /etc/init.d/dns-clean[1274 visible

0
ответ дан 2 June 2016 в 17:53

Я рекомендую openDNS специально для удаленных серверов Ubuntu, это облегчает боль ...

Как это сделать? Ну ...

cd /etc/dhcp
sudo nano dhclient.conf

вставить эту ДО строку «request subnet-mask ...»

supersede domain-name-servers 208.67.222.222,208.67.220.220;

, это перезапустит интерфейс так быстро, что вы даже не потеряете свой SSH-соединение

sudo ifdown eth0 && sudo ifup eth0

проверьте это, чтобы увидеть, правильно ли установлены ваши новые openDNS

cat /etc/resolv.conf
0
ответ дан 2 June 2016 в 17:53

Или даже

При использовании утилит на основе bind9 :

rndc flush

или, в зависимости от вашей инфраструктуры

sudo rndc flush

, но на вашем хосте и / или в вашем локальном доменном имени сервер ...

0
ответ дан 5 January 2021 в 23:59

Другие вопросы по тегам:

Похожие вопросы: