ActiveDirectory/Dynamic dns update
Динамическое обновление DNS записей клиентов домена
Описание
Для связывания доменных имен с 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.
Если на момент ввода машины в домен обратная зона отсутствовала, ее можно создать:
$ 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 Password for [administrator@SAMDOM.EXAMPLE.COM]: Record added successfully
Созданная DNS-запись:
55.0.168.192.in-addr.arpa. 3600 IN PTR demo.samdom.example.com.
Подробнее с администрированием 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 #Интервал обновления в секундах. По умолчанию - 0, и обновление выполняется только один раз при запуске службы SSSD. #Если интервал менее 60 секунд, то обновление выполняется раз в 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
Описание: Значение TTL, которое применяется при обновлении записи DNS клиента. Если параметр dyndns_update установлен в значение «false», этот параметр ни на что не влияет. Если администратором установлено значение TTL на стороне сервера, оно будет переопределено этим параметром.
Значение по умолчанию: 3600 (секунд)
- dyndns_iface
Описание: Необязательный параметр. Применимо только тогда, когда параметр dyndns_update установлен в значение «true». Выберите интерфейс или список интерфейсов, IP-адреса которых должны использоваться для динамических обновлений DNS. Специальное значение “*” подразумевает, что следует использовать IP-адреса всех интерфейсов.
Значение по умолчанию: использовать IP-адреса интерфейса, который используется для подключения LDAP AD
Пример: dyndns_iface = em1, vnet1, vnet2
- 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-адрес клиента, необходимо:
Вывести все значения:
# 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
Задать состояние включено:
# control sssd-dyndns-update enabled
Проверка:
# control sssd-dyndns-update enabled
После необходимо перезапустить 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
Основные параметры
-h, --help Показать справку. -v, --version Вывести версию. -a, --all Включить обновление всех записей. -6, --update-ipv6 Включить обновление IPv6 (AAAA) записей. -d, --daemon Отправить логи в journald. -t, --ttl
Пример вывода # winbind-dnsupdate:
[INFO]: Hostname: clw4-sis.domain.alt [INFO]: Check winbind status. [INFO]: Winbind is running. Continue. [INFO]: Checking the availability of DNS servers [INFO]: DNS servers available [INFO]: Get host credentials [INFO]: Retrieving host credentials successfully [INFO]: ---------------------------------------------------------- [INFO]: Update IPv4 [INFO]: Trying to get the name and IPv4 address of a domain controller [INFO]: Successful. DC info: [INFO]: Domain controller name: dc1.domain.alt [INFO]: Domain controller IPv4: 10.64.177.101 [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.177.145 [INFO]: IPv4 address in DNS server: 10.64.177.130 [INFO]: The IPv4 address of interface eth0 has not been changed. [INFO]: The update was skipped [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