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