Я только что обновил запись DNS ( ns1
, ns2
, ns3.myhostingcompany.com
) для сайта я получил прошла, но я все еще получаю страницу домена регистратора парковки.
Я хотел бы посмотреть, если проблема в кэшированных записях DNS Ubuntu. Есть ли способ очистить кеш DNS Ubuntu? (если такая вещь существует?)
networking
dns
Jono
источник
источник
/etc/hosts
. Я просто был уверен, что старый IP-адрес моего домена кэшировался, но толькоstrace ping example.com
показал, что я забыл удалить/etc/hosts
запись, которую я добавил некоторое время назад, из-за отсутствия терпения для распространения DNS.Ответы:
Для 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
глючит и не рекомендуется.источник
Ubuntu 17.04 и выше (18.04)
Начиная с Ubuntu 17.04 и далее, systemd-resolution используется для DNS. Вы можете очистить кэши systemd следующим образом:
источник
sudo systemd-resolve --statistics
systemctl restart systemd-resolved.service
тоже сработало 18.04.12,04
Ubuntu 12.04 использует
dnsmasq
встроенную функциюnetwork-manager
, но она не кэширует dns, поэтому ее не нужно очищать. Вот пример строки из моего,syslog
чтобы доказать эту точку:Также нет необходимости в любой конфигурации
dnsmasq
. Если вы работаете со стандартными настройками, он не будет кэшировать dns, так как для этого вам нужно явно настроить его, как описано в этой статье Ubuntu .Если вы хотите обновить настройки, вы можете отключить, а затем включить сеть или запустить
Это перезапускается,
dnsmasq
потому что он встроен вnetwork-manager
; проверьте своиsyslog
доказательства на это.Если вы используете проводное соединение с dhcp
network manager
, настройки будут приниматься непосредственно с вашего маршрутизатора, и ваше соединение будет автоматически установлено при входе в Ubuntu. Вы можете проверить правильность настроек вашего роутера, если получите доступ к нему через веб-интерфейс, и, возможно, перезагрузите его, если это необходимо. Если это общая проблема с DNS, вы можете попробовать использовать Google DNS вместо ISP DNS, и более подробную информацию об этом подробно здесь .источник
sudo service network-manager restart
сделал трюк для меня с DebianОбратите внимание, что Ubuntu использует systemd-resolv начиная с 17.04 и далее, поэтому этот ответ больше не применяется к последним версиям Ubuntu. Смотрите " очистить кеш DNS в Ubuntu 17.04 и выше (18.04) "
По умолчанию DNS не кэшируется в Ubuntu <17.04 (но он может кэшироваться в сети или приложении)
Чтобы подтвердить, так или иначе,
dnsmasq
является ли кэширование, запуститеps ax | grep dnsmasq
и посмотрите на команду выполнения. Вот разбивка моей машины по умолчанию 13.10:/etc/NetworkManager/dnsmasq.d
по умолчанию пусто. Таким образом, здесь нет никаких переопределений, и просто проверка--cache-size=0
означает, что мы думаем, что это означает (вместо неограниченного кэша),man dnsmasq
показывает:Так что, хотя
dnsmasq
можно кешировать DNS, он не кеширует из коробки. Вы можете проверить свою машину и различные каталоги конфигурации, чтобы убедиться, что вы находитесь на одной странице.Если вы видите проблемы с кешем, это может произойти в одном из следующих мест:
Я здесь очищаю ствол, но, возможно, вы установили нестандартный DNS-сервер в Ubuntu вместо того, чтобы включить кеширование
dnsmasq
. Есть много:nscd
, Djbdnsdnscache
(ака Tinydns)pdns
,pdnsd
, bind9 (и его варианты), и больше я даже не могу вспомнить. Это, вероятно, будет показано в/etc/resolv.conf
(с помощью config в / etc / resolvconf / `для автоматической генерации этого файла). Ниже показан локально перехваченный DNS-запрос:Если вы не используете 8.8.8.8 (или что-то еще, чего вы ожидаете от DNS-сервера), проверьте, что вы используете. В моем случае я вижу, что это просто
dnsmasq
настроено на зеркальное отражение DNS-запросов для LXC, но в вашем случае это может приводить к плохому кешированию.Если вы сделали из перечисленных кэшей, процесс очистки каждого из них варьируется:
Обратите внимание на это, чтобы включить кеширование
dnsmasq
.источник
На 12.04:
Ubuntu 12.04 выполняет кеширование DNS с помощью dnsmasq (см.
man dnsmasq
). Используйте следующее, чтобы очистить кеш:источник
sudo killall -HUP dnsmasq
?pkill
вместоkill
иpgrep
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:
Стоит отметить, что это может быть не та ОС, которая его кеширует. Всем нравится кешировать DNS ... Некоторые тесты:
Проверьте, является ли это новым или старым IP. Большинство браузеров также кэшируют DNS, поэтому, если вы еще не перезапустили Chromium или что-то еще, вы можете не увидеть последнюю версию.
Переключите ваш локальный сервер имен в /etc/resolv.conf на другого провайдера, Google или уровень, например:
А потом снова пинг.
Убедитесь, что ваш маршрутизатор не кэширует DNS в любой форме. (Зависит от роутера / прошивки / и т.д.)
Наконец-то терпение. DNS может занять немного времени, чтобы распространиться по Интернету.
источник
Все ответы, приведенные выше, забыли одну важную вещь в разрешении имен: обычно DNS-серверы, для которых вы запрашиваете разрешение имен, - это не те, которые содержат сами записи (авторитетный сервер). Поскольку каждая запись DNS имеет значение Time To Live, которое обязывает каждый DNS-сервер в цепочке разрешений выполнять кэширование в течение количества секунд, указанного в этом значении. Таким образом, вы можете не только кэшировать данные на своей машине, но, безусловно, результат поиска имени будет кэширован где-то на сервере, который вы не контролируете.
Единственное решение, которое будет немедленно уведомлено об изменении записи имени, - это использовать значение TTL 0 при создании / обновлении записи на полномочном сервере имен. Но это означает, что для каждого разрешения имени сервер будет работать, как правило, это не разрешено регистраторами. Например, они могут предоставить список предопределенных значений TTL, которые вы можете выбрать.
Я управляю разными доменными именами и, чтобы быть уверенным в том, что изменения хорошо применяются на авторитетных серверах имен, я использую инструмент,
dnstracer
который может отображать результаты поиска на каждом сервере из корня DNS.В заключение, даже без какого-либо решения для кэширования DNS все равно будет задержка между моментом изменения записей DNS и изменениями, которые видны на ПК. Эта задержка в значительной степени зависит от TTL записей и от количества DNS-серверов между вашим ПК и официальным сервером имен.
источник
Для Ubuntu 14.04 я рекомендую эту команду:
источник
Я использовал следующую команду, чтобы очистить кэш DNS на моем 12.10 Ubuntu Box, и это работало фантастически.
Другим полезным сигналом является SIGUSR1, который выдает небольшую статистику в системный журнал или, как это видно из
man dnsmasq
:источник
pkill
вместоkill
иpgrep
В Ubuntu 16.04 я не смог очистить кеш, если не сделал:
источник
Я также нашел противоречия, но это: https://superuser.com/a/521562 woks for me (Ubuntu 13.10 с последними обновлениями, специальные сетевые пакеты не установлены).
Короче, просто используйте это
sudo /etc/init.d/dns-clean
источник
Я рекомендую openDNS специально для удаленных серверов Ubuntu, это облегчает боль ...
Как это сделать? Что ж...
вставьте ПЕРЕД строкой «request subnet-mask ...»
это перезапустит интерфейс так быстро, что вы даже не потеряете соединение SSH
проверьте это, чтобы увидеть, правильно ли установлены ваши новые openDNS
источник