Product SiteDocumentation Site

6.2.5. Динамическое обновление DNS-записей

Используются следующие механизмы обновления DNS-записей:
  • На стороне DHCP. Динамическое обновление DNS-записей часто осуществляется с помощью DHCP-серверов. В частности, такие системы как ISC DHCP и Kea DHCP могут автоматически обновлять записи на DNS-сервере при выдаче нового IP-адреса клиенту.
  • На стороне клиента. В доменных средах с использованием Linux-клиентов для взаимодействия с AD могут использоваться службы Winbind и SSSD для обновления DNS-записей. На Windows-клиентах обновление происходит через встроенные функции операционных систем. Кроме того, обновление записей может быть выполнено вручную администраторами.

6.2.5.1. На стороне клиента

6.2.5.1.1. SSSD
Включить обновление IP-адресов службой sssd можно несколькими способами:
  • отредактировав файл /etc/sssd/sssd.conf;
  • в модуле ЦУС Аутентификация;
  • применением control;
  • групповыми политиками.
6.2.5.1.1.1. Настройка через файл /etc/sssd/sssd.conf
В файл конфигурации службы SSSD (/etc/sssd/sssd.conf) в секцию с параметрами домена можно добавить опции, приведенные в табл. Параметры настройки автоматического обновления DNS. Например:
[domain/TEST.ALT]
.....
#Включить обновление прямых записей (A/AAAA записей)
dyndns_update = true

#Включить обновление обратных записей (PTR записей)
dyndns_update_ptr = true
#Задать интервал обновления в секундах.
#По умолчанию — 86400 (24 часа), обновление выполняется раз в сутки.
#Если интервал равен 0, то обновление выполняется только один раз при запуске службы SSSD.
#Если интервал менее 60 секунд, то обновление выполняется раз в 60 секунд.
#Если адрес после предыдущего обновления не изменялся — обновление не выполняется.
dyndns_refresh_interval = 60

Примечание

Чтобы загрузить новые параметры конфигурации необходимо перезапустить службу SSSD:
# systemctl restart sssd

Таблица 6.8. Параметры настройки автоматического обновления DNS

Параметр
Описание
Значение по умолчанию
dyndns_update
Позволяет включить или отключить автоматическое обновление DNS-записей (защищенных с помощью GSS-TSIG) IP-адресом клиента через SSSD. Соответственно, администратору AD требуется только разрешить защищённые обновления для зоны DNS. Для обновления будет использован IP-адрес LDAP-соединения AD, если с помощью параметра «dyndns_iface» не указано иное.
true
dyndns_ttl
Значение TTL, которое применяется при обновлении DNS-записи клиента. Если dyndns_update имеет значение false, этот параметр не имеет никакого эффекта. Если администратором установлено значение TTL на стороне сервера, оно будет переопределено этим параметром.
3600 (секунд)
dyndns_iface
Позволяет указать интерфейс или список интерфейсов, IP-адреса которых должны использоваться для динамических обновлений DNS. Специальное значение «*» подразумевает, что следует использовать IP-адреса всех интерфейсов. Если dyndns_update имеет значение false, этот параметр не имеет никакого эффекта.
IP-адреса интерфейса, который используется для подключения LDAP AD.
dyndns_refresh_interval
Определяет как часто внутреннему серверу следует выполнять периодическое обновление DNS в дополнение к автоматическому обновлению, выполняемому при переходе внутреннего сервера в сетевой режим. Этот параметр применим только в том случае, если для параметра dyndns_update установлено значение true.
Следует обратить внимание, что наименьшее допустимое значение составляет 60 секунд: если будет указано меньшее значение, параметр примет наименьшее допустимое значение (60 секунд).
86400 (24 часа)
dyndns_update_ptr
Определяет будет ли обновляться клиентская PTR-запись (защищенная с помощью GSS-TSIG) при обновлении DNS-записей клиента. Применимо, только если параметр dyndns_update имеет значение true.
Следует обратить внимание, что параметр dyndns_update_per_family не применяется для обновлений записей PTR. Эти обновления всегда отправляются отдельно.
true
dyndns_force_tcp
Должна ли утилита nsupdate по умолчанию использовать TCP для обмена данными с сервером DNS.
false (разрешить nsupdate выбрать протокол)
dyndns_auth
Следует ли утилите nsupdate использовать проверку подлинности GSS-TSIG для защищённых обновлений сервера DNS. Незащищённые отправления можно отправлять, установив этот параметр в значение none.
GSS-TSIG
dyndns_auth_ptr
Следует ли утилите nsupdate использовать проверку подлинности GSS-TSIG для защищённых обновлений PTR сервера DNS. Незащищённые отправления можно отправлять, установив этот параметр в значение none.
То же, что и dyndns_auth
dyndns_server
Сервер DNS, который следует использовать для выполнения обновления DNS. В большинстве конфигураций рекомендуется не устанавливать значение для этого параметра.
Установка этого параметра имеет смысл для сред, в которых сервер DNS отличается от сервера данных идентификации.
Следует обратить внимание, что этот параметр используется только для резервной попытки, которая выполняется если предыдущая попытка с использованием автоматически определённых параметров завершилась неудачей.
none (разрешить nsupdate выбрать сервер)
dyndns_update_per_family
По умолчанию обновление DNS выполняется за два шага: обновление IPv4, а затем обновление IPv6. В некоторых случаях может быть желательно выполнить обновление IPv4 и IPv6 за один шаг.
true
6.2.5.1.1.2. Настройка через ЦУС
Некоторые настройки автоматического обновления DNS для SSSD можно настроить в модуле ЦУС Аутентификация. Подробнее см. Настройки SSSD в ЦУС.
6.2.5.1.1.3. При помощи механизма control
Список всех возможных настроек автоматического обновления DNS для SSSD с помощью control можно получить, выполнив команду:
# control | grep sssd-dyndns
sssd-dyndns-refresh-interval unknown         (disabled INTERVAL)
sssd-dyndns-ttl unknown         (disabled TTL)
sssd-dyndns-update unknown         (disabled enabled default)
sssd-dyndns-update-ptr unknown         (disabled enabled default)

Таблица 6.9. control для настройки автоматического обновления DNS для SSSD

control
Опция в файле /etc/sssd/sssd.conf
Описание
sssd-dyndns-refresh-interval
dyndns_refresh_interval
Определяет как часто серверная часть должна выполнять периодическое обновление DNS в дополнение к автоматическому обновлению, выполняемому при подключении серверной части к сети. Этот параметр применим только в том случае, если для параметра dyndns_update установлено значение true.
Доступные режимы:
  • INTERVAL — задать интервал
  • disabled  — установить значение по умолчанию (86400)
  • unknown
sssd-dyndns-ttl
dyndns_ttl
Срок жизни, применяемый к DNS-записи клиента при ее обновлении. Если dyndns_update имеет значение false, этот параметр не имеет никакого эффекта
Доступные режимы:
  • TTL — задать TTL
  • disabled — установить значение по умолчанию (3600)
  • unknown
sssd-dyndns-update
dyndns_update
Позволяет включить или отключить автоматическое обновление DNS-записей (защищенных с помощью GSS-TSIG) с IP-адресом клиента через SSSD
Доступные режимы:
  • enabled — автоматическое обновление DNS-записи клиента через SSSD включено
  • disabled — автоматическое обновление DNS-записи клиента через SSSD отключено
  • default — настройка автоматического обновления DNS-записи клиента через SSSD задана по умолчанию в пакете
  • unknown
sssd-dyndns-update-ptr
dyndns_update_ptr
Определяет будет ли обновляться клиентская PTR-запись (защищенная с помощью GSS-TSIG) при обновлении DNS-записей клиента. Применимо, только если параметр dyndns_update имеет значение true.
Доступные режимы:
  • enabled — автоматическое обновление DNS-записи обратной зоны через SSSD включено
  • disabled — автоматическое обновление DNS-записи обратной зоны через SSSD отключено
  • default — настройка автоматического обновления DNS-записи обратной зоны задана по умолчанию в пакете
  • unknown
Например, чтобы SSSD автоматически обновлял на сервере DNS AD IP-адрес клиента, необходимо включить control sssd-dyndns-update:
# control sssd-dyndns-update enabled
и перезапустить службу SSSD:
# systemctl restart sssd
Проверка:
# control sssd-dyndns-update
enabled
6.2.5.1.1.4. При помощи групповых политик
С помощью групповых политик в AD можно централизованно управлять настройками обновления DNS-записей на всех клиентах в сети. В настоящее время с помощью групповых политик можно сконфигурировать параметры dyndns_update и dyndns_update_ptr. Подробнее см. Групповые политики control (раздел SSSD опции).
6.2.5.1.2. Samba Winbind
Samba Winbind не поддерживает возможность динамического обновления DNS-записей. Для обхода этой проблемы был разработана утилита, реализующая динамическое обновление адресов на DNS-сервере при использовании Winbind в качестве клиента домена — winbind-dnsupdate.
Для возможности работы с программой необходимо установить пакет samba-winbind-dnsupdate:
# apt-get install samba-winbind-dnsupdate
И активировать и запустить таймер, который в свою очередь запускает сервис:
# systemctl enable --now winbind-dnsupdate.timer
Основным функционалом winbind-dnsupdate является обновление IPv4 (A), IPv6 (AAAA) и соответствующих PTR DNS-записей. Для обновления DNS-записей winbind-dnsupdate использует файл /etc/resolv.conf.
Синтаксис команды winbind-dnsupdate:
winbind-dnsupdate [опции]
При запуске без параметров скрипт обновляет A запись.

Таблица 6.10. Опции команды winbind-dnsupdate

Ключ
Описание
-h, --help
Вывести справку о команде
-v, --version
Вывести версию
-a, --all
Включить обновление всех записей
-6, --update-ipv6
Включить обновление IPv6 (AAAA) записей
-d, --daemon
Отправлять логи в journald
-t, --ttl <time>
Задать TTL («время жизни», указывает, как долго настройки DNS должны храниться в кеше, прежде чем они будут автоматически обновлены)
--allow-ipv4-ptr-update
Включить обновление обратной DNS-записи IPv4 (A) PTR
--allow-ipv6-ptr-update
Включить обновление обратной DNS-записи IPv6 (AAAA) PTR
Пример запуска скрипта winbind-dnsupdate:
# winbind-dnsupdate -a
[INFO]: Hostname: comp01.test.alt.
[INFO]: Check winbind status.
[INFO]: Winbind is running. Continue.
[INFO]: Trying to get the site name.
[INFO]: Site: Default-First-Site-Name.
[INFO]: Get host credentials.
[INFO]: Retrieving host credentials successfully.
[INFO]: Trying to get a list of domain controllers in site.
[INFO]: Success.
[INFO]: Trying to find an available DNS server.
[INFO]: Checking the availability of DNS server on dc1.test.alt..
[INFO]: DNS server on dc1.test.alt. available.
[INFO]: Update IPv4.
[INFO]: Trying to get IPv4 address of a domain controller.
[INFO]: Successful. DC info:
[INFO]: Domain controller name: dc1.test.alt.
[INFO]: Domain controller IPv4: 192.168.0.132.
[INFO]: Trying parse connection interface name.
[INFO]: Successful. Intraface name: enp0s3.
[INFO]: Checking the existence of A record.
[INFO]: IPv4 record exists.
[INFO]: Checking whether the IPv4 records needs to be updated.
[INFO]: Current IPv4 address: 192.168.0.195.
[INFO]: IPv4 address in DNS server: 192.168.0.195.
[INFO]: The IPv4 address of interface enp0s3 has not been changed.
[INFO]: The update IPv4 was skipped.
[INFO]: IPv4 update was successful.
[INFO]: The update was successful.
[INFO]: Destroy host credential.
В пакете вместе со скриптом предоставляются systemd сервис и таймер. Таймер запускает systemd сервис для обновления DNS-записи через 5 минут после загрузки системы и затем каждый час. Просмотреть параметры таймера можно, выполнив команду:
# systemctl cat winbind-dnsupdate.timer
# /lib/systemd/system/winbind-dnsupdate.timer
[Unit]
Description=Update dns record Daily and on boot

[Timer]
OnBootSec=5min
OnUnitActiveSec=60min

[Install]
WantedBy=timers.target
Чтобы изменить частоту запуска systemd сервиса, необходимо отредактировать настройки таймера:
  1. Выполнить команду:
    # systemctl edit winbind-dnsupdate.timer
    
  2. Добавить следующие строки после строки Anything between here and the comment below will become the new contents of the file:
    [Timer]
    OnUnitActiveSec=
    OnUnitActiveSec=120min
    
    OnUnitActiveSec= очистит предыдущее определение (60min), а OnUnitActiveSec=120min установит новое значение (120min).
    Редактирование параметров таймера
  3. Сохранить внесённые изменения.
  4. Перезагрузить таймер для применения изменений:
    # systemctl daemon-reload
    

Примечание

Команда:
# systemctl edit winbind-dnsupdate.timer
открывает текстовый редактор с конфигурацией winbind-dnsupdate.timer, куда можно внести изменения. Этот подход позволяет создавать или изменять так называемые «дополнения» (overrides) для systemd сервиса, не изменяя оригинальный файл сервиса, который находится в /usr/lib/systemd/system/. Это важно, потому что оригинальные файлы могут быть перезаписаны при обновлении пакетов.
При выполнении этой команды создаётся каталог /etc/systemd/system/winbind-dnsupdate.timer.d/, в котором, после сохранения изменений, появляется файл override.conf. В этом файле можно задать новые параметры или изменить существующие параметры сервиса.
6.2.5.1.3. Windows клиент
В Windows клиенты автоматически обновляют DNS-записи, такие как A и PTR, при изменении IP-адресов или имени компьютера. Этот процесс инициируется службой DHCP-клиента, которая отправляет обновления на DNS-сервер. Обновления происходят каждые 24 часа (по умолчанию) или могут быть инициированы вручную командой ipconfig /registerdns. Для DHCP-клиентов DHCP-сервер может выполнять эти обновления от имени клиента, что снижает необходимость ручного администрирования.