Удаление контроллера домена
В некоторых ситуациях (изменение архитектуры сети, плановый вывод сервера из эксплуатации, выход сервера из строя и т. д.) возникает необходимость в удалении контроллера домена путем понижения его роли до рядового сервера. При работе с контроллерами домена Эллес для этой цели используется подкоманда samba-tool domain demote (операция demote).
Некорректное выполнение операции demote может привести к нестабильной работе домена, включая следующие проблемы:
-
нестабильная работа процесса репликации;
-
замедление работы остальных контроллеров домена из-за ожидания ответов от некорректно смещенного контроллера и неудачных попыток репликации;
-
проблемы с входом в домен либо увеличение времени входа на участниках домена.
Поэтому после ее проведения обязательно должны быть проведены все необходимые проверки.
Сценарии удаления
Возможны следующие сценарии использования операции demote:
-
понижение роли работающего контроллера домена;
-
удаление неработоспособного контроллера домена, доступ к которому отсутствует.
|
Удаление роли контроллера домена в удаленном режиме должно выполняться только в том случае, если сервер не подключен к домену (например, по причине выхода из строя аппаратной части) и восстанавливать подключение не планируется. В противном случае необходимо придерживаться первого сценария, который обеспечивает репликацию всех изменений с удаляемого контроллера на другие работающие контроллеры домена. |
Понижение роли работающего контроллера домена
Для планового удаления одного из работающих контроллеров домена (RWDC или RODC):
-
Выполните вход на удаляемый контроллер домена, используя локальную учетную запись с правами суперпользователя.
-
Убедитесь, что на сервере работает сервис
inno-samba:systemctl status inno-samba.service
-
Убедитесь, что сервер входит в список контроллеров домена, любым из доступных способов. Например:
-
с помощью утилиты
samba-tool:samba-tool computer list --base-dn "OU=Domain Controllers"
-
с помощью утилиты
ldapsearch:ldapsearch -H ldap://dc-name.domain.name -b 'OU=Domain Controllers,DC=domain,DC=name' '(objectClass=computer)'
Если утилита отсутствует, предварительно установите ее:
sudo apt install ldap-utils
-
на участнике домена под управление ОС Windows в списке контроллеров в оснастке Remote Server Administration Tools (RSAT):
-
запустите RSAT;
-
в списке контейнеров в домене в панели слева нажмите Domain Controllers.
-
-
-
Проверьте наличие у контроллера ролей FSMO:
samba-tool fsmo show
При необходимости передайте роли другим контроллерам домена (см. подробнее в разделе «Администрирование ролей FSMO»):
-
выполните вход на целевой контроллер домена под учетной записью с необходимыми для передачи роли правами;
-
выполните подкоманду передачи роли, указав ее имя с помощью ключа
--role:samba-tool fsmo transfer --role=<role>
-
-
Убедитесь, что контроллер домена не является единственным сервером глобального каталога в лесу:
samba-tool gc list
При необходимости включите роль сервера глобально каталога на других контроллерах в домене (см. подробнее в разделе «Администрирование роли Global Catalog»):
-
выполните вход на целевой контроллер домена под учетной записью с необходимыми для передачи роли правами;
-
выполните подкоманду включение роли глобального каталога:
samba-tool gc enable
-
-
Для проверки корректности удаления записей DNS после операции понижения получите и сохраните
objectGUIDконтроллера домена, указав его имя хоста (DC-NAMEв примере):ldbsearch -H /app/inno-samba/private/sam.ldb '(invocationId=*)' --cross-ncs objectguid | grep -A1 DC-NAME
-
Выполните операцию понижения:
samba-tool domain demote -U 'Administrator@DOMAIN.NAME'
В случае успешного завершения процесса смещения в конце лога операции будет выведено сообщение:
Demote successful
-
Убедитесь, что контроллер выведен из домена:
-
выполните вход на любой другой контроллер в домене под учетной записью с необходимыми правами;
-
убедитесь, что выведенный из домена контроллер отсутствует в списке работающих контроллеров:
-
с помощью утилиты
samba-tool:samba-tool computer list --base-dn "OU=Domain Controllers"
-
с помощью утилиты
ldapsearch:ldapsearch -H ldap://dc-name.domain.name -b 'OU=Domain Controllers,DC=domain,DC=name' '(objectClass=computer)'
Если утилита отсутствует, предварительно установите ее:
sudo apt install ldap-utils
-
на участнике домена под управление ОС Windows в списке контроллеров в оснастке Remote Server Administration Tools (RSAT):
-
запустите RSAT;
-
в списке контейнеров в домене в панели слева нажмите Domain Controllers;
-
-
-
убедитесь, что в логах команд репликации отсутствуют записи, относящиеся к выведенному из домена контроллеру; например:
samba-tool drs kcc -U 'Administrator@DOMAIN.NAME' samba-tool drs showrepl -U 'Administrator@DOMAIN.NAME'
-
убедитесь, что для выведенного контроллера отсутствуют записи DNS:
samba-tool dns query 127.0.0.1 _msdcs.domain.name @ ALL -U 'Administrator@DOMAIN.NAME'
-
-
Если контроллер домена также выполнял функции DNS-сервера для определенных зон DNS, убедитесь, что участники домена и другие контроллеры домена больше не используют его для разрешения зон DNS.
После понижения сервер остается в домене в роли рядового участника.
Чтобы удалить его из домена, выполните вход на работающий контроллер домена под учетной записью с необходимыми правами:
-
убедитесь, что сервер присутствует в списке участников домена:
samba-tool computer list
-
удалите учетную запись сервера, указав имя хоста (
demoted-dc-nameв примере):samba-tool computer delete demoted-dc-name
Удаление недоступного контроллера домена
Для удаления из домена контроллера (RWDC или RODC), который по какой-либо причине оказался недоступен и не может быть снова подключен к сети:
-
Выполните вход на любой работающий контроллер домена в лесу, используя локальную учетную запись с правами суперпользователя.
-
Убедитесь, что удаляемый сервер входит в список контроллеров домена, любым из доступных способов. Например:
-
с помощью утилиты
samba-tool:samba-tool computer list --base-dn "OU=Domain Controllers"
-
с помощью утилиты
ldapsearch:ldapsearch -H ldap://dc-name.domain.name -b 'OU=Domain Controllers,DC=domain,DC=name' '(objectClass=computer)'
Если утилита отсутствует, предварительно установите ее:
sudo apt install ldap-utils
-
на участнике домена под управление ОС Windows в списке контроллеров в оснастке Remote Server Administration Tools (RSAT):
-
запустите RSAT;
-
в списке контейнеров в домене в панели слева нажмите Domain Controllers.
-
-
-
Проверьте наличие у контроллера FSMO-ролей:
samba-tool fsmo show
При необходимости выполните захват ролей, передав их другим контроллерам домена (см. подробнее в разделе «Администрирование ролей FSMO»):
-
выполните вход на целевой контроллер домена под учетной записью с необходимыми для передачи роли правами;
-
выполните подкоманду захвата роли, указав ее имя с помощью ключа
--role:samba-tool fsmo seize --role=<role>
-
-
Убедитесь, что удаляемый контроллер домена не является единственным сервером глобального каталога в лесу:
samba-tool gc list
При необходимости включите роль сервера глобально каталога на других контроллерах в домене (см. подробнее в разделе «Администрирование роли Global Catalog»):
-
выполните вход на целевой контроллер домена под учетной записью с необходимыми для передачи роли правами;
-
выполните подкоманду включение роли глобального каталога:
samba-tool gc enable
-
-
Для проверки корректности удаления записей DNS после операции понижения получите и сохраните
objectGUIDконтроллера домена, указав его имя хоста (DC-NAMEв примере):ldbsearch -H /app/inno-samba/private/sam.ldb '(invocationId=*)' --cross-ncs objectguid | grep -A1 DC-NAME
-
Выполните операцию удаления с указанием имени удаляемого контроллера в качестве значения параметра
--remove-other-dead-server:samba-tool domain demote \ -U 'Administrator@DOMAIN.NAME' \ --remove-other-dead-server=DC-NAME -
Убедитесь, что контроллер выведен из домена:
-
выполните вход на любой другой контроллер в домене под учетной записью с необходимыми правами;
-
убедитесь, что выведенный из домена контроллер отсутствует в списке работающих контроллеров:
-
с помощью утилиты
samba-tool:samba-tool computer list --base-dn "OU=Domain Controllers"
-
с помощью утилиты
ldapsearch:ldapsearch -H ldap://dc-name.domain.name -b 'OU=Domain Controllers,DC=domain,DC=name' '(objectClass=computer)'
Если утилита отсутствует, предварительно установите ее:
sudo apt install ldap-utils
-
на участнике домена под управление ОС Windows в списке контроллеров в оснастке Remote Server Administration Tools (RSAT):
-
запустите RSAT;
-
в списке контейнеров в домене в панели слева нажмите Domain Controllers;
-
-
-
убедитесь, что в логах команд репликации отсутствуют записи, относящиеся к выведенному из домена контроллеру; например:
samba-tool drs kcc -U 'Administrator@DOMAIN.NAME' samba-tool drs showrepl -U 'Administrator@DOMAIN.NAME'
-
убедитесь, что для выведенного контроллера отсутствуют записи DNS:
samba-tool dns query 127.0.0.1 _msdcs.domain.name @ ALL -U 'Administrator@DOMAIN.NAME'
-
-
Если контроллер домена также выполнял функции DNS-сервера для определенных зон DNS, убедитесь, что участники домена и другие контроллеры домена больше не используют его для разрешения зон DNS.
Удаление объектов krbtgt и computer, связанных с недоступным контроллером домена, вручную
При попытке удаления недоступного сервера контроллера домена с помощью подкоманды samba-toool domain demote c опцией --remove-other-dead-server может быть возвращено следующее предупреждение:
Failed to remove DS server via RPC call! Will try to remove DS server via LDAP You will need to manually delete the computer and Kerberos TGT objects from the Recycle Bin
В этом случае необходимо вручную удалить из корзины объекты krbtgt и computer, связанные с недоступным сервером, с помощью утилиты ldbdel.
Для этого выполните следующие действия:
-
Выполните поиск объектов для удаления с помощью утилиты
ldbsearch:ldbsearch -H ldap://<server> -b "<full_domain_nc>" "CN=<ro_dc_server_name>*" -U<user_name>%<password> --show-deleted ldbsearch -H ldap://<server> -b "<full_domain_nc>" "CN=krbtgt*" -U<user_name>%<password> --show-deleted
Параметры вызова
ldbsearch:-
server— IP-адрес или доменное имя сервера LDAP для выполнения поиска; -
full_domain_nc— DN доменного раздела каталога; -
ro_dc_server_name— имя удаляемого недоступного сервера; -
user_name%password— имя и пароль пользователя с доступом к LDAP-серверу на запись.
Например:
ldbsearch -H ldap://WIN-DC1 -b "DC=SAMDOM,DC=EXAMPLE,DC=COM" "CN=krbtgt_*" -UAdministrator%Passw0rd --show-deleted ldbsearch -H ldap://WIN-DC1 -b "DC=SAMDOM,DC=EXAMPLE,DC=COM" "CN=SMB-DC2*" -UAdministrator%Passw0rd --show-deleted
-
-
Удалите объекты из корзины с помощью утилиты
ldbdel:sudo ldbdel -H ldap://<server> "CN=krbtgt_<index>\0ADEL:<guid>,CN=Deleted Objects,<full_domain>" -U<user_name>%<password> --show-deleted sudo ldbdel -H ldap://<server> "CN=<computer>\0ADEL:<guid>,CN=Deleted Objects,<full_domain>" -U<user_name>%<password> --show-deleted
Параметры вызова
ldbdel:-
server— IP-адрес или доменное имя сервера LDAP, через который должно выполняться удаление; -
index— индекс удаляемого объектаkrbtgt, полученный на предыдущем шаге; -
computer— имя удаляемого объектаcomputer; -
guid— уникальный идентификатор удаляемого объекта, полученный на предыдущем шаге; -
full_domain— DN домена; -
user_name%password— имя и пароль пользователя с доступом к LDAP-серверу на запись.
Например:
ldbdel -H ldap://WIN-DC1 "CN=krbtgt_12975\0ADEL:515ab994-9db3-4d93-913d-e72231a427d0,CN=Deleted Objects,DC=SAMDOM,DC=EXAMPLE,DC=COM" -U Administrator%Passw0rd --show-deleted ldbdel -H ldap://WIN-DC1 "CN=SMB-DC2\0ADEL:6bc18713-9d8a-4f73-8e73-9b1a8b26acbd,CN=Deleted Objects,DC=SAMDOM,DC=EXAMPLE,DC=COM" -U Administrator%Passw0rd --show-deleted
-
Формат вызова
Общий формат вызова:
samba-tool domain demote [options]
В процессе выполнения операции:
-
локальные изменения в базе данных работающего контроллера домена реплицируются на один из доступных контроллеров домена;
-
сервер удаляется из списка контроллеров домена и переводится в разряд рядовых участников;
-
в базе данных службы каталогов удаляются связанные с контроллером объекты, обеспечивающие его участие в процессах репликации и т. д.;
-
удаляются относящиеся к контроллеру домена записи DNS.
В случае успешного завершения операции сервер переводится в разряд рядовых участников домена.
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
--remove-other-dead-server=REMOVE_OTHER_DEAD_SERVER— контроллер домена (имя или NTDS GUID), все ссылки на который должны быть удалены;При использовании параметра выполняется попытка удаления недоступного сервера с помощью RPC-вызова. В случае неуспешного завершения операции возвращается предупреждение:
Failed to remove DS server via RPC call! Will try to remove DS server via LDAP You will need to manually delete the computer and Kerberos TGT objects from the Recycle Bin
В этом случае необходимо вручную удалить из корзины объекты
krbtgtиcomputer, связанные с недоступным сервером, с помощью утилитыldbdel(см. «Удаление объектов krbtgt и computer, связанных с недоступным контроллером домена, вручную»). -
--server=SERVER— доступный для записи контроллер домена (RWDC) для фиксации изменений, связанных с понижением роли; -
--demote-operation-master-role— принудительное выполнение операции при наличии у контроллера домена FSMO-роли;Если опция не установлена и контроллер домена является владельцем FSMO-роли, выдается предупреждение о необходимости передачи роли другому контроллеру домена и операция прерывается.
Если опция установлена, контроллер домена является владельцем FSMO-роли и не установлена опция--force, выдается запрос на явное подтверждение принудительного выполнения операции. -
--force— принудительное выполнение операции без запроса подтверждения необходимости продолжения в случае наличия у контроллера домена FSMO-роли; -
-v|--verbose— вывод диагностических сообщений во время работы подкоманды; -
-q|--quiet— отключение вывода диагностических сообщений во время работы подкоманды.
Примеры
Пример понижения роли текущего работающего сервера:
samba-tool domain demote -U 'Administrator@SAMDOM.EXAMPLE.COM'
Пример понижения роли текущего работающего сервера с явным указанием целевого сервера, на который должны реплицироваться локальные изменения:
samba-tool domain demote \ -U 'Administrator@SAMDOM.EXAMPLE.COM' \ --server=DC1
Пример принудительного понижения роли текущего работающего сервера, несмотря на наличие FSMO-ролей, без запроса подтверждения:
samba-tool domain demote \ --demote-operation-master-role \ --force \ -U 'Administrator@SAMDOM.EXAMPLE.COM'
Пример удаления роли контроллера домена для недоступного сервера в удаленном режиме:
samba-tool domain demote \
-U 'Administrator@SAMDOM.EXAMPLE.COM' \
--remove-other-dead-server=DC2
Пример удаления роли контроллера домена для недоступного сервера в удаленном режиме с явным указанием сервера, через который должна выполняться операция удаления:
samba-tool domain demote \
-U 'Administrator@SAMDOM.EXAMPLE.COM' \
--remove-other-dead-server=DC2 \
--server=DC1
Пример удаления объектов из корзины вручную в случае неуспешного завершения операции для недоступного сервера:
-
удаление объекта
krbtgt:sudo ldbdel -H ldap://WIN-DC1 "CN=krbtgt_13745\0ADEL:2fdb1731-e022-43a2-b9fc-2a14bcb62e8d,CN=Deleted Objects,DC=samdom,DC=example,DC=com" --show-deleted -U Administrator
-
удаление объекта
computer:sudo ldbdel -H ldap://WIN-DC1 "CN=SMB-DC2\0ADEL:fda13375-5027-4870-b05a-090f5000437b,CN=Deleted Objects,DC=samdom,DC=example,DC=com" --show-deleted -U Administrator