Работа с 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