30
октября
2023
11:11

Настройка кеширующего DNS сервера systemd-resolved

30 октября 2023 11:11

Чтобы ускорить разрешение имен DNS применяется местный кеширующий сервер. Разница (ускорение) составляет 50-150 миллисекунд на запрос для кешированных данных. Как включить сервис systemd-resolved в Linix Mint или Ubuntu?

  1. Установка DNS-резолвера для SystemD в Ubuntu/Linux Mint:
sudo apt install libnss-resolve
  1. Настройка службы ResolveD
sudo nano /etc/systemd/resolved.conf

Уберите комментарии против строчек

[Resolve]
DNS=192.168.1.1
FallbackDNS=77.88.8.1

где 192.168.1.1 - заменить на IP-адрес главного маршрутизатора в локальной сети,
вместо 77.88.8.1 можно указать любой публичный DNS сервер.

  1. Запуск и включение службы ResolvedD для разрешения DNS
sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved
  1. Проверка состояния
resolvectl status
  1. Вывод статистики работы кеша (hits/misses)
resolvectl statistics
  1. Делаем синхронное изменение параметров Resolv.conf в соответствии с /run/systemd/resolve/resolv.conf

Некоторые утилиты - ping, dig, host, whois - обходят кеширующий прокси, т.к. используют сервис resolveconf, который обращается к файлу /etc/resolv.conf, не связанный с SystemD. Для таких программ нужно создать постоянную символьную ссылку с файла SystemD /run/systemd/resolve/resolv.conf на целевое имя ссылки /etc/resolv.conf. (Данный "трюк" описан в статье на jtprog.ru).

sudo cp /etc/resolv.conf /etc/resolv.conf.bak
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
ls -l /etc/resolv.conf

По символьной ссылке на файл /etc/resolv.conf в файле /run/systemd/resolve/resolv.conf теперь прописаны строчки
nameserver IP_адрес_DNS_сервера
search .

Где IP_адрес_DNS_сервера автоматически перенесся с помощью символьной ссылки /etc/resolv.conf на файл /run/systemd/resolve/resolv.conf, соответствующей файлу /etc/systemd/resolved.conf, отредактированному в п.2 инструкции.

Проверка:

  • исправил файл nano /etc/systemd/resolved.conf => указал IP-адрес DNS=8.8.8.8 и
  • выполнил перезапуск службы sudo systemctl restart systemd-resolved

Результат:

  • изменился вышестоящий DNS сервер (uplink) с прежнего IP-адреса роутера на 8.8.8.8:
    О смене DNS-сервера говорит вывод команды:
    resolvectl status

Данный пункт может быть полезен и для настройки синхронного изменения /etc/resolv.conf при коррекции /etc/systemd/resolved.conf

  1. Использование консольной утилиты resolvectl

Утилита resolvectl может использоваться для разрешения доменных имен с помощью сервиса systemd-resolved.service. Наиболее частая команда этой утилиты - query ИМЯ_ХОСТА для разрешения имен, как IPv4, так и IPv6. При использовании с ключом -t ТИП, где ТИП - обозначение типа DNS записи, например, записи TXT (сертификаты) по сравнению с обычными записями A, AAAA. Подробное описание ключей команды resolvectl имеется в страницах справки man resolvectl.

Примеры использования:

resolvectl query ya.ru
resolvectl query google.com -t AAAA

Источники:



Похожие публикации