Поиск DNS обычно не является чем-то, о чем вам нужно беспокоиться. Иногда ты должен!

Если у вашего домашнего или офисного интернет-провайдера есть медленные серверы имен или ваш сервер выполняет много поисков, то вам нужен локальный кеширующий DNS-сервер.

Как мне поможет кеширующий DNS-сервер?

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

Это может показаться не слишком важным, но если DNS-серверы вашего интернет-провайдера не торопятся с ответом, это значительно замедлит работу в Интернете. Например, домашняя страница для новостного канала США MSNBC должна связаться с более чем 100 уникальными именами доменов, чтобы загрузить правильно. Если серверы имен вашего интернет-провайдера отнимают даже на 10 секунд дольше, чем обычно, это означает, что загрузка страницы займет 10 секунд дольше.

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

Наконец, systemd-resolved поддерживает самые последние и безопасные стандарты DNS. DNSSEC и DNSoverTLS или дот. Они помогают защитить вас и сохранить вашу конфиденциальность в Интернете.

Какой локальный кеширующий DNS мы будем использовать?

Локальный кеширующий DNS-сервер, который мы включим и настроим в этом руководстве, Systemd-разрешенная. Этот инструмент является частью Systemd набор инструментов для управления системой. Если ваша система использует systemd, и почти все основные дистрибутивы Linux используются, то у вас уже будет установлен systemd-resolved, но он не работает. Большинство дистрибутивов не используют systemd-resolved, даже если он присутствует.

systemd-resolved работает, запуская небольшой локальный кеширующий DNS-сервер, который мы настроим для запуска при загрузке. Затем мы перенастроим остальную часть системы, чтобы направлять их DNS-запросы на локальный DNS-сервер с кэшированием..

Как проверить, используете ли вы уже systemd-resolved?

В некоторых дистрибутивах Linux по умолчанию уже используется разрешение системы, например Ubuntu 19.04.

Если вы уже используете systemd-resolved, вам не нужно включать его или настраивать свою систему для его использования. Однако вам может потребоваться убедиться, что инструменты управления сетью, такие как NetworkManager, настроены правильно, поскольку они могут игнорировать конфигурацию сети системы..

Прежде чем перейти к следующему разделу, выполните следующую команду, чтобы проверить, запущен ли уже systemd-resolved:

$ resolctl status

Если вы получили сообщение:

$ resolctl status
Не удалось получить глобальные данные: модуль dbus-org.freedesktop.resolve1.service не найден.

Ты не запуск systemd-resolved и должен перейти к следующему разделу. Если вместо этого вы видите вывод, который начинается примерно так:

Глобальный
Настройка LLMNR: да
Настройка MulticastDNS: да
Настройка DNSOverTLS: оппортунистическая
Настройка DNSSEC: разрешить-понизить
DNSSEC поддерживается: нет
Текущий DNS-сервер: 1.1.1.1
DNS-серверы: 1.1.1.1
1.0.0.1

Тогда вы уже используете systemd-resolved и вам не нужно его включать.

Включение и настройка systemd-resolved

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

Запустите следующую команду из командной строки, поскольку sudo разрешил пользователю без полномочий root запускать systemd-resolved:

$ sudo systemctl start systemd-resolved.service

Затем выполните следующую команду, чтобы запустить systemd-resolved при загрузке системы:

$ sudo systemctl enable systemd-resolved.service

Последний оставленный элемент конфигурации – установить DNS-серверы, которые systemd-resolved будет запрашивать разрешенные домены. Здесь есть много вариантов, но любая из следующих пар бесплатна, быстра, и они обе поддерживают DNSSEC и DoT:

Google Public DNS

  • 8.8.8.8
  • 8.8.4.4

Cloudflare Public DNS

  • 1.1.1.1
  • 1.0.0.1

Откройте основной файл конфигурации с разрешением systemd в вашем любимом текстовом редакторе, здесь я использовал nano:

$ sudo nano /etc/systemd/resolved.conf

Изменить строку начинается

# DNS =

Таким образом, пара IP-адресов в списке. Здесь показаны DNS-серверы Cloudflare:

DNS = 1.1.1.1 1.0.0.1

Сохраните и выйдите из текстового редактора. Теперь нам нужно перезапустить systemd-resolved, чтобы он начал использовать серверы имен:

$ sudo systemctl перезапустить systemd-resolved.service

systemd-resolved теперь запущен и готов начать ускорение и защиту DNS-запросов, как только мы настроим систему, чтобы начать использовать ее.

Конфигурирование системы для использования systemd-resolved

Ваша система может быть настроена несколькими способами для использования systemd-resolved, но мы рассмотрим две конфигурации, которые покрывают большинство случаев использования. Первая – это рекомендуемая конфигурация, а вторая – конфигурация совместимости. Разница между ними заключается в том, как управляется файл /etc/resolv.conf..

Файл /etc/resolv.conf содержит IP-адреса серверов имен, которые должны запрашивать программы в системе. Программы, которым необходимо выполнять DNS-запросы, будут обращаться к этому файлу, чтобы выяснить, к каким серверам следует обращаться для выполнения этих запросов..

Два режима системного разрешения сосредоточены вокруг того, как управляется содержимое этого файла. В рекомендуемом режиме /etc/resolv.conf делается символическая ссылка на /run/systemd/resolve/stub-resolv.conf. Этот файл управляется systemd-resolved и, следовательно, systemd-resolved управляет информацией о конфигурации DNS для всех других программ в системе.

Это может вызвать проблемы, когда другие программы пытаются управлять содержимым /etc/resolv.conf. Режим совместимости оставляет /etc/resolv.conf на месте, позволяя другим программам управлять им, в то время как systemd-resolved использует эту информацию DNS. В этом режиме другие программы, управляющие /etc/resolv.conf, должны быть настроены на 127.0.0.53 в качестве системного сервера имен в /etc/resolv.conf..

Настройка рекомендуемого режима

Когда мы настраиваем этот режим, systemd-resolved будет управлять /etc/resolv.conf, делая его символической ссылкой на /run/systemd/resolve/stub-resolv.conf. Нам нужно будет сделать это вручную, так как он не настроен автоматически.

Сначала удалите или переименуйте существующий файл /etc/resolv.conf. Переименование является лучшим вариантом для удаления, поскольку оно будет иметь тот же эффект, но вы всегда можете обратиться к оригиналу, если вам нужна содержащаяся в нем информация. Здесь мы переименовываем /etc/resolv.conf с помощью команды mv:

$ sudo mv /etc/resolv.conf /etc/resolv.conf.original

Затем создайте символическую ссылку:

$ sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Наконец, перезапустите systemd-resolved:

$ sudo systemctl перезапустить systemd-resolved.service

Настройка режима совместимости

В этом режиме вам необходимо убедиться, что локальный сервер имен, запущенный systemd-resolved запущен системными службами. Откройте /etc/resolv.conf в текстовом редакторе, здесь используется нано-редактор:

$ sudo nano /etc/resolv.conf

Удалите все встречающиеся строки, начинающиеся с «nameserver», и добавьте эту строку:

nameserver 127.0.0.53

Это изменение может быть изменено любой другой программой, которая управляет /etc/resolv.conf. Если это так, то вам нужно будет настроить эти программы для использования этого сервера имен, чтобы сделать редактирование постоянным.

Отладка systemd-разрешена

Узнать, как именно ваша система выполняет DNS-запросы после внесения этих изменений, может быть сложно. Самый эффективный способ наблюдения за происходящим – перевести systemd-resolved в режим отладки и посмотреть файл журнала..

systemd-resolved – это служба systemd, что означает, что ее можно легко перевести в режим отладки, создав файл служебной службы, содержащий параметр отладки. Следующая команда создаст правильный файл в правильном месте:

$ sudo systemctl edit systemd-resolved.service

Вставьте следующие строки в редактор, затем сохраните и выйдите:

[Обслуживание]
Environment = SYSTEMD_LOG_LEVEL = отлаживать

Служба с разрешением systemd будет автоматически перезагружена при успешном сохранении и выходе.

Откройте второй терминал на том же сервере и просмотрите журнал journald для службы с разрешением systemd:

$ sudo journalctl -f -u systemd-resolved

Строка, которая начинается «Использование DNS-сервера», например:

Использование DNS-сервера 1.1.1.1 для транзакции 19995.

Сообщает вам, какой именно DNS-сервер используется для DNS-запросов. В этом случае DNS-сервер Cloudflare на 1.1.1.1 был запрошен.

Строки «Cache miss» указывают, что доменное имя не было кэшировано. Например.:

Пропуск кэша для example.com В SOA

Строки, начинающиеся с «Положительного попадания в кэш», например:

Позитивное попадание в кэш для example.com IN A

Укажите, что systemd-resolved ранее запрашивал этот домен, и ответ был отправлен из кэша в локальной памяти..

Вы должны отключить режим отладки, когда вы закончите работать с systemd-resolved, так как он создаст очень большой файл журнала в загруженной системе. Вы можете отключить ведение журнала отладки, выполнив:

$ sudo systemctl edit systemd-resolved.service

и удалив две строки, вы добавили затем сохранение и выход из редактора.

Использование безопасных DNS-запросов

systemd-resolved – это один из немногих доступных в настоящее время DNS-серверов, которые поддерживают DNSSEC и DNSoverTLS. Оба из них помогают гарантировать, что вы получаете подлинную информацию DNS (DNSSEC) и что никто не может отслеживать ваш трафик DNS, когда он проходит через Интернет. (DOT).

Эти параметры легко включить, открыв основной файл конфигурации systemd-resolved в текстовом редакторе:

$ sudo nano /etc/systemd/resolved.conf

И редактируем файл так, чтобы были установлены следующие две строки:

DNSSEC = разрешить-даунгрейд
DNSOverTLS = оппортунистических

Сохраните и выйдите из редактора, затем перезагрузите systemd-resolved:

$ sudo systemctl перезапустить systemd-resolved.service

Пока на DNS-сервере вы установили поддержку DNSSEC и DoT, ваши DNS-запросы будут защищены. Оба публичных DNS-сервера Google и Cloudflare поддерживают эти протоколы.

Вывод

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

Если вы энтузиаст Linux и хотите узнать больше, то посмотрите этот фантастический онлайн курс.

TAGS:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me