Очистка локального кеша DNS может исправить ошибки HTTP и защитить вас от спуфинга DNS. Вот как это сделать в Linux.
Когда вы посещаете веб-сайт, использующий доменное имя, ваша система отправляет запрос на DNS-сервер для получения IP-адреса домена. Эта пара домен-IP-адрес хранится в кэше DNS для последующего использования, поэтому вам не нужно каждый раз запрашивать DNS-сервер для установления соединения.
Но иногда локальный кеш DNS повреждается и приводит к ошибкам HTTP. К счастью, очистить и перестроить кеш DNS на компьютере с Linux несложно. Вот как это сделать.
Зачем очищать кэш DNS в Linux?
Есть несколько причин, по которым вы можете захотеть перестроить кеш DNS, хранящийся в вашей системе. Возможно, у вас есть устаревшая DNS-запись для веб-сайта, и вы хотите перезагрузить ее с DNS-сервера. Или, может быть, ваша система была взломана, и вы хотите убедиться, что ваш кеш DNS не был взломан, что также известно как спуфинг DNS.
Когда вы очищаете кеш DNS, система должна снова пропинговать DNS-сервер и получить от него новую запись IP-адреса домена, удалив при этом все устаревшие или скомпрометированные данные.
Как просмотреть локальный кэш DNS в Linux
До появления systemd большинство дистрибутивов Linux не имели общесистемного DNS-кэширования, если только такие программы, как dnsmasq или nscd, не были настроены вручную.
В следующих разделах вы узнаете, как просмотреть содержимое кеша DNS, сгенерированного systemd-resolved, nscd и dnsmasq, чтобы вы могли понять кэшированные данные, прежде чем решите их сбросить.
Просмотр DNS-кэша для разрешенных systemd
Чтобы увидеть записи кэша, разрешенные systemd, вы должны сначала временно отключить службу, а затем экспортировать журналы в файл.
Начните с отправки сигнала SIGUSR1, чтобы отключить службу, разрешенную systemd:
sudo killall -USR1 systemd-resolved
Используйте команду journalctl и стандартный оператор вывода, чтобы сохранить вывод в текстовый файл:
sudo journalctl -u systemd-resolved > ~/cache.txt
Затем вы можете просмотреть содержимое файла с помощью текстового редактора, такого как Vim:
vim ~/cache.txt
В файле найдите «CACHE:», нажав Escape, введя «/CACHE:» и нажав Enter. Все записи DNS, перечисленные в разделе CACH:, являются частью локального кэша DNS. Нажмите n, чтобы перейти к следующему набору записей DNS, если вы используете Vim.
Просмотр локального кэша DNS для nscd
Чтобы просмотреть локальный кеш, сгенерированный nscd, прочитайте содержимое базы данных хоста nscd с помощью команды string.
В дистрибутивах на основе Debian и Ubuntu этот файл находится в /var/cache/nscd/hosts. Выполните следующую команду, чтобы просмотреть файл:
sudo strings /var/cache/nscd/hosts | uniq
Чтобы просмотреть общую статистику о кэше DNS nscd, используйте флаг -g:
sudo nscd -g
Отобразить кэш DNS, сгенерированный dnsmasq
dnsmasq хранит кеш DNS в памяти, поэтому получить точные записи непросто. Но вы можете отправить сигнал уничтожения в dnsmasq и зарегистрировать вывод, чтобы получить количество обработанных DNS-запросов.
Для этого сначала убедитесь, что dnsmasq запущен с помощью команды systemctl:
sudo systemctl status dnsmasq
Если статус отображается как активный, выполните следующую команду, чтобы отключить службу:
sudo pkill -USR1 dnsmasq
С помощью команды journalctl извлеките журналы dnsmasq и сохраните их в текстовый файл:
sudo journalctl -u dnsmasq > ~/cache.txt
Наконец, просмотрите содержимое файла с помощью программы просмотра файлов, такой как cat или меньше:
cat ~/cache.txt
Как очистить кэш DNS в Linux
Очистка кеша DNS означает удаление кэшированных записей DNS с вашего компьютера. Это заставляет его отправить запрос на DNS-сервер для новых записей DNS.
Вот как очистить кеш DNS в Linux:
Использование systemd-resolved
Вы можете использовать команду resolvectl для очистки кеша DNS, хранящегося в systemd-resolved:
sudo resolvectl flush-caches
Если вы используете Ubuntu 17.04 или 18.04, используйте команду systemd-resolved для очистки кеша:
sudo systemd-resolved —flush-caches
Очистите DNS-кэш nscd в Linux
Самый практичный способ очистить кеш DNS для nscd — перезапустить службу. Вы можете сделать это, запустив:
sudo /etc/init.d/nscd restart
Если это не сработает, сначала проверьте, является ли локальный кэш, хранящийся на вашем компьютере, постоянным. Вы можете использовать флаг -g, чтобы проверить это:
sudo nscd -g
Если это так, используйте флаг -i с командой nscd для удаления записей (i означает удаление):
sudo nscd -i hosts
Удалите DNS-кэш dnsmasq
очистить кеш DNS, созданный dnsmasq, очень просто. Поскольку кеш хранится в памяти, перезапуск службы удаляет все сохраненные записи.
Чтобы перезапустить dnsmasq, выполните следующую команду systemctl:
sudo systemctl restart dnsmasq
Или выполните следующую команду:
service dnsmasq restart
Введите пароль администратора, если будет предложено, dnsmasq перезапустится, и все ваши существующие записи DNS будут удалены из кеша.
После очистки кеша DNS лучше всего просмотреть записи локального кеша и посмотреть, не были ли удалены данные. Вы можете использовать dig, одну из многих команд сетевой отладки Linux, и проверить значение времени опроса в выходных данных. Если прошло более 0 мс, кеш был очищен (0 мс означает, что запись домена все еще находится в кеше).
dig google.com
Очистите DNS-кэш Google Chrome
Браузер, который вы часто используете, также кэширует записи DNS. Когда вы вводите URL-адрес, система ищет запись в кэше локального браузера. Если он не найден, он ищет записи в локальном системном кеше. Очистка кеша DNS вашего браузера чрезвычайно важна, так как он имеет более высокий приоритет, чем общесистемный кеш.
Чтобы продемонстрировать, давайте очистим кеш DNS в Google Chrome. Есть способы сделать это и в других браузерах, поэтому лучше всего погуглить, как это сделать для браузера, который вы используете.
Чтобы начать, введите «chrome://net-internals/#dns» в строке URL и нажмите Enter:
Нажмите «Очистить кэш хоста», чтобы удалить записи DNS, хранящиеся в Google Chrome.
Linux — лучшая ОС для изучения сетевого взаимодействия
Сначала Linux может показаться сложным, но если вы потратите некоторое время на изучение того, как он работает, вы быстро поймете, что он потрясающий и, возможно, даже лучше, чем Windows или macOS.
Большинство веб-серверов работают под управлением Linux, что является одной из причин, почему Linux идеально подходит, если вы хотите научиться работать в сети или хотите знать, как работают компьютеры в целом.