Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация
titleДанная статья применима к:
  • Astra Linux


Общая информация

Для повышения устойчивости работы доменных клиентов можно использовать локальное кеширование данных службы разрешения имен (DNS). Использование кеширования позволяет устранить случайные ошибки в работе клиентов, возникающие при временной недоступности серверов DNS. Кеширование может применяться в любых доменах (доменах ALD Pro/FreeIPA, Samba, Windows AD), а также на недоменных компьютерах. Далее предполагается, что управление сетью осуществляется с помощью службы NetworkManager. Для кеширования используется служба dnsmasq.

Установка пакетов

Служба кеширования dnsmasq представлена пакетом dnsmasq. Пакет может быть установлен с помощью графического менеджера пакетов synaptic или командой:

Command
sudo apt install dnsmasq


Настройка кеширования

Для настройки кеширования:

  1. Создать файл в каталоге /etc/dnsmasq.d/ с произвольным именем, расширением .conf и следующим содержимым:

    Блок кода
    all-servers

    Например, файл /etc/dnsmasq.d/dnacache.conf:

    Command
    echo "all-servers" | sudo tee /etc/dnsmasq.d/dnacache.conf

    Опция all-servers включает одновременную (параллельную) отправку запросов всем серверам если первый опрошенный сервер не ответил. При этом будет использован первый полученный ответ.

  2. Создать файл в каталоге /etc/NetworkManager/conf.d/ с произвольным именем, расширением .conf и следующим содержимым:

    Блок кода
    [main]
    dns=dnsmasq

    Например, файл /etc/NetworkManager/conf.d/00-use-dnsmasq.conf:

    Command
    echo -e "[main]\ndns=dnsmasq" | sudo tee /etc/NetworkManager/conf.d/00-use-dnsmasq.conf


  3. Настроить списки серверов DNS, к которым будут направляться запросы:
    1. Если используется автоматическое получение списка серверов DNS через службу DHCP, то включить принудительное добавление адреса локальной петли (127.0.0.1) в начало этого списка. Для этого в файл /etc/dhcp/dhclient.conf добавить строчку:

      Блок кода
      prepend domain-name-servers 127.0.0.1;


    2. Если автоматическое получение списка серверов DNS через службу DHCP не используется, то серверы можно указать в конфигурации службы dnsmasq. Например, в созданный в соответствии с п. 1 файл /etc/dnsmasq.d/dnacache.conf добавить одну или несколько опций server:

      Блок кода
      server=<IP-адрес_1>
      server=<IP-адрес_2>
      ...


  4. Перезапустить службы NetworkManager и dnsmasq:

    Command
    sudo systemctl restart NetworkManager dnsmasq


После выполнения указанных действий:

  1. В файле /etc/resolv.conf в качестве адреса DNS-сервера будет указан адрес локальной петли и дополнительные опции:

    Блок кода
    # Generated by NetworkManager
    nameserver 127.0.0.1
    options edns0 trust-ad

    Где дополнительные опции:

    • edns0 — включение расширений DNS, описанных в RFC2671;

    • trust-ad — опция, управляющая обработкой бита AD в ответах серверов DNS. Установленный в ответе бит AD указывает на то, что данные в ответе были проверены в соответствии с протоколом DNSSEC. Чтобы доверять биту AD, локальная система должна доверять как серверу, проверяющему DNSSEC, так и сетевому пути к нему, поэтому требуется явное подтверждение доверия. Если опция trust-ad активна, dnsseq устанавливает бит AD в исходящих DNS-запросах (чтобы включить поддержку бита AD) и сохраняет бит AD в ответах. Без этой опции бит AD в запросах не устанавливается и всегда удаляется из ответов прежде чем они будут переданы приложению. В glibc 2.30 и более ранних версиях (Astra Linux Special Edition 1.7 и ранее) бит AD не устанавливается автоматически в запросах и передается приложениям в ответах без изменений.

  2. Локальные приложения, в соответствии с данными, указанными в файле /etc/resolv.conf, будут обращаться с запросами DNS к локальной службе DNS.
  3. Служба dnsmasq будет выполнять роль локальной службы, перенаправляя запросы серверам DNS, указанным в конфигурации dnsmasq и в файле /etc/resolv.conf (указание на службу dnsmasq при этом игнорируется).