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

156

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

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

    
задан Jono 13.08.2010 в 23:23
источник

13 ответов

55

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

    
ответ дан Li Lo 14.08.2010 в 02:13
источник
69

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%, co_de% будет принимать настройки прямо с вашего маршрутизатора, и ваше соединение будет автоматически установлено при входе в Ubuntu. Вы можете проверить правильность настроек на своем маршрутизаторе, если вы можете получить к нему доступ через веб-интерфейс и, возможно, перезагрузите его, если необходимо.  Если это общая проблема с dns, вы можете попробовать использовать Google dns вместо своих isp dns, а более подробная информация о нем - подробнее здесь .

    
ответ дан user76204 14.09.2012 в 22:39
61

Обратите внимание, что 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-size=0 \
  --proxy-dnssec \
  --enable-dbus=org.freedesktop.NetworkManager.dnsmasq \
  --conf-dir=/etc/NetworkManager/dnsmasq.d

/etc/NetworkManager/dnsmasq.d по умолчанию пуст. Таким образом, нет никаких переопределений и просто проверить --cache-size=0 означает то, что, по нашему мнению, означает (вместо кеша unlimited ), 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 (aka 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 .

    
ответ дан Oli 17.03.2014 в 11:40
40

Для 12.04:

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

sudo kill -HUP $(pgrep dnsmasq)
    
ответ дан zechariah 21.07.2012 в 23:32
17

Ubuntu 17.04 и выше (18.04)

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

sudo systemd-resolve --flush-caches
    
ответ дан Mike Shultz 27.06.2017 в 06:09
16

sudo /etc/init.d/nscd restart

Ссылка

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

dig @8.8.8.8 example.com

    
ответ дан Mark Davidson 13.08.2010 в 23:25
11

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

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

    
ответ дан Oli 13.08.2010 в 23:26
7

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

sudo /etc/init.d/nscd restart

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

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

ping yourdomain.com

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

nameserver 8.8.8.8
nameserver 4.2.2.2

И затем снова запустите ping.

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

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

    
ответ дан bikesandcode 13.08.2010 в 23:33
5

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

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

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

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

    
ответ дан Benoit 18.03.2014 в 11:07
2

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

sudo service dns-clean
    
ответ дан alphayax 02.06.2016 в 16:33
1

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

sudo kill -HUP $(pgrep dnsmasq)

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

In --no-daemon mode or when full logging is enabled (-q), a complete dump of the contents of the cache is made.

    
ответ дан j0inty 25.02.2013 в 22:41
0

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

    
ответ дан Nitz 23.03.2014 в 10:39
0

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

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

cd /etc/dhcp
sudo nano dhclient.conf

вставьте этот ПЕРЕД строку «запрос подсети-маски ...»

supersede domain-name-servers 208.67.222.222,208.67.220.220;

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

sudo ifdown eth0 && sudo ifup eth0

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

cat /etc/resolv.conf
    
ответ дан D.Snap 23.03.2016 в 20:49