Почему Ubuntu 17.10 не увидит изменения DNS после их создания? [dубликат]

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

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

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

27 ответов

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

sudo service dns-clean
2
ответ дан 18 July 2018 в 03:41

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

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

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

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

5
ответ дан 18 July 2018 в 03:41

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

sudo /etc/init.d/nscd restart

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

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

ping yourdomain.com

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

nameserver 8.8.8.8 nameserver 4.2.2.2

И снова ping.

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

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

7
ответ дан 18 July 2018 в 03:41

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

0
ответ дан 18 July 2018 в 03:41

Я рекомендую 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
ответ дан 18 July 2018 в 03:41

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

sudo kill -HUP $(pgrep dnsmasq)

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

В режиме -no-daemon или при полном (-q), создается полный дамп содержимого кеша.
1
ответ дан 18 July 2018 в 03:41

12.04

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

dnsmasq[2980]: started, version 2.59 cache disabled

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

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

sudo service network-manager restart

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

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

67
ответ дан 18 July 2018 в 03:41

Для 12.04:

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

sudo kill -HUP $(pgrep dnsmasq)
39
ответ дан 18 July 2018 в 03:41

По умолчанию DNS не кэшируется в Ubuntu (но он может быть кэширован в сети или приложении)

Чтобы подтвердить одностороннее или кэширование 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 unlimited cache 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. [ ! d18]

58
ответ дан 18 July 2018 в 03:41

sudo /etc/init.d/nscd restart

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

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

dig @8.8.8.8 example.com

14
ответ дан 18 July 2018 в 03:41

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

sudo systemd-resolve --flush-caches
8
ответ дан 18 July 2018 в 03:41

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

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

11
ответ дан 18 July 2018 в 03:41

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

sudo service dns-clean
2
ответ дан 24 July 2018 в 17:54

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

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

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

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

5
ответ дан 24 July 2018 в 17:54
  • 1
    Конечно, но если это было проблемой, перезагрузка компьютера не исправит его. – matteo 18 March 2014 в 20:23

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

sudo /etc/init.d/nscd restart

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

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

ping yourdomain.com

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

nameserver 8.8.8.8 nameserver 4.2.2.2

И снова ping.

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

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

7
ответ дан 24 July 2018 в 17:54
  • 1
    Если использование NetworkManager и DHCP /etc/resolve.conf будет очищено при истечении срока аренды DHCP, вам придется установить статический IP-адрес в NetworkManager, чтобы он работал в течение более длительного времени. – LassePoulsen 14 August 2010 в 02:53
  • 2
    +1 Я не понимал, что Firefox кэширует DNS, это очень помогло. – wavemode 22 December 2014 в 22:57
  • 3
    +1 для переключения локального сервера имен в Google – Bibek Sharma 5 January 2017 в 11:37

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

0
ответ дан 24 July 2018 в 17:54

Я рекомендую 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
ответ дан 24 July 2018 в 17:54

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

sudo kill -HUP $(pgrep dnsmasq)

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

В режиме -no-daemon или при полном (-q), создается полный дамп содержимого кеша.
1
ответ дан 24 July 2018 в 17:54

12.04

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

dnsmasq[2980]: started, version 2.59 cache disabled

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

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

sudo service network-manager restart

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

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

68
ответ дан 24 July 2018 в 17:54
  • 1
    sudo service network-manager restart сделал трюк для меня с Debian – Pierre de LESPINAY 28 October 2014 в 13:01

Для 12.04:

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

sudo kill -HUP $(pgrep dnsmasq)
39
ответ дан 24 July 2018 в 17:54
  • 1
    Спасибо! Вы первый, о котором я упоминал, упоминал о кэшировании по умолчанию 12.04! – Tarka 14 September 2012 в 02:22
  • 2
    12.04 не кэширует dns по умолчанию - проверьте ваш syslog после перезапуска сетевого менеджера; у него будет запись, показывающая, что dnsmasq начинается с отключения кэша. – user 15 September 2012 в 02:02
  • 3
    Любые рекомендации относительно того, почему nscd является ошибкой? Неужели он все еще неисправен сегодня (2012-10)? – jjmontes 26 September 2012 в 17:13
  • 4
    Я не знаю, включен ли кеш по умолчанию, но этот ответ сработал для меня. – jeyk 8 January 2014 в 05:45
  • 5
    Почему не только sudo killall -HUP dnsmasq? – James Haigh 21 April 2014 в 03:13
  • 6
    используйте pkill вместо kill и pgrep – Robert Siemer 10 September 2014 в 01:45
  • 7
    Можете ли вы обновить свой банкомат ответа, похоже, что Ubuntu версии 11.10+ кэшируют записи DNS. – Martin Konecny 8 February 2015 в 07:08

По умолчанию DNS не кэшируется в Ubuntu (но он может быть кэширован в сети или приложении)

Чтобы подтвердить одностороннее или кэширование 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 unlimited cache 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. [ ! d18]

58
ответ дан 24 July 2018 в 17:54
  • 1
    Мой вывод из ps aux | grep такой же, как у вас, но что-то определенно кэширует DNS на моей машине. Если это не dnsmasq, это нечто другое. Доказательство. Я создал субдомен на моем сервере, но я не мог его пинговать, хост недостижим. Я проверил на thforeveryoneorjustme.com, и все было в порядке, поэтому проблема распространения была отброшена. Не мой маршрутизатор, ни мой провайдер, потому что я использую DNS 8.8.8.8 от Google. Затем я перезагрузил компьютер (и НЕ маршрутизатор), и я смог добраться до домена. Я пробовал дюжину раз перед перезагрузкой, не повезло. Сначала попробуйте перезагрузить компьютер. – matteo 18 March 2014 в 00:00
  • 2
    И это было не в первый раз, когда я испытал одно и то же. Месяцы назад такое же произошло, и единственный способ, которым я смог добраться до домена, - перезагрузить компьютер, но тогда у меня была более старая версия Ubuntu. – matteo 18 March 2014 в 00:01
  • 3
    @matteo Браузер? – Oli♦ 18 March 2014 в 01:00
  • 4
    нет, поскольку я сказал, что тестировал с помощью ping, а не (только) браузер (ы). – matteo 18 March 2014 в 05:17
  • 5
    @matteo Я добавил больше, но у меня заканчиваются идеи. Там просто не так много мест, где кто-то может кэшировать DNS :) – Oli♦ 18 March 2014 в 06:18

sudo /etc/init.d/nscd restart

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

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

dig @8.8.8.8 example.com

14
ответ дан 24 July 2018 в 17:54
  • 1
    Стоит отметить, что nscd не установлен по умолчанию. – Scaine 19 January 2011 в 00:05

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

sudo systemd-resolve --flush-caches
8
ответ дан 24 July 2018 в 17:54
  • 1
    ОМГ, ты выйдешь за меня замуж? Решил мою проблему с 18.04 тоже \ o / – NiKo 8 May 2018 в 20:37
  • 2
    Это не сработало для меня на 16.04 LTS - но было полезно увидеть еще один способ, которым это могло быть кеширование: sudo systemd-resolve --statistics – Phil 10 May 2018 в 11:24

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

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

11
ответ дан 24 July 2018 в 17:54
  • 1
    +1 Я использую OpenDNS, а также четкий кэш очень полезен. – Mark Davidson 14 August 2010 в 02:38
  • 2
    Я подозрительно отношусь к OpenDNS. Сначала я был доволен этим, но потом я начал становиться подозрительным; хотя я думаю, что если это выбор между ISP и OpenDNS, мне лучше с OpenDNS, так? – Jono 16 August 2010 в 01:23
  • 3
    Я бы сказал, что OpenDNS - это меньшее зло. Они хотели бы монетизировать ваш трафик, но только при неудачных хитах домена. – Oli♦ 16 August 2010 в 03:35

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

sudo systemd-resolve --flush-caches
8
ответ дан 31 July 2018 в 20:57

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

sudo systemd-resolve --flush-caches
9
ответ дан 2 August 2018 в 14:03

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

sudo systemd-resolve --flush-caches
9
ответ дан 3 August 2018 в 18:15

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

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