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

Данная статья применима к:

  • Astra Linux

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

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

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

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

sudo apt install dnsmasq

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

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

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

    all-servers

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

    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:

    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:

    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 при этом игнорируется).



  • Нет меток