ActiveDirectory/Dynamic dns update: различия между версиями

Материал из ALT Linux Wiki
 
(не показано 16 промежуточных версий 2 участников)
Строка 1: Строка 1:
== Динамическое обновление DNS записей клиентов домена ==
== Описание ==
== Описание ==
Для связывания доменных имен с IP-адресами используются A-записи (для IPv4) и AAAA-записи (для IPv6), которые создаются при настройке DNS и содержат соответствующий IP-адрес хоста. PTR-записи применяются для обратного разрешения, связывая IP-адреса с доменными именами в обеих версиях протокола и создаются в зоне обратного DNS.  
Для связывания доменных имен с IP-адресами используются A-записи (для IPv4) и AAAA-записи (для IPv6), которые создаются при настройке DNS и содержат соответствующий IP-адрес хоста. PTR-записи применяются для обратного разрешения, связывая IP-адреса с доменными именами в обеих версиях протокола и создаются в зоне обратного DNS.  
Строка 14: Строка 13:
Эта запись будет храниться в DNS-зоне прямого просмотра домена и использоваться для разрешения имени demo.samdom.example.com в IP-адрес 192.168.0.55.
Эта запись будет храниться в DNS-зоне прямого просмотра домена и использоваться для разрешения имени demo.samdom.example.com в IP-адрес 192.168.0.55.


Также будет создана PTR DNS-запись, если существует обратная зона в базе данных Active Directory.
PTR DNS-запись автоматически не создается, даже если существует обратная зона в базе данных Active Directory. Для ее создания необходимо на клиенте включить необходимые настройки для обновления PTR DNS-записей (то есть в дальнейшем вместо обновления запись будет зарегистрирована). В обратном случае запись нужно будет создать вручную:
 
Если на момент ввода машины в домен обратная зона отсутствовала, ее можно создать:
 
$ samba-tool dns zonecreate dc1.samdom.example.com 0.168.192.in-addr.arpa -U administrator
Password for [administrator@SAMDOM.EXAMPLE.COM]:
Zone 0.168.192.in-addr.arpa created successfully
 
После создания обратной зоны PTR запись будет автоматически создана, если на клиенте включены необходимые настройки для обновления PTR DNS-записей (то есть в дальнейшем вместо обновления запись будет зарегистрирована). В обратном случае запись нужно будет создать вручную:


  $ samba-tool dns add dc1.samdom.example.com 0.168.192.in-addr.arpa 55 PTR demo.samdom.example.com -U administrator
  $ samba-tool dns add dc1.samdom.example.com 0.168.192.in-addr.arpa 55 PTR demo.samdom.example.com -U administrator
Строка 31: Строка 22:


  55.0.168.192.in-addr.arpa. 3600 IN PTR demo.samdom.example.com.
  55.0.168.192.in-addr.arpa. 3600 IN PTR demo.samdom.example.com.
{{Note|Обратная зона создается так:
$ samba-tool dns zonecreate dc1.samdom.example.com 0.168.192.in-addr.arpa -U administrator
Password for [administrator@SAMDOM.EXAMPLE.COM]:
Zone 0.168.192.in-addr.arpa created successfully
}}


Подробнее с администрированием DNS-сервера можно ознакомиться в  [https://wiki.samba.org/index.php/DNS_Administration SambaWiki]
Подробнее с администрированием DNS-сервера можно ознакомиться в  [https://wiki.samba.org/index.php/DNS_Administration SambaWiki]


== Обновление DNS-записей: ==
== Обновление DNS-записей ==


Используются следующие механизмы обновления DNS-записей:
Используются следующие механизмы обновления DNS-записей:
Строка 48: Строка 46:
Для включения обновления IP-адресов службой sssd существует несколько способов:
Для включения обновления IP-адресов службой sssd существует несколько способов:
* с помощью центра управления ALT Linux (ALT Linux Control Center)
* с помощью центра управления ALT Linux (ALT Linux Control Center)
* редактирование файла /etc/sssd/sssd.conf
* редактирование файла {{path|/etc/sssd/sssd.conf}}
* групповыми политиками
* групповыми политиками
* применением control
* применением control
===== Настройка через центр управления системой =====
===== Настройка через центр управления системой =====
Необходимо в Центре управления системой перейти в раздел «Пользователи» → «Аутентификация» и выбрать «Настройки SSSD».
Необходимо в [[ЦУС|Центре управления системой]] перейти в раздел «Пользователи» → «Аутентификация» и выбрать «Настройки SSSD».


Подробнее про каждую настройку можно  прочесть в статье  [https://www.altlinux.org/Alterator-auth#Настройки_SSSD Настройки SSSD в Alterator]
Подробнее про каждую настройку можно  прочесть в статье  [https://www.altlinux.org/Alterator-auth#Настройки_SSSD Настройки SSSD в Alterator].


===== Настройка через файл /etc/sssd/sssd.conf =====
===== Настройка через файл /etc/sssd/sssd.conf =====
В файл конфигурации этой службы /etc/sssd/sssd.conf в секцию с параметрами домена можно добавить опции таким образом:
В файл конфигурации этой службы {{path|/etc/sssd/sssd.conf}} в секцию с параметрами домена можно добавить опции таким образом:
  [domain/...]
  [domain/...]
   .....
   .....
Строка 64: Строка 62:
  #Включить обновление обратных записей (PTR записей)
  #Включить обновление обратных записей (PTR записей)
   dyndns_update_ptr = true
   dyndns_update_ptr = true
  #Интервал обновления в секундах. По умолчанию - 0, и обновление выполняется только один раз при запуске службы SSSD.
  #Интервал обновления в секундах. По умолчанию — 86400 (24 часа), обновление выполняется раз в сутки.
#Если интервал равен 0, то обновление выполняется только один раз при запуске службы SSSD.
  #Если интервал менее 60 секунд, то обновление выполняется раз в 60 секунд.
  #Если интервал менее 60 секунд, то обновление выполняется раз в 60 секунд.
  #Если адрес после предыдущего обновления не изменялся - обновление не выполняется.
  #Если адрес после предыдущего обновления не изменялся обновление не выполняется.
   dyndns_refresh_interval = 60
   dyndns_refresh_interval = 60
* ''' dyndns_update '''
'' Описание: '' Необязательный параметр. Этот параметр указывает SSSD автоматически обновлять на сервере DNS Active Directory IP-адрес клиента. Защита обновленияобеспечивается с помощью GSS-TSIG. Соответственно, администратору Active Directory требуется только разрешить защищённые обновления для зоны DNS. Для обновления будет использован IP-адрес LDAP-соединения AD, если с помощью параметра “dyndns_iface” не указано иное.


'' Значение по умолчанию: '' true


* ''' dyndns_ttl '''
{| class="wikitable"
'' Описание: '' Значение TTL, которое применяется при обновлении записи DNS клиента. Если параметр dyndns_update установлен в значение «false», этот параметр ни на что не влияет. Если администратором установлено значение TTL на стороне сервера, оно будет переопределено этим параметром.
|+ Параметры настройки автоматического обновления DNS
|-
!style='background-color:#CFDFF5; color:#0F174A'|Параметр
!style='background-color:#CFDFF5; color:#0F174A'|Описание
!style='background-color:#CFDFF5; color:#0F174A'|Значение по умолчанию
|-
|dyndns_update
|Необязательный параметр. Этот параметр указывает SSSD автоматически обновлять на сервере DNS Active Directory IP-адрес клиента. Защита обновления обеспечивается с помощью GSS-TSIG. Соответственно, администратору Active Directory требуется только разрешить защищённые обновления для зоны DNS. Для обновления будет использован IP-адрес LDAP-соединения AD, если с помощью параметра «dyndns_iface» не указано иное
|true
|-
|dyndns_ttl
|Значение TTL, которое применяется при обновлении записи DNS клиента. Если параметр «dyndns_update» установлен в значение «false», этот параметр ни на что не влияет. Если администратором установлено значение TTL на стороне сервера, оно будет переопределено этим параметром
|3600 (секунд)
|-
|dyndns_iface
|Необязательный параметр. Применимо только тогда, когда параметр «dyndns_update» установлен в значение «true». Выберите интерфейс или список интерфейсов, IP-адреса которых должны использоваться для динамических обновлений DNS. Специальное значение «*» подразумевает, что следует использовать IP-адреса всех интерфейсов. '' Пример: '' dyndns_iface = em1, vnet1, vnet2
|использовать IP-адреса интерфейса, который используется для подключения LDAP AD
|-
| dyndns_refresh_interval
|Как часто внутреннему серверу следует выполнять периодическое обновление DNS в дополнение к автоматическому обновлению, которое выполняется при переходе внутреннего сервера в сетевой режим. Этот параметр является необязательным и применяется только тогда, когда параметр «dyndns_update» установлен в значение  «true». Обратите внимание, что наименьшее допустимое значение составляет 60 секунд: если будет указано меньшее значение, параметр примет наименьшее допустимое значение (60 секунд)
|86400 (24 часа)
|-
|dyndns_update_ptr
|Следует ли также явно обновлять запись PTR при обновлении записей 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
|}
 
===== Настройка при помощи механизма control =====
Список всех возможных настроек с помощью control, связанных с sssd, можно получить следующим образом:
 
<syntaxhighlight lang="bash"># control | grep sssd</syntaxhighlight>
 
Чтобы посмотреть, в какое значение можно поставить ту или иную настройку, надо запустить команду с ключом help:
 
<syntaxhighlight lang="bash"># control sssd-ad-gpo-access-control help
disabled: SSSD GPO-based access control rules are neither evaluated nor enforced
enforced: SSSD GPO-based access control rules are evaluated and enforced
permissived: SSSD GPO-based access control rules are evaluated, but not enforced
default: SSSD GPO-based access control rules are evaluated and enforced</syntaxhighlight>


'' Значение по умолчанию: '' 3600 (секунд)
Подробнее про каждую настройку можно  узнать в статье  [https://www.altlinux.org/Групповые_политики/ALT_System_Control#Службы Групповые политики/ALT System Control] или из описания параметров конфигурации выше.


* ''' dyndns_iface '''
'' Пример.'' Чтобы включить control '''sssd-dyndns-update''', который указывает SSSD автоматически обновлять на сервере DNS Active Directory IP-адрес клиента, необходимо:
'' Описание: '' Необязательный параметр. Применимо только тогда, когда параметр dyndns_update установлен в значение «true». Выберите интерфейс или список интерфейсов, IP-адреса которых должны использоваться для динамических обновлений DNS. Специальное значение “*” подразумевает, что следует использовать IP-адреса всех интерфейсов.
# Вывести все значения:
#:<syntaxhighlight lang="bash">
# control sssd-dyndns-update help
disabled: Disable automatically update DNS server with the IP address using SSSD
enabled: Enable automatically update DNS server with the IP address using SSSD
default: Disable automatically update DNS server with the IP address using SSSD by default
</syntaxhighlight>
# Задать состояние ''включено'':
#:<syntaxhighlight lang="bash"># control sssd-dyndns-update enabled</syntaxhighlight>
#:Проверка:
#:<syntaxhighlight lang="bash"># control sssd-dyndns-update
enabled</syntaxhighlight>
# После необходимо перезапустить sssd:
#:<syntaxhighlight lang="bash"># systemctl restart sssd.service</syntaxhighlight>


'' Значение по умолчанию: '' использовать IP-адреса интерфейса, который используется для подключения LDAP AD
===== Настройка при помощи групповых политик =====


'' Пример: '' dyndns_iface = em1, vnet1, vnet2
С помощью групповых политик в Active Directory можно централизованно управлять настройками обновления DNS-записей на всех клиентах в сети. Групповые политики, настраиваемые на контроллере домена, позволяют администратору автоматически конфигурировать параметры, связанные с обновлением DNS-записей.


* ''' dyndns_refresh_interval '''
С помощью [[ADMC]] (Компонента удаленного управления базой данных конфигурации) можно легко управлять объектами групповых политик на уровне доменов AD и организационных подразделений (OU).
'' Описание: '' Как часто внутреннему серверу следует выполнять периодическое обновление DNS в дополнение к автоматическому обновлению, которое выполняется при переходе внутреннего сервера в сетевой режим. Этот параметр является необязательным и применяется только тогда, когда параметр dyndns_update установлен в значение  «true». Обратите внимание, что наименьшее допустимое значение составляет 60 секунд: если будет указано меньшее значение, параметр примет наименьшее допустимое значение (60 секунд).


'' Значение по умолчанию: '' 86400 (24 часа)
Подробнее с ADMC и управлением объектами групповых политик можно ознакомиться на странице  [https://www.altlinux.org/ADMC#Управление_объектами_групповых_политик ADMC].


* ''' dyndns_update_ptr '''
После создания необходимого организационного подразделения, необходимо создать связанный с ним объект групповой политики и изменить его с помощью [[Групповые_политики/GPUI|GPUI]].
'' Описание: '' Следует ли также явно обновлять запись PTR при обновлении записей DNS клиента. Применимо только тогда, когда параметр dyndns_update установлен в значение «true».


Обратите внимание, что параметр dyndns_update_per_family не применяется для обновлений записей PTR. Эти обновления всегда отправляются отдельно.
В открывшемся окне редактора групповых политик GPUI перейти по пути:


'' Значение по умолчанию: '' true
«Компьютер» → «Административные шаблоны» → «Система ALT» → «Службы» → «SSSD опции»


* ''' dyndns_force_tcp '''
Выбирать интересующие политики (в разделе «Помощь» можно ознакомиться с описанием) и установить в необходимое состояние: «Включено», «Отключено», «Не сконфигурировано».
'' Описание: '' Должна ли утилита nsupdate по умолчанию использовать TCP для обмена данными с сервером DNS.


'' Значение по умолчанию: '' false (разрешить nsupdate выбрать протокол)
==== Samba Winbind ====
Samba Winbind не поддерживает возможность динамического обновления DNS-записей.
Для обхода этой проблемы была разработана программа, реализующая динамическое обновление адресов на DNS-сервере при использовании winbind в качестве клиента домена — '''winbind-dnsupdate'''.


* ''' dyndns_auth '''
'''Функционал winbind-dnsupdate'''
'' Описание: '' Следует ли утилите nsupdate использовать проверку подлинности GSS-TSIG для защищённых обновлений сервера DNS. Незащищённые отправления можно отправлять,  установив этот параметр в значение «none».


'' Значение по умолчанию: '' GSS-TSIG
Основным функционалом является обновление IPv4 (A), IPv6 (AAAA) и соответствующих PTR DNS-записей.
Для обновления DNS-записей winbind-dnsupdate использует файл {{path|/etc/resolv.conf}}. В пакете вместе со скриптом предоставляются юниты systemd timer и systemd service. Таймер запускает сервисный юнит для обновления DNS-записи через 5 минут после загрузки системы и затем каждый час. Для изменения частоты запуска нужно редактировать таймер.


* ''' dyndns_auth_ptr '''
''' Установка '''
'' Описание: '' Следует ли утилите nsupdate использовать проверку подлинности GSS-TSIG для защищённых обновлений PTR сервера DNS. Незащищённые отправления можно отправлять, установив этот параметр в значение «none».
# apt-get install samba-winbind-dnsupdate


'' Значение по умолчанию: '' то же, что и dyndns_auth
После установки необходимо активировать и запустить таймер, который в свою очередь запускает сервис:


* ''' dyndns_server '''
# systemctl enable winbind-dnsupdate.timer
'' Описание: '' Сервер DNS, который следует использовать для выполнения обновления DNS. В большинстве конфигураций рекомендуется не устанавливать значение для этого параметра.
# systemctl start winbind-dnsupdate.timer


Установка этого параметра имеет смысл для сред, в которых сервер DNS отличается от сервера данных идентификации.
''' Основные параметры winbind-dnsupdate'''
{| class="wikitable"
|-
!style='background-color:#CFDFF5; color:#0F174A'|Параметр
!style='background-color:#CFDFF5; color:#0F174A'|Описание
|-
| -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
|}
 
{{Note|Справку по {{cmd|winbind-dnsupdate}} можно получить командой: {{cmd|$ man winbind-dnsupdate}}.}}
 
''' Пример вывода # winbind-dnsupdate: '''
[INFO]: Hostname: ws2.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: 10.64.224.108.
[INFO]: Trying parse connection interface name.
[INFO]: Successful. Intraface name: eth0.
[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: 10.64.224.113.
[INFO]: IPv4 address in DNS server: 10.64.224.112.
[INFO]: The IPv4 address of interface eth0 has been changed.
[INFO]: Start the A record update.
[INFO]: A record update successful.
[INFO]: IPv4 update was successful.
[INFO]: The update was successful.
[INFO]: Destroy host credential.
 
''' Изменение частоты запуска: '''
 
Таймер активирует сервисный юнит, который обновляет DNS-запись через 5 минут после загрузки системы и затем каждый час. Чтобы изменить частоту запуска, необходимо отредактировать настройки таймера.
 
С помощью команды:
 
# systemctl cat winbind-dnsupdate.timer
 
можно проверить значение параметра **OnUnitActiveSec**, по умолчанию оно будет равно 60min.
 
Команда:
 
# systemctl edit winbind-dnsupdate.timer
 
открывает текстовый редактор с конфигурацией, где можно внести изменения в таймер юнита winbind-dnsupdate.timer. Этот подход позволяет создавать или изменять так называемые "дополнения" (overrides) для юнита, не изменяя оригинальный файл юнита, который находится в /usr/lib/systemd/system/. Это важно, потому что оригинальные файлы могут быть перезаписаны при обновлении пакетов.
 
При выполнении этой команды создаётся директория /etc/systemd/system/winbind-dnsupdate.timer.d/, в которой появляется файл override.conf. В этом файле можно задать новые параметры или изменить существующие параметры юнита, такие как время запуска таймера.
 
Необходимо добавить следующие строки:
 
[Timer]
OnUnitActiveSec=
OnUnitActiveSec=120min
Сначала очистите предыдущее определение (60min), это можно сделать установив OnUnitActiveSec = пустое значение. Далее установите необходимое вам значение (например, 120min).
 
Вызов команды # systemctl edit winbind-dnsupdate.timer должен выглядеть следующим образом:
 
### Editing /etc/systemd/system/winbind-dnsupdate.timer.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Timer]
OnUnitActiveSec=
OnUnitActiveSec=120min
### Lines below this comment will be discarded
### /usr/lib/systemd/system/winbind-dnsupdate.timer
# [Unit]
# Description=Update dns record Daily and on boot
#
# [Timer]
# OnBootSec=5min
# OnUnitActiveSec=60min
#
# [Install]
# WantedBy=timers.target
 
После внесения изменений в конфигурацию юнита, необходимо перезагрузить таймер для применения изменений:
 
# systemctl daemon-reload
 
==== Windows клиент ====
В Windows клиенты автоматически обновляют DNS-записи, такие как A и PTR, при изменении IP-адресов или имени компьютера. Этот процесс инициируется службой DHCP-клиента, которая отправляет обновления на DNS-сервер. Обновления происходят каждые 24 часа по умолчанию или могут быть инициированы вручную командой '''ipconfig /registerdns'''. Для DHCP-клиентов DHCP-сервер может выполнять эти обновления от имени клиента, что снижает необходимость ручного администрирования.
 
Подробнее можно прочитать на [https://learn.microsoft.com/ru-ru/troubleshoot/windows-server/networking/configure-dns-dynamic-updates-windows-server-2003 сайте Microsoft].
 
==== Обновление вручную ====
Для обновления IP-адресов вручную существует несколько способов:
 
* С помощью утилиты nsupdate
* С помощью команды samba-tool
* Оснастка DNS в RSAT
 
===== nsupdate =====
nsupdate  [-d]  [-D]  [-i]  [-L  level]  [  [-g]  |  [-o]  | [-l] | [-y
      [hmac:]keyname:secret] | [-k keyfile] ] [-t  timeout]  [-u  udptimeout]
      [-r udpretries] [-v] [-T] [-P] [-V] [ [-4] | [-6] ] [filename]
 
При использовании утилиты nsupdate для динамического обновления DNS-записей в  доменных средах Active Directory, необходимо использовать механизм аутентификации GSS-TSIG,  который использует Kerberos-билет для аутентификации вашей машины в домене. Используется при обновлении DNS-записей с помощью nsupdate с флагом -g.
 
Перед выполнением команды nsupdate -g необходимо получить Kerberos-билет для машинного аккаунта с помощью команды:


Обратите внимание, что этот параметр используется только для резервной попытки, которая выполняется тогда, когда предыдущая попытка с использованием автоматически определённых параметров завершилась неудачей.
# kinit -k 'MACHINENAME$'


'' Значение по умолчанию: '' none (разрешить nsupdate выбрать сервер)
{{Note|Имя машинного аккаунта можно узнать используя команду hostname. Во время использования команды kinit имя машинного аккаунта нужно писать в верхнем регистре, а на конце приписывать знак $.}}


* ''' dyndns_update_per_family '''
После успешного получения Kerberos-билета можно приступать к обновлению DNS-записей.
'' Описание: '' По умолчанию обновление DNS выполняется за два шага: обновление IPv4, а затем обновление IPv6. В некоторых случаях может быть желательно выполнить обновление IPv4 и IPv6 за один шаг.


'' Значение по умолчанию: '' true
# nsupdate -g
> update delete oldhost.example.com A
> update add newhost.example.com 86400 A 172.16.1.1
> send


===== Настройка при помощи механизма control =====
Все записи A для oldhost.example.com удаляются, и добавляется запись A для newhost.example.com с IP-адресом 172.16.1.1. Недавно добавленная запись имеет TTL 1 день (86400 секунд).
Список всех возможных настроек с помощью control, связанных с sssd, можно получить следующим образом:


  # control | grep sssd
  # nsupdate -g
> prereq nxdomain nickname.example.com
> update add nickname.example.com 86400 CNAME somehost.example.com
> send


Чтобы посмотреть, в какое значение можно поставить ту или иную настройку, надо запустить команду с ключом help:
Предварительное условие позволяет серверу имен проверить, нет ли записей о ресурсах любого типа для nickname.example.com. Если они есть, запрос на обновление не выполняется. Если это имя не существует, для него добавляется другое имя.


# control sssd-ad-gpo-access-control help
{{Note|Подробную информацию по nsupdate можно получить командой: ''' $ man nsupdate '''}}
disabled: SSSD GPO-based access control rules are neither evaluated nor enforced
enforced: SSSD GPO-based access control rules are evaluated and enforced
permissived: SSSD GPO-based access control rules are evaluated, but not enforced
default: SSSD GPO-based access control rules are evaluated and enforced


Подробнее про каждую настройку можно  узнать в статье  [https://www.altlinux.org/Групповые_политики/ALT_System_Control#Службы Групповые политики/ALT System Control] или из описания параметров конфигурации выше.
===== samba-tool dns =====


'' Пример: '' Чтобы включить control '''sssd-dyndns-update''', который указывает SSSD автоматически обновлять на сервере DNS Active Directory IP-адрес клиента, необходимо:
Команда '''samba-tool dns''' предоставляет возможность управлять DNS-записями на контроллерах домена Samba, что важно для администрирования доменных сред. С помощью этой команды можно добавлять (add), удалять (delete), и изменять (update) различные типы записей, включая A, PTR, MX и другие.


Вывести все значения:
Например, добавление A-записи выполняется командой:


  # control sssd-dyndns-update help
  samba-tool dns add <server> <zone> <name> A <ip-address> -U <user>
disabled: Disable automatically update DNS server with the IP address using SSSD
enabled: Enable automatically update DNS server with the IP address using SSSD
default: Disable automatically update DNS server with the IP address using SSSD by default


Задать состояние ''включено'':
Подробнее можно прочитать в [https://docs.altlinux.org/ru-RU/domain/10.2/html/samba/dns-management.html документации ALT Linux Team].


# control sssd-dyndns-update enabled
===== Oснастка DNS в RSAT =====


Проверка:
Оснастка DNS в RSAT позволяет администраторам Windows удаленно управлять DNS-записями через графический интерфейс. С его помощью можно добавлять, удалять и изменять DNS-записи.


# control sssd-dyndns-update
Подробную инструкцию по установке и применению можно прочесть в следующих статьях:
enabled


После необходимо перезапустить sssd:
1. [https://ru.linux-console.net/?p=1683 Управление инфраструктурой Active Directory Samba4 из Windows10 через RSAT — часть 3]


# systemctl restart sssd.service
2. [https://ru.linux-console.net/?p=1686 Управление DNS и групповой политикой контроллера домена Samba4 AD из Windows. Часть 4]


===== Настройка при помощи групповых политик =====
== Известные проблемы ==
=== Неверные права DNS-записей машины в домене ===


С помощью групповых политик в Active Directory можно централизованно управлять настройками обновления DNS-записей на всех клиентах в сети. Групповые политики, настраиваемые на контроллере домена, позволяют администратору автоматически конфигурировать параметры, связанные с обновлением DNS-записей.
''' Описание '''


С помощью ADMC (Компонента удаленного управления базой данных конфигурации) можно легко управлять объектами групповых политик на уровне доменов AD и организационных подразделений (OU).
При вводе машины в домен Active Directory вызывается утилита {{cmd|system-auth}}, которая в свою очередь использует команду {{cmd|net ads join}}. В рамках данной команды выполняется присоединение к домену с использованием Kerberos-аутентификации и не производится обновление DNS. После успешного присоединения машина регистрирует свою DNS-запись с помощью команды {{cmd|net ads dns register}} также через Kerberos-аутентификацию.


Подробнее с ADMC и управлением объектами групповых политик можно ознакомиться на странице  [https://www.altlinux.org/ADMC#Управление_объектами_групповых_политик ADMC].
''' Проблема '''


После создания необходимого организационного подразделения, необходимо создать связанный с ним объект групповой политики и изменить его с помощью GPUI.
Если машины уже введены в домен или используется старая версия {{cmd|system-auth}} (до исправления 8 июня 2024 года в пакете {{pkgL|alterator-auth}} версии 0.44.10-alt1), то у машин не будет прав на обновление своих DNS-записей.


В открывшемся окне редактора групповых политик GPUI переходим по пути:
Это происходит потому, что во время создания DNS-записи в доменном DNS {{cmd|system-auth}} использует билет администратора, и в результате владельцем записи становится он, а не машина, что впоследствии не позволяет машине обновить свою DNS-запись.


Компьютер - Административные шаблоны - Система ALT - Службы - SSSD опции
Имеются ввиду записи вида:


Выбираем интересующие политики (В разделе ''помощь'' можно ознакомиться с описанием) и ставим в необходимое состояние: ''Включено'', ''Отключено'', ''Не сконфигурировано''.
DC=host1,DC=domain.alt,CN=MicrosoftDNS,DC=DomainDnsZones,DC=domain,DC=alt


==== Samba Winbind ====
''' Решения '''
Samba Winbind не поддерживает возможность динамического обновления DNS-записей.
Для этого был разработана программа , реализующая динамическое обновление адресов на DNS-сервере при использовании winbind в качестве клиента домена — '''winbind-dnsupdate'''.


'''Функционал winbind-dnsupdate'''
* ''' Для новых машинных учетных записей '''


Основным функционалом является обновление IPv4 (A), IPv6 (AAAA) и соответствующих PTR DNS-записей.  
'''Исправление 8 июня 2024 года в пакете {{pkgL|alterator-auth}} версии 0.44.10-alt1''' работает только для машин, которые не были ранее введены в домен с текущим именем (т.е. '''машинная учётная запись создаётся впервые''').
Для обновления DNS-записей winbind-dnsupdate использует файл /etc/resolv.conf. В пакете вместе со скриптом предоставляются юниты systemd timer и systemd service. Таймер запускает сервисный юнит для обновления DNS-записи через 5 минут после загрузки системы и затем каждый час. Для изменения частоты запуска нужно редактировать таймер.


''' Установка '''
Если машина уже была добавлена в домен, но для неё используется новое имя, то будет создана новая учётная запись, и проблема с правами на обновление DNS-записей будет решена. Однако, если машина повторно вводится в домен с тем же именем, это не устранит проблему.
# apt-get install samba-winbind-dnsupdate


После установки необходимо активировать и запустить таймер, который в свою очередь запускает сервис:
{{Note|При вводе машины в домен с новым именем необходимо убедиться, что очищены кэши SSSD и Winbind, а также удален старый keytab-файл.}}


# systemctl enable winbind-dnsupdate.timer
* '''Для машин введенных в домен'''
# systemctl start winbind-dnsupdate.timer
'''В случае с уже введёнными в домен машинами необходимо воспользоваться скриптом''' https://github.com/altlinuxteam/samba_allow_nsupdate на контроллере домена. Он позволяет задать необходимые права как для всех машин в Домене или Организации, так и для произвольного списка машин в домене.


''' Основные параметры '''
Примеры:
* разрешить самостоятельное обновление для машин, находящихся в контейнере «Computers»:
*: <syntaxhighlight lang="bash"># samba_allow_nsupdate --domain-dns="test.alt" --computers-base-dn="CN=Computers,DC=test,DC=alt"
Domain: test.alt
Domain DN: DC=test,DC=alt
Computers search base DN: CN=Computers,DC=test,DC=alt
Action: allow
Selected computers list:
DC1$
WS2$
WS$
WS3$
Allow self nsupdate for this computers list? (Y/n):
DC1$ S-1-5-21-3099202228-3607437695-3279060739-1000 DONE
WS2$ S-1-5-21-3099202228-3607437695-3279060739-1113 DONE
WS$ S-1-5-21-3099202228-3607437695-3279060739-1107 DONE
WS3$ S-1-5-21-3099202228-3607437695-3279060739-1127 DONE</syntaxhighlight>
* разрешить самостоятельное обновление для произвольного списка машин в домене (в данном случае для WS, WS2):
*: <syntaxhighlight lang="bash"># samba_allow_nsupdate --action=allow WS$ WS2$ --computers-base-dn="DC=test,DC=alt" --domain-dns="test.alt"
Domain: test.alt
Domain DN: DC=test,DC=alt
Computers search base DN: DC=test,DC=alt
Action: allow
Selected computers list:
WS$
WS2$
Allow self nsupdate for this computers list? (Y/n):
WS$ S-1-5-21-3099202228-3607437695-3279060739-1107 DONE
WS2$ S-1-5-21-3099202228-3607437695-3279060739-1113 DONE
</syntaxhighlight>
* '''Другие решения:'''
** воспользоваться с Windows машины RSAT оснасткой DNS и задать необходимые права вручную;
** в той же оснастке DNS для всего DNS домена дать права на запись группе «Domain Computers» (не рекомендуется);
** воспользоваться инструментом {{cmd|samba-tool dsacl}} (этот инструмент не очень удобен для ручного использования).


  -h, --help
{| class="wikitable"
  Показать справку.
|-
-v, --version
! !! winbind-dnsupdate !! alterator-auth
  Вывести версию.
|-
-a, --all
| sisyphus || 0.5-alt1 || 0.44.10-alt1
  Включить обновление всех записей.
исправлено 8 июня 2024
-6, --update-ipv6
|-
  Включить обновление IPv6 (AAAA) записей.
| sisyphus_e2k || - || 0.44.10-alt1
-d, --daemon
исправлено 4 июля 2024
  Отправить логи в journald.
|-
-t, --ttl <time>
| sisyphus_riscv64 || 0.5-alt1 || 0.44.10-alt1
  Задать TTL ("время жизни", указывает, как долго ваши настройки DNS должны храниться в кэше, прежде чем они будут автоматически обновлены.)
исправлено 9 июня 2024
--allow-ipv4-ptr-update
|-
  Включить обновление обратной DNS-записи IPv4 (A) PTR.
| sisyphus_loongarch64 || 0.5-alt1 || 0.44.10-alt1
--allow-ipv6-ptr-update
исправлено 9 июня 2024
  Включить обновление обратной DNS-записи IPv6 (AAAA) PTR.
|-
| p11 || 0.5-alt1 || 0.44.10-alt1
исправлено 4 июля 2024
|-
| p10 || 0.5-alt1 || 0.44.10-alt1
исправлено 18 июля 2024
|-
| p10_e2k || - || 0.44.10-alt1
исправлено 21 июля 2024
|-
| p9 || - || 0.44.2-alt0.p9.1
не исправлено
|-
| p9_e2k || - || 0.43.9-alt4
не исправлено
|-
| p8 || - || 0.40-alt0.M80P.2
не исправлено
|-
| c10f1 || - || 0.44.1-alt1
не исправлено
|-
|c9f2 || - || 0.43.9-alt2
не исправлено
|-
|c7 || - || 0.35-alt0.M70C.1
не исправлено
|-
|}

Текущая версия от 12:42, 30 октября 2024

Описание

Для связывания доменных имен с IP-адресами используются A-записи (для IPv4) и AAAA-записи (для IPv6), которые создаются при настройке DNS и содержат соответствующий IP-адрес хоста. PTR-записи применяются для обратного разрешения, связывая IP-адреса с доменными именами в обеих версиях протокола и создаются в зоне обратного DNS.

IP-адреса могут измениться из-за перезагрузки устройства, изменений в конфигурации сети или обновления через DHCP. В таких случаях необходимо обновить соответствующие DNS-записи, чтобы сохранить корректное разрешение имен и обеспечить работу служб аутентификации, таких как Kerberos или LDAP, для успешной проверки подлинности пользователей. Это обновление может выполняться автоматически как со стороны DHCP-сервера, так и со стороны клиента домена. DHCP-сервер может обновлять записи в DNS при изменении IP-адресов, в то время как клиент домена может обновлять записи через такие службы, как Winbind и SSSD, а также через встроенные функции операционных систем (на Windows-клиенте). Также возможно ручное обновление записей администраторами.

DNS-записи при вводе машины в домен

Когда машина вводится в домен, в DNS-записи на DNS-сервере прописывается текущий IP-адрес машины.

Если машина с именем demo.samdom.example.com вводится в домен и имеет IP-адрес 192.168.0.55 (независимо от того, получен ли он статически или через DHCP), то на DNS-сервере будет создана (или обновлена) запись:

demo.samdom.example.com. IN A 192.168.0.55

Эта запись будет храниться в DNS-зоне прямого просмотра домена и использоваться для разрешения имени demo.samdom.example.com в IP-адрес 192.168.0.55.

PTR DNS-запись автоматически не создается, даже если существует обратная зона в базе данных Active Directory. Для ее создания необходимо на клиенте включить необходимые настройки для обновления PTR DNS-записей (то есть в дальнейшем вместо обновления запись будет зарегистрирована). В обратном случае запись нужно будет создать вручную:

$ samba-tool dns add dc1.samdom.example.com 0.168.192.in-addr.arpa 55 PTR demo.samdom.example.com -U administrator
Password for [administrator@SAMDOM.EXAMPLE.COM]:
Record added successfully

Созданная DNS-запись:

55.0.168.192.in-addr.arpa. 3600 IN PTR demo.samdom.example.com.
Примечание: Обратная зона создается так:
$ samba-tool dns zonecreate dc1.samdom.example.com 0.168.192.in-addr.arpa -U administrator 
Password for [administrator@SAMDOM.EXAMPLE.COM]: 
Zone 0.168.192.in-addr.arpa created successfully 


Подробнее с администрированием DNS-сервера можно ознакомиться в SambaWiki

Обновление DNS-записей

Используются следующие механизмы обновления DNS-записей:

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

На стороне DHCP

KEA

ISC DHCP

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

SSSD (System Security Services Daemon)

Для включения обновления IP-адресов службой sssd существует несколько способов:

  • с помощью центра управления ALT Linux (ALT Linux Control Center)
  • редактирование файла /etc/sssd/sssd.conf
  • групповыми политиками
  • применением control
Настройка через центр управления системой

Необходимо в Центре управления системой перейти в раздел «Пользователи» → «Аутентификация» и выбрать «Настройки SSSD».

Подробнее про каждую настройку можно прочесть в статье Настройки SSSD в Alterator.

Настройка через файл /etc/sssd/sssd.conf

В файл конфигурации этой службы /etc/sssd/sssd.conf в секцию с параметрами домена можно добавить опции таким образом:

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


Параметры настройки автоматического обновления DNS
Параметр Описание Значение по умолчанию
dyndns_update Необязательный параметр. Этот параметр указывает SSSD автоматически обновлять на сервере DNS Active Directory IP-адрес клиента. Защита обновления обеспечивается с помощью GSS-TSIG. Соответственно, администратору Active Directory требуется только разрешить защищённые обновления для зоны DNS. Для обновления будет использован IP-адрес LDAP-соединения AD, если с помощью параметра «dyndns_iface» не указано иное true
dyndns_ttl Значение TTL, которое применяется при обновлении записи DNS клиента. Если параметр «dyndns_update» установлен в значение «false», этот параметр ни на что не влияет. Если администратором установлено значение TTL на стороне сервера, оно будет переопределено этим параметром 3600 (секунд)
dyndns_iface Необязательный параметр. Применимо только тогда, когда параметр «dyndns_update» установлен в значение «true». Выберите интерфейс или список интерфейсов, IP-адреса которых должны использоваться для динамических обновлений DNS. Специальное значение «*» подразумевает, что следует использовать IP-адреса всех интерфейсов. Пример: dyndns_iface = em1, vnet1, vnet2 использовать IP-адреса интерфейса, который используется для подключения LDAP AD
dyndns_refresh_interval Как часто внутреннему серверу следует выполнять периодическое обновление DNS в дополнение к автоматическому обновлению, которое выполняется при переходе внутреннего сервера в сетевой режим. Этот параметр является необязательным и применяется только тогда, когда параметр «dyndns_update» установлен в значение «true». Обратите внимание, что наименьшее допустимое значение составляет 60 секунд: если будет указано меньшее значение, параметр примет наименьшее допустимое значение (60 секунд) 86400 (24 часа)
dyndns_update_ptr Следует ли также явно обновлять запись PTR при обновлении записей 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
Настройка при помощи механизма control

Список всех возможных настроек с помощью control, связанных с sssd, можно получить следующим образом:

# control | grep sssd

Чтобы посмотреть, в какое значение можно поставить ту или иную настройку, надо запустить команду с ключом help:

# control sssd-ad-gpo-access-control help
disabled: SSSD GPO-based access control rules are neither evaluated nor enforced
enforced: SSSD GPO-based access control rules are evaluated and enforced
permissived: SSSD GPO-based access control rules are evaluated, but not enforced
default: SSSD GPO-based access control rules are evaluated and enforced

Подробнее про каждую настройку можно узнать в статье Групповые политики/ALT System Control или из описания параметров конфигурации выше.

Пример. Чтобы включить control sssd-dyndns-update, который указывает SSSD автоматически обновлять на сервере DNS Active Directory IP-адрес клиента, необходимо:

  1. Вывести все значения:
    # control sssd-dyndns-update help
    disabled: Disable automatically update DNS server with the IP address using SSSD
    enabled: Enable automatically update DNS server with the IP address using SSSD
    default: Disable automatically update DNS server with the IP address using SSSD by default
    
  2. Задать состояние включено:
    # control sssd-dyndns-update enabled
    
    Проверка:
    # control sssd-dyndns-update
    enabled
    
  3. После необходимо перезапустить sssd:
    # systemctl restart sssd.service
    
Настройка при помощи групповых политик

С помощью групповых политик в Active Directory можно централизованно управлять настройками обновления DNS-записей на всех клиентах в сети. Групповые политики, настраиваемые на контроллере домена, позволяют администратору автоматически конфигурировать параметры, связанные с обновлением DNS-записей.

С помощью ADMC (Компонента удаленного управления базой данных конфигурации) можно легко управлять объектами групповых политик на уровне доменов AD и организационных подразделений (OU).

Подробнее с ADMC и управлением объектами групповых политик можно ознакомиться на странице ADMC.

После создания необходимого организационного подразделения, необходимо создать связанный с ним объект групповой политики и изменить его с помощью GPUI.

В открывшемся окне редактора групповых политик GPUI перейти по пути:

«Компьютер» → «Административные шаблоны» → «Система ALT» → «Службы» → «SSSD опции»

Выбирать интересующие политики (в разделе «Помощь» можно ознакомиться с описанием) и установить в необходимое состояние: «Включено», «Отключено», «Не сконфигурировано».

Samba Winbind

Samba Winbind не поддерживает возможность динамического обновления DNS-записей. Для обхода этой проблемы была разработана программа, реализующая динамическое обновление адресов на DNS-сервере при использовании winbind в качестве клиента домена — winbind-dnsupdate.

Функционал winbind-dnsupdate

Основным функционалом является обновление IPv4 (A), IPv6 (AAAA) и соответствующих PTR DNS-записей. Для обновления DNS-записей winbind-dnsupdate использует файл /etc/resolv.conf. В пакете вместе со скриптом предоставляются юниты systemd timer и systemd service. Таймер запускает сервисный юнит для обновления DNS-записи через 5 минут после загрузки системы и затем каждый час. Для изменения частоты запуска нужно редактировать таймер.

Установка

# apt-get install samba-winbind-dnsupdate

После установки необходимо активировать и запустить таймер, который в свою очередь запускает сервис:

# systemctl enable winbind-dnsupdate.timer
# systemctl start winbind-dnsupdate.timer

Основные параметры winbind-dnsupdate

Параметр Описание
-h, --help Вывести справку о команде
-v, --version Вывести версию
-a, --all Включить обновление всех записей
-6, --update-ipv6 Включить обновление IPv6 (AAAA) записей
-d, --daemon Отправить логи в journald
-t, --ttl Задать TTL («время жизни», указывает, как долго настройки DNS должны храниться в кеше, прежде чем они будут автоматически обновлены)
--allow-ipv4-ptr-update Включить обновление обратной DNS-записи IPv4 (A) PTR
--allow-ipv6-ptr-update Включить обновление обратной DNS-записи IPv6 (AAAA) PTR
Примечание: Справку по winbind-dnsupdate можно получить командой: $ man winbind-dnsupdate.


Пример вывода # winbind-dnsupdate:

[INFO]: Hostname: ws2.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: 10.64.224.108.
[INFO]: Trying parse connection interface name.
[INFO]: Successful. Intraface name: eth0.
[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: 10.64.224.113.
[INFO]: IPv4 address in DNS server: 10.64.224.112.
[INFO]: The IPv4 address of interface eth0 has been changed.
[INFO]: Start the A record update.
[INFO]: A record update successful.
[INFO]: IPv4 update was successful.
[INFO]: The update was successful.
[INFO]: Destroy host credential.

Изменение частоты запуска:

Таймер активирует сервисный юнит, который обновляет DNS-запись через 5 минут после загрузки системы и затем каждый час. Чтобы изменить частоту запуска, необходимо отредактировать настройки таймера.

С помощью команды:

# systemctl cat winbind-dnsupdate.timer

можно проверить значение параметра **OnUnitActiveSec**, по умолчанию оно будет равно 60min.

Команда:

# systemctl edit winbind-dnsupdate.timer

открывает текстовый редактор с конфигурацией, где можно внести изменения в таймер юнита winbind-dnsupdate.timer. Этот подход позволяет создавать или изменять так называемые "дополнения" (overrides) для юнита, не изменяя оригинальный файл юнита, который находится в /usr/lib/systemd/system/. Это важно, потому что оригинальные файлы могут быть перезаписаны при обновлении пакетов.

При выполнении этой команды создаётся директория /etc/systemd/system/winbind-dnsupdate.timer.d/, в которой появляется файл override.conf. В этом файле можно задать новые параметры или изменить существующие параметры юнита, такие как время запуска таймера.

Необходимо добавить следующие строки:

[Timer]
OnUnitActiveSec=
OnUnitActiveSec=120min

Сначала очистите предыдущее определение (60min), это можно сделать установив OnUnitActiveSec = пустое значение. Далее установите необходимое вам значение (например, 120min).

Вызов команды # systemctl edit winbind-dnsupdate.timer должен выглядеть следующим образом:

### Editing /etc/systemd/system/winbind-dnsupdate.timer.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Timer]
OnUnitActiveSec=
OnUnitActiveSec=120min
### Lines below this comment will be discarded
### /usr/lib/systemd/system/winbind-dnsupdate.timer
# [Unit]
# Description=Update dns record Daily and on boot
# 
# [Timer]
# OnBootSec=5min
# OnUnitActiveSec=60min
# 
# [Install]
# WantedBy=timers.target

После внесения изменений в конфигурацию юнита, необходимо перезагрузить таймер для применения изменений:

# systemctl daemon-reload

Windows клиент

В Windows клиенты автоматически обновляют DNS-записи, такие как A и PTR, при изменении IP-адресов или имени компьютера. Этот процесс инициируется службой DHCP-клиента, которая отправляет обновления на DNS-сервер. Обновления происходят каждые 24 часа по умолчанию или могут быть инициированы вручную командой ipconfig /registerdns. Для DHCP-клиентов DHCP-сервер может выполнять эти обновления от имени клиента, что снижает необходимость ручного администрирования.

Подробнее можно прочитать на сайте Microsoft.

Обновление вручную

Для обновления IP-адресов вручную существует несколько способов:

  • С помощью утилиты nsupdate
  • С помощью команды samba-tool
  • Оснастка DNS в RSAT
nsupdate
nsupdate  [-d]  [-D]  [-i]  [-L  level]  [  [-g]  |  [-o]  | [-l] | [-y
      [hmac:]keyname:secret] | [-k keyfile] ] [-t  timeout]  [-u  udptimeout]
      [-r udpretries] [-v] [-T] [-P] [-V] [ [-4] | [-6] ] [filename]

При использовании утилиты nsupdate для динамического обновления DNS-записей в доменных средах Active Directory, необходимо использовать механизм аутентификации GSS-TSIG, который использует Kerberos-билет для аутентификации вашей машины в домене. Используется при обновлении DNS-записей с помощью nsupdate с флагом -g.

Перед выполнением команды nsupdate -g необходимо получить Kerberos-билет для машинного аккаунта с помощью команды:

# kinit -k 'MACHINENAME$'
Примечание: Имя машинного аккаунта можно узнать используя команду hostname. Во время использования команды kinit имя машинного аккаунта нужно писать в верхнем регистре, а на конце приписывать знак $.


После успешного получения Kerberos-билета можно приступать к обновлению DNS-записей.

# nsupdate -g
> update delete oldhost.example.com A
> update add newhost.example.com 86400 A 172.16.1.1
> send

Все записи A для oldhost.example.com удаляются, и добавляется запись A для newhost.example.com с IP-адресом 172.16.1.1. Недавно добавленная запись имеет TTL 1 день (86400 секунд).

# nsupdate -g
> prereq nxdomain nickname.example.com
> update add nickname.example.com 86400 CNAME somehost.example.com
> send

Предварительное условие позволяет серверу имен проверить, нет ли записей о ресурсах любого типа для nickname.example.com. Если они есть, запрос на обновление не выполняется. Если это имя не существует, для него добавляется другое имя.

Примечание: Подробную информацию по nsupdate можно получить командой: $ man nsupdate


samba-tool dns

Команда samba-tool dns предоставляет возможность управлять DNS-записями на контроллерах домена Samba, что важно для администрирования доменных сред. С помощью этой команды можно добавлять (add), удалять (delete), и изменять (update) различные типы записей, включая A, PTR, MX и другие.

Например, добавление A-записи выполняется командой:

samba-tool dns add <server> <zone> <name> A <ip-address> -U <user>

Подробнее можно прочитать в документации ALT Linux Team.

Oснастка DNS в RSAT

Оснастка DNS в RSAT позволяет администраторам Windows удаленно управлять DNS-записями через графический интерфейс. С его помощью можно добавлять, удалять и изменять DNS-записи.

Подробную инструкцию по установке и применению можно прочесть в следующих статьях:

1. Управление инфраструктурой Active Directory Samba4 из Windows10 через RSAT — часть 3

2. Управление DNS и групповой политикой контроллера домена Samba4 AD из Windows. Часть 4

Известные проблемы

Неверные права DNS-записей машины в домене

Описание

При вводе машины в домен Active Directory вызывается утилита system-auth, которая в свою очередь использует команду net ads join. В рамках данной команды выполняется присоединение к домену с использованием Kerberos-аутентификации и не производится обновление DNS. После успешного присоединения машина регистрирует свою DNS-запись с помощью команды net ads dns register также через Kerberos-аутентификацию.

Проблема

Если машины уже введены в домен или используется старая версия system-auth (до исправления 8 июня 2024 года в пакете alterator-auth версии 0.44.10-alt1), то у машин не будет прав на обновление своих DNS-записей.

Это происходит потому, что во время создания DNS-записи в доменном DNS system-auth использует билет администратора, и в результате владельцем записи становится он, а не машина, что впоследствии не позволяет машине обновить свою DNS-запись.

Имеются ввиду записи вида:

DC=host1,DC=domain.alt,CN=MicrosoftDNS,DC=DomainDnsZones,DC=domain,DC=alt

Решения

  • Для новых машинных учетных записей

Исправление 8 июня 2024 года в пакете alterator-auth версии 0.44.10-alt1 работает только для машин, которые не были ранее введены в домен с текущим именем (т.е. машинная учётная запись создаётся впервые).

Если машина уже была добавлена в домен, но для неё используется новое имя, то будет создана новая учётная запись, и проблема с правами на обновление DNS-записей будет решена. Однако, если машина повторно вводится в домен с тем же именем, это не устранит проблему.

Примечание: При вводе машины в домен с новым именем необходимо убедиться, что очищены кэши SSSD и Winbind, а также удален старый keytab-файл.


  • Для машин введенных в домен

В случае с уже введёнными в домен машинами необходимо воспользоваться скриптом https://github.com/altlinuxteam/samba_allow_nsupdate на контроллере домена. Он позволяет задать необходимые права как для всех машин в Домене или Организации, так и для произвольного списка машин в домене.

Примеры:

  • разрешить самостоятельное обновление для машин, находящихся в контейнере «Computers»:
    # samba_allow_nsupdate --domain-dns="test.alt" --computers-base-dn="CN=Computers,DC=test,DC=alt"
    Domain: test.alt
    Domain DN: DC=test,DC=alt
    Computers search base DN: CN=Computers,DC=test,DC=alt
    Action: allow
    Selected computers list:
    DC1$
    WS2$
    WS$
    WS3$
    Allow self nsupdate for this computers list? (Y/n):
    DC1$			S-1-5-21-3099202228-3607437695-3279060739-1000	DONE
    WS2$			S-1-5-21-3099202228-3607437695-3279060739-1113	DONE
    WS$			S-1-5-21-3099202228-3607437695-3279060739-1107	DONE
    WS3$			S-1-5-21-3099202228-3607437695-3279060739-1127	DONE
    
  • разрешить самостоятельное обновление для произвольного списка машин в домене (в данном случае для WS, WS2):
    # samba_allow_nsupdate --action=allow WS$ WS2$ --computers-base-dn="DC=test,DC=alt" --domain-dns="test.alt"
    Domain: test.alt
    Domain DN: DC=test,DC=alt
    Computers search base DN: DC=test,DC=alt
    Action: allow
    Selected computers list:
    WS$
    WS2$
    Allow self nsupdate for this computers list? (Y/n):
    WS$			S-1-5-21-3099202228-3607437695-3279060739-1107	DONE
    WS2$			S-1-5-21-3099202228-3607437695-3279060739-1113	DONE
    
  • Другие решения:
    • воспользоваться с Windows машины RSAT оснасткой DNS и задать необходимые права вручную;
    • в той же оснастке DNS для всего DNS домена дать права на запись группе «Domain Computers» (не рекомендуется);
    • воспользоваться инструментом samba-tool dsacl (этот инструмент не очень удобен для ручного использования).
winbind-dnsupdate alterator-auth
sisyphus 0.5-alt1 0.44.10-alt1

исправлено 8 июня 2024

sisyphus_e2k - 0.44.10-alt1

исправлено 4 июля 2024

sisyphus_riscv64 0.5-alt1 0.44.10-alt1

исправлено 9 июня 2024

sisyphus_loongarch64 0.5-alt1 0.44.10-alt1

исправлено 9 июня 2024

p11 0.5-alt1 0.44.10-alt1

исправлено 4 июля 2024

p10 0.5-alt1 0.44.10-alt1

исправлено 18 июля 2024

p10_e2k - 0.44.10-alt1

исправлено 21 июля 2024

p9 - 0.44.2-alt0.p9.1

не исправлено

p9_e2k - 0.43.9-alt4

не исправлено

p8 - 0.40-alt0.M80P.2

не исправлено

c10f1 - 0.44.1-alt1

не исправлено

c9f2 - 0.43.9-alt2

не исправлено

c7 - 0.35-alt0.M70C.1

не исправлено