- Как очистить DNS в Linux
- Что такое кэши DNS?
- Использует ли ваш компьютер локальный кэш DNS?
- Проверка кэша DNS
- Как очистить кэш DNS в Linux
- Как очистить кеш dnsmasq в Linux
- Покраснел, с успехом
- Как очистить DNS-кэш локально в Windows, MacOS и Linux
- Как очистить кэш DNS в Windows
- Очистить кэш DNS на Mac
- Сброс DNS на MacOS Mojave (версия 10.14)
- Команды для очистки DNS-кэша в старых версиях macOS и Mac OS X
- Как очистить кэш DNS в Linux
- Очистить локальный DNS-кэш NCSD
- Очистить локальный DNS-кэш dnsmasq
- Очистить локальный DNS-кэш BIND
Как очистить DNS в Linux
Резюме: вы можете сбросить кеш DNS на компьютере Linux на основе systemd с помощью команды «resolvectl flush-caches». Если вы используете dnsmasq, вы можете очистить DNS с помощью «sudo killall -HUP dnsmasq».
Медленна ли ваша работа в Интернете на вашем устройстве Linux, или веб-сайты, которые вы посещаете, устарели или вообще являются неправильным веб-сайтом? Давайте обсудим очистку кеша DNS в Linux и как узнать, действительно ли вам это нужно.
Что такое кэши DNS?
Служба доменных имен – это волшебство, которое преобразует имена в числа. Он принимает сетевые имена устройств и имена веб-сайтов и ищет их IP-адреса. Затем сеть может использовать IP-адрес для правильной маршрутизации трафика на эти устройства или сайты.
Эти запросы, известные как запросы, не выполняются мгновенно. Это небольшой, ограниченный период времени. Запросы DNS в Интернете могут потребовать запросов к DNS-серверам-предшественникам, корневым серверам имен, серверам доменов верхнего уровня и авторитетным серверам имен. DNS-запросы выполняются быстро, но чтобы сделать их еще быстрее, ответы на недавние DNS-запросы кэшируются на серверах-предшественниках DNS.
Если ответ на DNS-запрос найден в кэше сервера-предшественника, связываться с другими серверами не нужно. Ответ отправляется обратно из кэша сервера-предшественника. Точно так же небольшой кэш поддерживается вашим широкополосным маршрутизатором дома. Если вы запрашиваете локальное сетевое устройство, используя его имя сетевого устройства, ваш маршрутизатор предоставляет IP-адрес. Он также может кэшировать ответы, полученные от внешних DNS-серверов.
Обычно сети и компьютеры Linux настроены на использование внешних служб DNS, предоставляемых либо вашим интернет-провайдером, либо бесплатными службами, такими как OpenDNS или Google DNS. Есть веские причины, по которым некоторые люди используют свой собственный DNS-сервер, но большинство из нас этого не делает. Однако ваш компьютер с Linux, даже если на нем нет DNS-сервера, может дополнительно кэшировать результаты DNS-запросов.
Проблема с использованием кэшированных данных заключается в том, что все это основано на предположении, что ни одна из кэшированных деталей не изменилась с момента их кэширования. Если детали изменились, информация, которую вы получите, будет устаревшей.
Если запись в кеше или весь кеш повреждены, в лучшем случае вы получите нестабильную производительность, а в худшем — уязвимости в системе безопасности. Вот когда вы захотите изучить «очистку» или очистку кеша DNS.
Использует ли ваш компьютер локальный кэш DNS?
На некоторых из наших тестовых компьютеров локальные кэши DNS были включены, а на других — отключены. Он был выключен на нашем компьютере с Manjaro 21, но был включен по умолчанию в Fedora 37 и Ubuntu 22.10.
Чтобы определить, кэширует ли ваш компьютер Linux DNS-запросы, используйте параметр is-active команды systemctl . Демон, который управляет кешем DNS, — это диспетчер разрешения сетевых имен systemd, известный как systemd-resolved .
systemctl is-active systemd-resolved
Если ответ «активен», происходит кэширование DNS. Если ответ «неактивен», это не так. На этом конкретном компьютере он активен. Мы можем использовать команду resolvectl с параметром статистики, чтобы увидеть, сколько записей находится в кеше.
Мы видим, что в кэше DNS этого компьютера есть 330 записей.
Проверка кэша DNS
Просмотр записей кэша DNS не является обязательным условием для очистки кэша, и если вы не заинтересованы в этом, вы можете пропустить весь этот шаг. Иногда, однако, это может быть информативно. Вы можете увидеть зашифрованные записи, указывающие на повреждение, или сообщения об ошибках, связанные с проблемами адресации устройств в вашей сети.
Теперь нет простого способа увидеть эти записи. Мы можем это сделать, но нужно проявить немного творчества. USR1 или определяемый пользователем сигнал номер один — это сигнал, который может быть отправлен функциями kill и killall . команды. Этот сигнал не имеет предопределенного значения. Приложения могут игнорировать этот сигнал или реагировать любым способом, реализованным разработчиками.
Демон systemd-resolved реагирует на USR1 , записывая свой кэш в системные журналы. Затем мы можем использовать команду journalctl для фильтрации записей DNS.
Мы будем использовать команду killall с USR1 , чтобы отправить сигнал демону systemd-resolved . Обратите внимание: хотя мы используем команду killall , демон systemd-resolved продолжает работать. Это не сигнал завершения, который мы отправляем.
sudo killall -USR1 systemd-resolved
Теперь мы воспользуемся командой journalctl с параметром -u (фильтр по модулю systemd ) для извлечения записей журнала, сгенерированных разрешено systemd . Мы перенаправим этот вывод в текстовые файлы с именем «dns.txt».
sudo journalctl -u systemd-resolved > dns.txt
Мы будем использовать средство просмотра файлов less для просмотра содержимого файла.
Вы сможете найти кэшированные сопоставления между доменными именами и IP-адресами, прокручивая и выполняя поиск по тексту.
Мы видим запись для Google с IP-адресом 216.58.212.196. Вы можете проверить это, введя IP-адрес в веб-браузере. Вы должны увидеть домашнюю страницу поиска Google.
Как очистить кэш DNS в Linux
Очистка кеша удаляет все записи и снова запускает процесс сбора. Если они есть, это принудительно удаляет неверные и поврежденные записи из кеша.
Команда проста; мы используем resolvectl с опцией flush-caches .
Мы молча возвращаемся в командную строку. Чтобы убедиться, что что-то действительно произошло, мы еще раз проверим статистику кеша DNS.
Мы видим, что размер кеша уменьшился до нуля. Со временем он будет увеличиваться по мере накопления новых записей.
Как очистить кеш dnsmasq в Linux
Приложение dnsmasq предоставляет кэш DNS и DHCP-сервер. Он популярен среди пользователей, которые хотят запустить свой собственный DNS-сервер, особенно в установках, отличных от systemd.
Очистить кеш DNS dnsmasq очень просто. Нам нужно отправить сигнал SIGHUP , который указывает демону dnsmasq эффективно выполнить повторную инициализацию. Это очищает кэш DNS. Для отправки сигнала мы используем команду killall с флагом -HUP и именем приложения.
Покраснел, с успехом
Конечно, если ваш компьютер вообще не кеширует, вам нечего проверять.
Если он кеширует DNS-запросы, но все работает нормально, вы также можете его игнорировать. Но если вы сталкиваетесь с медленными или спорадическими обновлениями веб-страниц при просмотре веб-страниц или вообще видите неправильные веб-страницы, вероятно, самое время очистить кеш DNS.
Linux Commands | |
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts
Как очистить DNS-кэш локально в Windows, MacOS и Linux
Кэш DNS может быть поврежден по ряду причин, включая сетевые атаки или вирусы. Когда это происходит, сопоставление IP-адресов становится поврежденным для некоторых популярных веб-сайтов.
Например, вместо того, чтобы заходить на сайт www.google.com, ваш браузер может перенаправить вас на IP-адрес вредоносного веб-сайта, который злоумышленник вставил в записи DNS вашего компьютера. Или вы можете получить большое количество ошибок 404.
Очистка кеша DNS удаляет всю сохраненную информацию поиска DNS. Затем ваш компьютер получает обновленные данные с DNS-серверов при следующей отправке запроса на поиск.
Как очистить кэш DNS в Windows
Очистка кеша DNS — это простой и быстрый процесс. Процедура одинакова для почти всех систем Windows. Для примера ниже мы будем использовать Windows 10.
Чтобы очистить DNS на вашем компьютере с Windows:
- Загрузите командную строку от имени администратора. Откройте меню «Пуск» и начните вводить «командная строка» или «cmd», пока не увидите ее в результатах.
- Введите ipconfig/flushdns , когда командная строка загрузится, и нажмите Enter на клавиатуре.
- Процесс должен занять всего несколько секунд. Вы должны увидеть подтверждающее сообщение DNS Resolver Cache, когда это будет сделано:
База данных кэша DNS на вашем компьютере теперь очищена. Вы должны получить правильное и обновленное сопоставление IP-адресов с DNS-серверов в следующий раз, когда ваш компьютер отправит DNS-запрос.
Очистить кэш DNS на Mac
Есть несколько разных команд для очистки кеша DNS в OS X и macOS в зависимости от используемой версии.
Поскольку процедура одинакова для всех версий, в этой статье подробно описано, как очистить DNS в macOS Mojave (10.14), а затем перечислены команды для других версий в таблице.
Сброс DNS на MacOS Mojave (версия 10.14)
Чтобы очистить кэш DNS на MacOS Mojave, используйте приложение Terminal:
- Запустите Terminal.app, используя ваш предпочтительный метод. Вы можете запустить приложение из Приложения ->Утилиты или нажать Ctrl + Space , чтобы запустить Spotlight и выполнить поиск терминала.
- Введите sudo killall -HUP mDNSResponder и нажмите Enter на клавиатуре.
- Введите пароль администратора для рассматриваемой учетной записи и нажмите Enter.
После окончания процесса не будет никаких оповещений
Команды для очистки DNS-кэша в старых версиях macOS и Mac OS X
В таблице ниже перечислены команды для очистки кэша DNS в большинстве версий MacOS и Mac OS X. Вы можете скопировать и вставить их прямо из таблицы в свой терминал.
Mac OS X или macOS версия | Команда терминала |
---|---|
Mojave (version 10.14) High Sierra (version 10.13) Sierra (version 10.12) Mountain Lion (version 10.8) Lion (version 10.7) | sudo killall -HUP mDNSResponde |
El Capitan (version 10.11) Mavericks (version 10.9) | sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder |
Yosemite (version 10.10) | sudo discoveryutil mdnsflushcache sudo discoveryutil udnsflushcaches |
Snow Leopard (version 10.6) Leopard (version 10.5) | sudo dscacheutil -flushcache |
Tiger (version 10.4) | lookupd -flushcache |
Как очистить кэш DNS в Linux
Дистрибутивы Linux немного отличаются от компьютеров с Windows и Mac. Каждый дистрибутив Linux может использовать свою службу DNS. Некоторые дистрибутивы, такие как Ubuntu, вообще не имеют службы DNS по умолчанию.
Это зависит от того, какая служба используется в вашем дистрибутиве и включена ли она по умолчанию. Некоторые из них — NCSD (Name Service Caching Daemon), dnsmasq и BIND (Berkely Internet Name Domain).
Для каждого дистрибутива вам нужно запустить окно терминала. Нажмите Ctrl + Alt + T на клавиатуре и используйте соответствующую команду, чтобы очистить кэш DNS для службы, работающей в вашей системе Linux.
Очистить локальный DNS-кэш NCSD
Используйте эту команду для очистки DNS-кэша NCSD на вашем Linux-компьютере:
sudo /etc/init.d/nscd restart
Введите свой пароль, если это необходимо. Процесс останавливается, а затем запускает службу NCSD в течение нескольких секунд.
Очистить локальный DNS-кэш dnsmasq
Используйте эту команду для очистки DNS-кэша dnsmasq на вашем Linux-компьютере:
sudo /etc/init.d/dnsmasq restart
Введите пароль еще раз, если терминал попросит вас. Вы увидите ответ, когда служба останавится и запустится снова.
Очистить локальный DNS-кэш BIND
Если вы используете BIND для службы DNS, есть несколько команд, которые вы можете использовать для очистки его кеша DNS. Вам может потребоваться ввести пароль для завершения процесса.
sudo /etc/init.d/named restart sudo rndc restart sudo rndc exec
Примечание: BIND также позволяет указывать конкретные домены при выполнении сброса DNS. Просто добавьте flushname и имя домена в команду sudo rndc. Например:sudo rndc flushname wiki.merionet.ru