30
10月
2023
11:11

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

30 10月 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

7.1 Вывод статуса службы resolved

systemctl is-active systemd-resolved

Ответ: "active" - службы работает.

7.2. Вывод статистики обращений к локальному кешу DNS

resolvectl statistics

Ответ:

DNSSEC supported by current servers: no

Transactions              
Current Transactions: 0
  Total Transactions: 7606

Cache                     
  Current Cache Size: 136
          Cache Hits: 2139
        Cache Misses: 5493

DNSSEC Verdicts           
              Secure: 0
            Insecure: 0
               Bogus: 0
       Indeterminate: 0

7.3. Очистка кеша DNS при помощи команды resolvectl в Linux:

resolvectl flush-caches

Последнее редактирование статьи: 23.01.2025


Источники:



相关出版物