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

Ключ

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

Оглавление


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


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

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

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

Служба кеширования dnsmasq представлена пакетом dnsmasq. Пакет может быть установлен . Клиент DHCP (далее — dhclient) представлен пакетом isc-dhcp-server (обычно установлен по умолчанию). Пакеты могут быть установлены с помощью графического менеджера пакетов synaptic или командой:

Command
sudo apt install dnsmasq isc-dhcp-client


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

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

  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. Создать Служба NetworkManager по умолчанию использует собственный встроенный клиент DHCP. Для включения кеширования необходимо переключить службу NetworkManager на использование dhclient. Для этого создать файл в каталоге /etc/NetworkManager/conf.d/ с произвольным именем, расширением .conf и следующим содержимым:

    Блок кода
    title/etc/NetworkManager/conf.d/dhcp-client.conf
    [main]
    dnsdhcp=dnsmasqdhclient

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

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


  3. Начиная с Astra Linux Special Edition x.7 dhclient при запросе сетевого адреса использует уникальный идентификатор компьютера (DUID). Служба NetworkManager для получения IP-адресов использует MAC-адрес. Если используется назначение IP-адреса сетевой службой DHCP и в конфигурации этой службы используется MAC-адрес компьютера для фиксации назначаемого IP-адреса, то необходимо переключить dhclient на использование в запросах MAC-адреса. Для этого в файл /etc/dhclient/dhclient.conf добавить параметр:
    Блок кода
    send dhcp-client-identifier = hardware;
    Этот параметр также можно добавить для сохранения ранее получаемых службой NetworkManager IP-адресов.
  4. Настроить списки серверов 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>
      ...


  5. Перезапустить службы 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 при этом игнорируется).