Как очистить DNS в Linux

Ноутбук Linux с приглашением bash

Вы можете сбросить кеш DNS на компьютере Linux на основе systemd с помощью команды «resolvectl flush-caches». Если вы используете dnsmasq, вы можете очистить DNS с помощью «sudo killall -HUP dnsmasq».

Медленна ли ваша работа в Интернете на вашем устройстве Linux, или веб-сайты, которые вы посещаете, устарели или вообще являются неправильным веб-сайтом? Давайте обсудим очистку кеша DNS в Linux и как узнать, действительно ли вам это нужно.

Что такое кэши DNS?

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Служба доменных имен — это немного волшебства, которое преобразует имена в числа. Он принимает сетевые имена устройств и имена веб-сайтов и ищет их 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 активен

Использование команды systemctl для проверки того, активно ли кеширование DNS

Если ответ «активен», происходит кэширование DNS. Если ответ «неактивен», это не так. На этом конкретном компьютере он активен. Мы можем использовать команду resolvectl с параметром статистики, чтобы увидеть, сколько записей находится в кеше.

статистика разрешения

использование команды resolvectl для просмотра статистики кэширования DNS

Мы видим, что в кэше DNS этого компьютера есть 330 записей.

Просмотр кэша DNS

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

Теперь нет простого способа увидеть эти записи. Мы можем это сделать, но нужно проявить немного творчества. USR1 или определяемый пользователем сигнал номер один, — это сигнал, который может быть отправлен с помощью команд kill и killall. Этот сигнал не имеет предопределенного значения. Приложения могут игнорировать этот сигнал или реагировать любым способом, реализованным разработчиками.

Демон systemd-resolved реагирует на USR1, записывая свой кэш в системные журналы. Затем мы можем использовать команду journalctl для фильтрации записей DNS.

Мы будем использовать команду killall с USR1, чтобы отправить сигнал демону systemd-resolved. Обратите внимание, что хотя мы используем команду killall, демон systemd-resolved продолжает работать. Это не сигнал завершения, который мы отправляем.

sudo killall -USR1 systemd-разрешено

Отправка сигнала USR1 демону systemd-resolved

Теперь мы воспользуемся командой journalctl с параметром -u (фильтровать по единице systemd), чтобы извлечь записи журнала, сгенерированные systemd-resolved. Мы перенаправим этот вывод в текстовые файлы с именем «dns.txt».

sudo journalctl -u systemd-resolved > dns.txt

Фильтрация записей журнала с разрешением systemd и отправка их в файл

Мы будем использовать программу просмотра файлов less для просмотра содержимого файла.

меньше dns.txt

Вы сможете найти кэшированные сопоставления между доменными именами и IP-адресами, прокручивая и выполняя поиск по тексту.

Мы видим запись для Google с IP-адресом 216.58.212.196. Вы можете проверить это, введя IP-адрес в веб-браузере. Вы должны увидеть домашнюю страницу поиска Google.

Как очистить кэш DNS в Linux

Очистка кеша удаляет все записи и снова запускает процесс сбора. Если они есть, это принудительно удаляет неверные и поврежденные записи из кеша.

Команда проста; мы используем resolvectl с опцией flush-caches.

Resolvectl флеш-кэши

Очистка кеша DNS с помощью команды resolvectl

Мы молча возвращаемся в командную строку. Чтобы убедиться, что что-то действительно произошло, мы еще раз проверим статистику кеша DNS.

статистика разрешения

Статистика кеша, показывающая, что размер кеша был уменьшен до нуля

Мы видим, что размер кеша уменьшился до нуля. Со временем он будет увеличиваться по мере накопления новых записей.

Как очистить кеш dnsmasq в Linux

Приложение dnsmasq предоставляет кэш DNS и DHCP-сервер. Он популярен среди пользователей, которые хотят запустить свой собственный DNS-сервер, особенно в установках, отличных от systemd.

Очистить кеш DNS dnsmasq очень просто. Нам нужно отправить сигнал SIGHUP, который сообщает демону dnsmasq о необходимости повторной инициализации. Это очищает кэш DNS. Для отправки сигнала мы используем команду killall с флагом -HUP и именем приложения.

sudo killall -HUP dnsmasq

Очистка кеша DNS приложения dnsmasq

Покраснел, с успехом

Конечно, если ваш компьютер вообще не кеширует, вам не нужно ничего проверять.

Если он кеширует DNS-запросы, но все работает нормально, вы также можете его игнорировать. Но если вы сталкиваетесь с медленными или спорадическими обновлениями веб-страниц при просмотре веб-страниц или вообще видите неправильные веб-страницы, вероятно, самое время очистить кеш DNS.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *