Обратите внимание, что Ubuntu использует systemd-resolv начиная с 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 = / и т.д. / 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
(с помощью config в / 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
.
/etc/hosts
. Я просто был уверен, что старый IP-адрес моего домена кэшировался, но толькоstrace ping example.com
показал, что я забыл удалить/etc/hosts
запись, которую я добавил некоторое время назад, из-за отсутствия терпения для распространения DNS.