Я только что обновил запись DNS (ns1
, ns2
, ns3.myhostingcompany.com
) для сайта, который я размещал, но я все еще получаю страницу парковки регистратора домена.
Я хотел бы посмотреть, не связана ли проблема с кэшированными записями DNS в Ubuntu. Есть ли способ очистить кеш DNS Ubuntu? (если такая вещь существует?)
Посмотрите на ответ Майка Шульца.
Ubuntu не кэширует записи dns по умолчанию, так что если вы не установили dns кэш, то ничего не нужно очищать.
DNS-записи, скорее всего, кэшируются DNS-серверами вашего провайдера, так что если вы хотите проверить, были ли внесены успешные изменения в DNS, вы можете опросить DNS-сервер из службы хостинга вашего домена с помощью dig:
dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server
Если вы хотите, чтобы Ubuntu начала кэшировать dns, я рекомендую установить pdnsd
вместе с resolvconf
. nscd
является ошибкой и не рекомендуется.
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, и более подробная информация об этом здесь .
Лично я бы использовал OpenDNS и использовал их Cache Check function, чтобы заставить их обновиться, просто чтобы убедиться, что изменения работают, но вы не можете гарантировать , что они обновятся для ваших пользователей в течение 48 часов.
DNS - это медленное чудовище. Терпение будет держать вас в здравом уме.
Начиная с Ubuntu 17.04 и выше, systemd-resolve является используется для DNS. Вы можете очистить кеши systemd следующим образом:
sudo systemd-resolve --flush-caches
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-серверах, кроме ваших DNS-серверов по умолчанию. В данном случае google DNS.
dig @8.8.8.8 example.com
Для ubuntu 14.04 я рекомендую эту команду:
sudo service dns-clean
Если вы используете 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 может занять некоторое время для распространения по Интернету.
dns ca ಅನ್ನು ಫ್ಲಶ್ ಮಾಡಲು ನಾನು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿದ್ದೇನೆ ನನ್ನ 12.10 ಉಬುಂಟು ಪೆಟ್ಟಿಗೆಯಲ್ಲಿ ಚೆ ಮತ್ತು ಅದು ಅದ್ಭುತವಾಗಿದೆ.
sudo kill -HUP $(pgrep dnsmasq)
ಮತ್ತೊಂದು ಸಹಾಯಕವಾದ ಸಂಕೇತವೆಂದರೆ SIGUSR1 ಇದು ಸಿಸ್ಲಾಗ್ಗೆ ಸ್ವಲ್ಪ ಅಂಕಿಅಂಶವನ್ನು ಡಂಪ್ ಮಾಡುತ್ತದೆ ಅಥವಾ ಮ್ಯಾನ್ dnsmasq
ನಿಂದ ಸೂಚಿಸಿದಂತೆ:
--no-ಡೀಮನ್ ಮೋಡ್ನಲ್ಲಿ ಅಥವಾ ಪೂರ್ಣ ಲಾಗಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ (-q ), ಸಂಪೂರ್ಣ ಸಂಗ್ರಹದ ವಿಷಯಗಳ ಡಂಪ್ ಅನ್ನು ತಯಾರಿಸಲಾಗುತ್ತದೆ.
Во всех приведенных выше ответах забыли одну важную вещь в разрешении имен: обычно DNS-серверы, к которым вы запрашиваете разрешение имен, не являются теми, которые содержат сами записи (авторитетный сервер). Поскольку каждая запись DNS имеет значение Time To Live, которое обязывает каждый DNS-сервер в цепочке разрешения выполнять кэширование в течение количества секунд, указанного этим значением. Таким образом, вы можете не только кэшировать на своем компьютере, но и ОБЯЗАТЕЛЬНО результат поиска имени будет кэшироваться где-нибудь на сервере, который вы не контролируете.
Единственное решение, которое можно немедленно уведомить об изменении записи имени, - это использовать Значение TTL 0 при создании / обновлении записи на полномочном сервере имен. Но это означает, что при каждом разрешении имен сервер будет поражен, обычно это не разрешено регистраторами. Например, они могут предоставить список предопределенных значений TTL, которые вы можете выбрать.
Я управляю разными доменными именами и, чтобы быть уверенным, что изменения правильно применяются на авторитетных серверах имен, я использую инструмент под названием dnstracer
, который может отображать результат поиска на каждом сервере из корня DNS.
В заключение, даже без какого-либо решения для кеширования DNS все равно будет задержка между моментом изменения записей DNS и изменение видно на ПК. Эта задержка во многом зависит от TTL записей и количества DNS-серверов между вашим ПК и официальным сервером имен.
Обратите внимание, что Ubuntu использует systemd-resolve начиная с 17.04, поэтому этот ответ больше не применяется к последним версиям Ubuntu. См. « очистить кеш DNS в Ubuntu 17.04 и выше (18.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-сервер в 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
В Ubuntu 16.04 я не мог очистить кеш, если не сделал этого:
sudo service dnsmasq restart
Я тоже нашел противоречия, но это:
https://superuser.com/a/521562
работает для меня (Ubuntu 13.10 с последними обновлениями, никаких специальных сетевых пакетов не установлено).
Короче говоря, просто используйте этот
sudo /etc/init.d/dns-clean[1274 visible
Я рекомендую 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
При использовании утилит на основе bind9
:
rndc flush
или, в зависимости от вашей инфраструктуры
sudo rndc flush
, но на вашем хосте и / или в вашем локальном доменном имени сервер ...