Управление зонами DNS

Группа подкоманд samba-tool dns позволяет создавать, изменять и удалять зоны DNS, а также управлять разделами каталога, настройками обновления и очистки записей.

Создание зоны DNS

Для создания зоны DNS используется следующий формат вызова:

samba-tool dns zonecreate <server> <zone> [options]

Параметры

Параметры вызова:

  • <server> — IP-адрес или доменное имя DNS-сервера;

  • <zone> — имя зоны DNS.

Дополнительные параметры:

  • --client-version — версия DNS-клиента; возможные значения: w2k, dotnet, longhorn; значение по умолчанию — longhorn;

  • --dns-directory-partition — область репликации данных для создаваемой зоны DNS; возможные значения:

  • --zone-type — тип зоны; возможные значения: primary (по умолчанию), stub; числовые эквиваленты 1 и 3 также допустимы;

  • --allow-update — тип динамических обновлений для первичных зон; возможные значения: off, none, unsecure, nonsecure, secure, 0, 1, 2; по умолчанию — secure;

  • --master-servers — список мастер-серверов для зон-заглушек, разделенных запятыми (например, 10.10.10.10,10.10.10.11);

  • --reverse — флаг создания обратной зоны; если имя зоны заканчивается на .in-addr.arpa, этот флаг обязателен.

Примеры

Пример создания прямой зоны в доменном разделе каталога:

samba-tool dns zonecreate dc1.elles.inno.tech elles.inno.tech
...
Zone elles.inno.tech created successfully

Пример создания обратной зоны /24 для подсети 10.10.10.0/24:

samba-tool dns zonecreate dc1.elles.inno.tech 10.10.10.in-addr.arpa --reverse
...
Zone 10.10.10.in-addr.arpa created successfully

Пример создания обратной зоны /24 для подсети 10.10.20.0/24 в лесном разделе каталога:

samba-tool dns zonecreate dc1.elles.inno.tech 20.10.10.in-addr.arpa --reverse --dns-directory-partition=forest
...
Zone 20.10.10.in-addr.arpa created successfully

Пример создания пользовательской зоны в отдельном разделе каталога:

samba-tool dns zonecreate dc1.elles.inno.tech api.elles.inno.tech --dns-directory-partition=dc=elles-dns,dc=inno,dc=tech
...
Zone api.elles.inno.tech created successfully

Пример создания зоны-заглушки (stub) с указанием мастер-серверов:

samba-tool dns zonecreate dc1.elles.inno.tech stub.elles.inno.tech --zone-type=stub --master-servers=10.10.10.10,10.10.10.11
...
Zone stub.elles.inno.tech created successfully

Созданная зона доступна сразу после выполнения команды. Перезапуск «Эллес» или BIND 9 не требуется.

Перемещение зоны DNS между разделами каталога

Для изменения раздела каталога, в котором размещается зона DNS, используется следующий формат вызова:

samba-tool dns zonechangenc <server> <zone> <nc_fqdn> [options]

Параметры

Параметры вызова:

  • <server> — IP-адрес или доменное имя DNS-сервера;

  • <zone> — имя переносимой зоны DNS;

  • <nc_fqdn> — имя раздела каталога, в который необходимо перенести зону DNS; может быть domain, forest или FQDN пользовательского раздела.

Примеры

Пример переноса зоны из доменного раздела в пользовательский раздел каталога:

samba-tool dns zonechangenc dc1.elles.inno.tech api.elles.inno.tech dc=elles-dns,dc=inno,dc=tech
...
Zone api.elles.inno.tech has been moved to a new directory partition dc=elles-dns,dc=inno,dc=tech

Пример переноса обратной зоны в лесной раздел каталога:

samba-tool dns zonechangenc dc1.elles.inno.tech 20.10.10.in-addr.arpa forest
...
Zone 20.10.10.in-addr.arpa has been moved to a new directory partition forest

Удаление зоны DNS

Для удаления существующей зоны DNS используется следующий формат вызова команда:

samba-tool dns zonedelete <server> <zone> [options]

Параметры

Параметры вызова:

  • <server> — IP-адрес или доменное имя DNS-сервера;

  • <zone> — имя зоны DNS.

Примеры

Пример удаления обратной зоны /24:

samba-tool dns zonedelete dc1.elles.inno.tech 10.10.10.in-addr.arpa
...
Zone 10.10.10.in-addr.arpa deleted successfully

Пример удаления прямой зоны:

samba-tool dns zonedelete dc1.elles.inno.tech api.elles.inno.tech
...
Zone api.elles.inno.tech deleted successfully

Получение информации о зоне DNS

Для получения информации о зоне DNS используется следующий формат вызова:

samba-tool dns zoneinfo <server> <zone> [options]

Параметры

Параметры вызова:

  • <server> — IP-адрес или доменное имя DNS-сервера;

  • <zone> — имя зоны DNS.

Дополнительные параметры:

  • --client-version — версия DNS-клиента; возможные значения: w2k, dotnet, longhorn; значение по умолчанию — longhorn;

  • --guid — включает в вывод GUID зоны из Active Directory;

  • --json — выводит результат в формате JSON вместо текстового представления.

Примеры

Пример получения информации о прямой зоне:

samba-tool dns zoneinfo dc1.elles.inno.tech elles.inno.tech
...
  pszZoneName                 : elles.inno.tech
  dwZoneType                  : DNS_ZONE_TYPE_PRIMARY
  fReverse                    : FALSE
  fAllowUpdate                : DNS_ZONE_UPDATE_SECURE
  fPaused                     : FALSE
  fShutdown                   : FALSE
  fAutoCreated                : FALSE
  fUseDatabase                : TRUE
  pszDataFile                 : None
  aipMasters                  : 10.10.10.10
  fSecureSecondaries          : DNS_ZONE_SECSECURE_NS_ONLY
  fNotifyLevel                : DNS_ZONE_NOTIFY_ALL_SECONDARIES
  aipSecondaries              : 10.10.10.11
  aipNotify                   : 10.10.10.11
  fUseWins                    : FALSE
  fUseNbstat                  : FALSE
  fAging                      : FALSE
  dwNoRefreshInterval         : 168
  dwRefreshInterval           : 168
  dwAvailForScavengeTime      : 0
  aipScavengeServers          : 10.10.10.10
  dwRpcStructureVersion       : 0x2
  dwForwarderTimeout          : 5
  fForwarderSlave             : 0
  aipLocalMasters             : 10.10.10.10
  dwDpFlags                   : DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
  pszDpFqdn                   : DomainDnsZones.elles.inno.tech
  pwszZoneDn                  : DC=elles.inno.tech,CN=MicrosoftDNS,DC=DomainDNSZones,DC=elles,DC=inno,DC=tech
  dwLastSuccessfulSoaCheck    : 1701234567
  dwLastSuccessfulXfr         : 1701234567
  fQueuedForBackgroundLoad    : FALSE
  fBackgroundLoadInProgress   : FALSE
  fReadOnlyZone               : FALSE
  dwLastXfrAttempt            : 0
  dwLastXfrResult             : 0

Пример получения информации об обратной зоне с GUID (приводится фрагмент вывода):

samba-tool dns zoneinfo dc1.elles.inno.tech 10.10.20.in-addr.arpa --guid -U Administrator
...
  guid                        : 123e4567-e89b-12d3-a456-426614174000
  pszZoneName                 : 10.10.20.in-addr.arpa
  dwZoneType                  : DNS_ZONE_TYPE_PRIMARY
  fReverse                    : TRUE
...

Пример получения информации о зоне в формате JSON (приводится фрагмент вывода):

samba-tool dns zoneinfo dc1.elles.inno.tech elles.inno.tech --json
...
{
  "pszZoneName": "elles.inno.tech",
  "dwZoneType": 1,
  "fReverse": false,
...
}

Получение списка зон DNS

Для получения списка зон DNS, существующих на DNS-сервере с указанным IP-адресом или доменным именем, используется следующий формат вызова:

samba-tool dns zonelist <server> [options]

Параметры

Параметры вызова:

  • <server> — IP-адрес или доменное имя DNS-сервера.

Дополнительные параметры:

  • --client-version — версия DNS-клиента; возможные значения: w2k, dotnet, longhorn; значение по умолчанию — longhorn;

  • --primary — получение списка первичных зон DNS (по умолчанию);

  • --secondary — получение списка вторичных зон DNS;

  • --cache — получение списка зон DNS из кэша;

  • --auto — получение списка автоматически созданных зон DNS;

  • --forward — получение списка прямых зон DNS;

  • --reverse — получение списка обратных зон DNS;

  • --forwarder — получение списка forwarder-зон DNS;

  • --ds — получение списка зон DNS, интегрированных с AD;

  • --non-ds — получение списка зон DNS без интеграции с AD;

  • --json — выводит результат в формате JSON вместо текстового представления.

Примеры

Пример получения списка всех первичных зон, интегрированных с AD:

samba-tool dns zonelist dc1.elles.inno.tech --primary --ds
...
3 zone(s) found

  pszZoneName                 : elles.inno.tech
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 0
  dwDpFlags                   : DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
  pszDpFqdn                   : DomainDnsZones.elles.inno.tech

  pszZoneName                 : 10.10.10.in-addr.arpa
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE DNS_RPC_ZONE_REVERSE
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 0
  dwDpFlags                   : DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
  pszDpFqdn                   : DomainDnsZones.elles.inno.tech

  pszZoneName                 : 10.10.20.in-addr.arpa
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE DNS_RPC_ZONE_REVERSE
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 0
  dwDpFlags                   : DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
  pszDpFqdn                   : ForestDnsZones.elles.inno.tech

Пример получения списка всех обратных зон в JSON-формате:

samba-tool dns zonelist dc1.elles.inno.tech --reverse --json
...
[
  {
    "pszZoneName": "10.10.10.in-addr.arpa",
    "Flags": 16,
    "ZoneType": 1,
    "Version": 0,
    "dwDpFlags": 17,
    "pszDpFqdn": "DomainDnsZones.elles.inno.tech"
  },
  {
    "pszZoneName": "20.10.10.in-addr.arpa",
    "Flags": 16,
    "ZoneType": 1,
    "Version": 0,
    "dwDpFlags": 18,
    "pszDpFqdn": "ForestDnsZones.elles.inno.tech"
  }
]

Изменение настроек очистки от устаревших записей для зоны DNS

Для изменения настроек очистки от устаревших записей для зоны DNS используется следующий формат вызова:

samba-tool dns zoneoptions <server> <zone> [options]

Подкоманда zoneoptions позволяет включать и отключать очистку от устаревших записей, настраивать периоды обновления и запрета на обновление записей, а также управлять временными метками существующих записей.

Параметры

Параметры вызова:

  • <server> — IP-адрес или доменное имя DNS-сервера;

  • <zone> — имя зоны DNS.

Дополнительные параметры:

  • --client-version — версия DNS-клиента; возможные значения: w2k, dotnet, longhorn; значение по умолчанию — longhorn;

  • --mark-old-records-static=YYYY-MM-DD — дата в формате YYYY-MM-DD; записи старше указанной даты становятся статическими (их временные метки становятся нулевыми);

  • --mark-records-static-regex=REGEXP — регулярное выражение; записи, соответствующие заданному регулярному выражению, становятся статическими;

  • --mark-records-dynamic-regex=REGEXP — регулярное выражение; записи, соответствующие заданному регулярному выражению, становятся динамическими;

  • -n|--dry-run — запуск в тестовом режиме для проверки корректности заданных параметров; фактически изменения не вносятся;

  • --aging=[0-1] — признак необходимости очистки от устаревших записей; возможные значения:

    • 0 — очистка отключена (по умолчанию);

    • 1 — очистка включена;

  • --norefreshinterval=[0-87600] — интервал блокировки для зоны с включенной очисткой в часах; если параметр равен 0, используется значение по умолчанию (168 часов, одна неделя);

  • --refreshinterval=[0-87600] — интервал обновления для зоны с включенной очисткой в часах; если параметр равен 0, используется значение по умолчанию (168 часов, одна неделя).

Примеры

Для исключения временной потери динамических записей при включении очистки может использоваться следующая последовательность шагов:

  1. Включение очистки с большим интервалом обновления (5 лет = 43800 часов):

    samba-tool dns zoneoptions dc1.elles.inno.tech elles.inno.tech --aging=1 --refreshinterval=43800 --norefreshinterval=43800
    ...
    Set Aging to 1
    Set RefreshInterval to 43800
    Set NoRefreshInterval to 43800
  2. После того как пройдет достаточное количество времени, чтобы все записи обновились, устанавливается стандартный интервал обновления — 7 дней (168 часов):

    samba-tool dns zoneoptions dc1.elles.inno.tech elles.inno.tech --refreshinterval=168 --norefreshinterval=168
    ...
    Set RefreshInterval to 168
    Set NoRefreshInterval to 168
  3. Проверка состояния зоны перед включением очистки (dry-run):

    samba-tool dns zoneoptions dc1.elles.inno.tech 10.10.10.in-addr.arpa --aging=1 --refreshinterval=168 --norefreshinterval=168 -n
    ...
    would set Aging to 1 for 10.10.10.in-addr.arpa
    would set RefreshInterval to 168 for 10.10.10.in-addr.arpa
    would set NoRefreshInterval to 168 for 10.10.10.10.in-addr.arpa
  4. Принудительное превращение всех записей с именем, содержащим "api", в статические:

    samba-tool dns zoneoptions dc1.elles.inno.tech 10.10.30.in-addr.arpa --mark-records-static-regex="api"
    ...
    made 3/5 records static on api01.10.10.30.in-addr.arpa.
    made 1/2 records static on api02.10.10.30.in-addr.arpa.
Чтобы очистка работала, в файле smb.conf хотя бы на одном контроллере домена должен быть задан параметр dns zone scavenging = yes.

Обновлено: