Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Оглавление


Информация
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]
    dhcp=dhclient

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

    Command
    echo -e "[main]\ndhcp=dhclient" | sudo tee /etc/NetworkManager/conf.d/dhcp-client.conf


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


Настройка параметров разрешения имен для службы SSSD

Для настройки баланса между производительностью и надежностью разрешения имен службой sssd можно использовать следующие параметры в секции параметров домена конфигурации sssd:

  • lookup_family_order — порядок выбора сетевых протоколов для разрешения имен. Допустимые значения:
    • ipv4_first — сначала использовать IPv4, в случае неудачи — использовать IPv6 (это значение используется по умолчанию);
    • ipv4_only — использовать только IPv4;
    • ipv6_first — сначала использовать IPv6, в случае неудачи — использовать IPv4;
    • ipv6_only — использовать только IPv6;
  • dns_resolver_server_timeout — число, определяющее максимальное время (в миллисекундах) начала диалога с DNS-сервером. Провайдер AD также использует это значение как таймаут CLDAP-ping. Это значение должно быть меньше значения параметра dns_resolver_op_timeout (см. ниже). Значение по умолчанию: 1000 миллисекунд.
  • dns_resolver_op_timeout — число, определяющее максимальное время (в секундах) получения ответа на DNS-запрос от конкретного сервера до перехода к опросу следующего сервера. Это значение должно быть меньше значения параметра dns_resolver_timeout (см. ниже). Значение по умолчанию: 3 секунды.
  • dns_resolver_timeout — число, определяющее максимальное время (в секундах) получения ответа от всех опрашиваемых (основного и резервных) серверов. При превышении этого времени служба sssd переходит в режим offline. Значение по  умолчанию: 6 секунд.
  • dns_resolver_use_search_list — по умолчанию для разрешения имен служба sssd использует домены, перечисленные в директиве search в файле /etc/resolv.conf. Это может вести к задержкам при некорректно настроенном DNS. Если в конфигурации службы sssd включено использование полных (fully qualified) имен, то присвоение этому параметру значения FALSE может исключить ненужные DNS-запросы. Значение по умолчанию: TRUE
  • ldap_opt_timeout — значение параметра определяет время в секундах, за которое должен быть получен ответ на синхронный LDAP-запрос. Применительно к DNS актуально для доменов, использующих LDAP (LDAP-based providers). В таких доменах операция разрешения имен входит в процедуру подключения к LDAP, являющуюся синхронным LDAP-запросом. При этом значение параметра  ldap_opt_timeout должно быть больше значения dns_resolver_timeout, которое, в свою очередь, должно быть больше dns_resolver_op_timeout, которое должно быть больше dns_resolver_server_timeout.