Данная статья применима к:
- Astra Linux
Общая информация
Для повышения устойчивости работы доменных клиентов можно использовать локальное кеширование данных службы разрешения имен (DNS). Использование кеширования позволяет устранить случайные ошибки в работе клиентов, возникающие при временной недоступности серверов DNS. Кеширование может применяться в любых доменах (доменах ALD Pro/FreeIPA, Samba, Windows AD), а также на недоменных компьютерах. Далее предполагается, что управление сетью осуществляется с помощью службы NetworkManager. Для кеширования используется служба dnsmasq.
Установка пакетов
Служба кеширования dnsmasq представлена пакетом dnsmasq. Пакет может быть установлен с помощью графического менеджера пакетов synaptic или командой:
Настройка кеширования
Для настройки кеширования:
Создать файл в каталоге /etc/dnsmasq.d/ с произвольным именем, расширением .conf и следующим содержимым:
all-servers
Например, файл /etc/dnsmasq.d/dnacache.conf:
echo "all-servers" | sudo tee /etc/dnsmasq.d/dnacache.confОпция all-servers включает одновременную (параллельную) отправку запросов всем серверам если первый опрошенный сервер не ответил. При этом будет использован первый полученный ответ.Создать файл в каталоге /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- Настроить списки серверов DNS, к которым будут направляться запросы:
Если используется автоматическое получение списка серверов DNS через службу DHCP, то включить принудительное добавление адреса локальной петли (
127.0.0.1
) в начало этого списка. Для этого в файл /etc/dhcp/dhclient.conf добавить строчку:prepend domain-name-servers 127.0.0.1;
Если автоматическое получение списка серверов DNS через службу DHCP не используется, то серверы можно указать в конфигурации службы dnsmasq. Например, в созданный в соответствии с п. 1 файл /etc/dnsmasq.d/dnacache.conf добавить одну или несколько опций server:
server=<IP-адрес_1> server=<IP-адрес_2> ...
Перезапустить службы NetworkManager и dnsmasq:
sudo systemctl restart NetworkManager dnsmasq
После выполнения указанных действий:
В файле /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 не устанавливается автоматически в запросах и передается приложениям в ответах без изменений.
- Локальные приложения, в соответствии с данными, указанными в файле /etc/resolv.conf, будут обращаться с запросами DNS к локальной службе DNS.
- Служба dnsmasq будет выполнять роль локальной службы, перенаправляя запросы серверам DNS, указанным в конфигурации dnsmasq и в файле /etc/resolv.conf (указание на службу dnsmasq при этом игнорируется).