Работа с samba_dnsupdate
Скрипт samba_dnsupdate (полный путь к скрипту после установки пакета inno-samba: /app/inno-samba/sbin/samba_dnsupdate) отвечает за проверку и изменение записей DNS. Он автоматически запускается на контроллере домена при старте процесса samba и далее выполняется каждые 10 минут.
В процессе работы скрипт использует текстовый файл dns_update_list, располагающийся в подкаталоге /app/inno-samba/private. В файле перечисляются записи, которые могут быть в DNS для данного контроллера домена.
Скрипт приводит состав записей в DNS в соответствие с содержимым файла, добавляя новые записи, удаляя неактуальные и внося необходимые изменения в существующие записи.
Скрипт имеет ряд параметров, позволяющих управлять его работой.
Для изменения набора параметров, используемых при автоматическом запуске скрипта, может использоваться конфигурационный параметр dns update command в разделе [global] файла smb.conf:
[global] dns update command = /app/inno-samba/sbin/samba_dnsupdate [options]
|
Скрипт Запускать его вручную с использованием доступных опций следует исключительно в диагностических целях при получении явных указаний от сотрудников сопровождения или разработчиков ГК «Иннотех». |
Формат вызова
Общий формат вызова скрипта:
samba_dnsupdate [options]
По умолчанию скрипт вызывает утилиту nsupdate и работает под машинной учетной записью контроллера домена, на котором он выполняется.
Для работы со скриптом в терминале требуются права суперпользователя.
Параметры
Параметры вызова:
-
--all-interfaces— выполнять проверку для всех сетевых интерфейсов, указанных в конфигурации контроллера домена (значение параметраinterfacesв smb.conf); -
--all-names— принудительное обновление записей в DNS (во избежание дублирования записей перед вставкой выполняется проверка существования записи); -
--check-only— выполнять только проверку наличия в службе DNS записей, отражающих текущее состояние контроллера домена, без внесения каких-либо изменений;Параметр полностью отключает всю функциональность скрипта samba_dnsupdateпо изменению записей в DNS. Таким образом, при его использовании любые другие параметры, предусматривающие внесение изменений, игнорируются. -
--current-ip— использовать указанный IP-адрес в качестве адреса проверяемого контроллера домена;Допускается указывать несколько IP-адресов через запятую в значении одного параметра --current-ipлибо передавать несколько параметров--current-ipс разными значениями. -
--fail-immediately— прекратить выполнение скрипта при первой ошибке; -
--no-credentials— пропустить шаг запроса данных для аутентификации Kerberos с использованием машинной учетной записи контроллера домена; -
--no-substitutions— не выполнять подстановки в файле, указанном в параметре--update-list; -
--rpc-server-ip— IP-адрес сервера для использования при работе сsamba-tool(при отсутствии значения по умолчанию используется первый IP-адрес, указанный в параметре--current-ip); -
--update-cache— при проверке и обновлении записей использовать указанный кэш вместо /app/inno-samba/private/dns_update_cache; -
--update-list— при проверке и обновлении записей использовать указанный файл вместо /app/inno-samba/private/dns_update_list; -
--use-file— считывать DNS-записи из указанного файла и проверять текущее состояние контроллера домена по ним, а не по фактически существующим записям, полученным из DNS (может использоваться для тестирования и отладки различных конфигураций); -
--use-nsupdate— использовать утилитуnsupdateдля внесения изменений в DNS (по умолчанию при условии успешного прохождения аутентификации Kerberos с использованием машинной учетной записи контроллера домена); -
--use-samba-tool— использовать утилитуsamba-toolдля внесения изменений посредством RPC-вызовов (по умолчанию в случае невозможности использоватьnsupdateиз-за непрохождения аутентификации Kerberos); -
--verbose— выводить подробное описание выполняемых скриптом операций в stdout.
Примеры
Пример запуска скрипта в терминале для обновления записей DNS для текущего контроллера домена с выводом подробной информации:
sudo /app/inno-samba/sbin/samba_dnsupdate \
--verbose \
--all-names
Пример запуска скрипта только для проверки наличия записей DNS для нескольких контроллеров домена без внесения каких-либо изменений:
sudo /app/inno-samba/sbin/samba_dnsupdate \
--verbose \
--check-only \
--ip-current=<dc1-ip>,<dc2-ip>
Пример запуска скрипта с указанием на необходимость использования утилиты samba-tool и файла со списком записей, требующих проверки и обновления:
sudo /app/inno-samba/sbin/samba_dnsupdate \
--use-samba-tool \
--update-list /tmp/custom_dns_update_list
Пример добавления команды автоматического запуска скрипта с параметром в файл smb.conf:
[global]
[...]
dns update command = /app/inno-samba/sbin/samba_dnsupdate --use-samba-tool
Диагностический режим
В диагностическом режиме осуществляется вывод сообщений с уровнем логирования DEBUG, формируемых скриптом samba_dnsupdate в процессе работы, в стандартный лог-файл Эллес /app/inno-samba/var/log.samba или в отдельные лог-файлы в каталоге /app/inno-samba/logs/samba_dnsupdate/.
Формат сообщений
Сообщения формируются из следующих атрибутов:
| Атрибут | Формат | Описание | Пример |
|---|---|---|---|
asctime |
|
Время в формате ГГГГ.ММ.ДД ЧЧ:ММ:СС.мс |
2024.07.04 14:03:38.386 |
process |
|
PID процесса |
1132 |
name |
|
Имя процесса |
samba_dnsupdate |
lineno |
|
Номер строки в скрипте |
448 |
funcName |
|
Имя вызываемой функции |
check_one_dns_name |
levelname |
|
Уровень логирования |
DEBUG |
message |
|
Текст сообщения |
. . name='_ldap._tcp.inno.local.' name_type='SRV' d='SRV _ldap._tcp.inno.local dc02.inno.local 389' |
Включение диагностического режима
Чтобы включить диагностический режим, создайте следующий файл-флаг:
-
для записи в стандартный лог-файл /app/inno-samba/var/log.samba:
sudo touch /app/inno-samba/etc/samba_dnsupdate.DEBUG
-
для записи в отдельные файлы в каталоге /app/inno-samba/logs/samba_dnsupdate/:
sudo touch /app/inno-samba/etc/samba_dnsupdate.DEBUG.FILE
При каждом запуске
samba_dnsupdateсоздается отдельный лог-файл с именем samba_dnsupdate.log. К именам ранее созданных файлов добавляются номера от 1 до 9 (ограничение на количество файлов по умолчанию) в порядке возрастания времени создания.
Отключение диагностического режима
Для отключения диагностического режима удалите соответствующий файл-флаг в каталоге /app/inno-samba/etc/.
Например:
sudo rm -f /app/inno-samba/etc/samba_dnsupdate.DEBUG.FILE
Изменение каталога логирования
Для сохранения лог-файлов в каталоге, отличном от стандартного каталога /app/inno-samba/logs/:
-
Создайте целевой каталог.
Например:
sudo mkdir -pv /app/logs/
-
Замените каталог /app/inno-samba/logs символической ссылкой на целевой каталог.
Например:
sudo rm -rf /app/inno-samba/logs sudo ln -sv /app/logs /app/inno-samba/logs '/app/inno-samba/logs' -> '/app/logs'