# 📘 Методическое руководство: Завершение миграции на Samba AD DC (`lin-dc1`) > **Цель:** Полностью удалить остатки старого Windows DC (`win-dc`), очистить DNS и AD, применить корректную конфигурацию Samba и провести финальную диагностику домена `AU.TEAM`. > **Требования:** Доступ `root`/`sudo`, учётные данные `administrator`, установленный и работающий Samba 4.x. --- ## 🔹 Этап 1. Синхронизация данных (если `win-dc` ещё доступен) *Выполняется **до** вывода Windows DC из домена, чтобы гарантировать актуальность данных на `lin-dc1`.* ```bash # Принудительная репликация всех разделов AD samba-tool drs replicate lin-dc1 WIN-DC DC=DomainDnsZones,DC=au,DC=team --full samba-tool drs replicate lin-dc1 WIN-DC DC=ForestDnsZones,DC=au,DC=team --full samba-tool drs replicate lin-dc1 WIN-DC DC=au,DC=team --full # Обновление всех DNS-записей на lin-dc1 samba_dnsupdate --all-names --verbose ``` ✅ **Проверка:** Убедитесь, что `lin-dc1` успешно резолвится как контроллер домена: ```bash host -t SRV _kerberos._udp.au.team 127.0.0.1 host -t SRV _ldap._tcp.au.team 127.0.0.1 ``` --- ## 🔹 Этап 2. Очистка DNS от записей старого DC *Удаляем A-запись и NS-запись `win-dc`, чтобы клиенты не обращались к несуществующему серверу.* ```bash # Удаление A-записи samba-tool dns delete localhost au.team win-dc A 192.168.1.2 -U administrator # Удаление NS-записи samba-tool dns delete localhost au.team @ NS win-dc.au.team. -U administrator ``` 🔍 **Контроль:** Вывод должен быть пустым. ```bash samba-tool dns query localhost au.team @ ALL | grep -i win ``` --- ## 🔹 Этап 3. Удаление остатков репликации из AD *Ошибки `WERR_DS_DRA_BUSY` и `WERR_DS_ADD_REPLICA_INHIBITED` в логах указывают на то, что Samba пытается реплицироваться с удалённым `win-dc`. Необходимо удалить ссылку на его NTDS Settings.* ```bash # 1. Поиск объекта репликации старого DC ldbsearch -H /var/lib/samba/private/sam.ldb --cross-ncs "(&(objectClass=nTDSDSA)(cn=*))" distinguishedName | grep -i win ``` 📌 *Если команда вернула строку вида `CN=NTDS Settings,CN=WIN-DC,CN=Servers...`, выполните удаление:* ```bash # 2. Удаление объекта (замените DN на реальный из вывода выше!) ldbmodify -H /var/lib/samba/private/sam.ldb << 'EOF' dn: CN=NTDS Settings,CN=WIN-DC,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=au,DC=team changetype: delete EOF ``` 💡 *Если `ldbmodify` сообщает, что объект не найден — значит, ссылка уже удалена. Ошибки исчезнут после перезапуска службы.* --- ## 🔹 Этап 4. Проверка конфигурации `smb.conf` Убедитесь, что `/etc/samba/smb.conf` содержит корректные параметры. Особенно важен раздел `[global]`: ```ini [global] netbios name = LIN-DC1 realm = AU.TEAM server role = active directory domain controller workgroup = AU # Полный список обязательных служб для AD DC server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate, dns # ⚠️ ВАЖНО: После удаления win-dc замените 192.168.1.2 на внешний DNS # (например, 8.8.8.8, 1.1.1.1 или IP маршрутизатора) dns forwarder = 192.168.1.2 ``` 🔄 *После редактирования: `systemctl restart smbd nmbd winbind` (если используется systemd-интеграция, достаточно перезапуска `samba`)* --- ## 🔹 Этап 5. Перезапуск служб и синхронизация времени *Корректное время критично для Kerberos.* ```bash # Синхронизация времени на lin-dc1 chronyc -a makestep # Перезапуск Samba systemctl restart samba.service sleep 5 # Проверка логов на наличие критических ошибок journalctl -u samba.service -n 20 --no-pager | grep -i error ``` 🖥️ *Для Windows-клиентов/серверов (опционально):* ```cmd net time \\192.168.1.3 /set /y ``` --- ## 🔹 Этап 6. Комплексная диагностика (Чек-лист) | № | Проверка | Команда | Ожидаемый результат | |---|----------|---------|---------------------| | 1 | **FSMO-роли** | `samba-tool fsmo show` | Все 5 ролей: владелец `CN=LIN-DC1,...` | | 2 | **Репликация** | `samba-tool drs showrepl` | Без ошибок `FAIL`/`ERROR`. Для одиночного DC разделы могут не показываться (норма) | | 3 | **DNS SRV-записи** | `host -t SRV _ldap._tcp.au.team 127.0.0.1`
`host -t SRV _kerberos._udp.au.team 127.0.0.1` | Возвращают `lin-dc1.au.team` | | 4 | **Зоны и записи DNS** | `samba-tool dns zone list`
`samba-tool dns query localhost au.team @ ALL` | Зона `au.team` активна. Записи `win-dc` отсутствуют | | 5 | **Пользователи и группы** | `samba-tool user list`
`samba-tool group list`
`samba-tool user show administrator` | Список загружается. `administrator` активен | | 6 | **Аутентификация** | `kinit administrator@AU.TEAM`
`klist` | Билет Kerberos получен успешно | | 7 | **Вхождение в домен** | `net ads testjoin` | `Join is OK` | | 8 | **Уровень домена** | `samba-tool domain level show` | Отображает актуальный уровень (например, `2012 R2` или выше) | | 9 | **Логи службы** | `journalctl -u samba.service -n 50 --no-pager` | Нет повторяющихся `ERROR`/`CRITICAL` | --- ## ⚠️ Важные примечания и рекомендации 1. **DNS Forwarder:** Параметр `dns forwarder = 192.168.1.2` в `smb.conf` указывает на старый Windows DC. После его полного вывода из сети замените его на внешний DNS-резолвер, иначе внутренние запросы к несуществующим зонам будут таймаутить. 2. **Резервное копирование:** Перед выполнением `ldbmodify` и удалением DNS-записей рекомендуется сделать бэкап: `cp -a /var/lib/samba/private /var/lib/samba/private.backup` 3. **Одиночный DC:** Если в домене остался только `lin-dc1`, разделы репликации могут не отображаться в `samba-tool drs showrepl`. Это штатное поведение. 4. **Клиентские настройки:** Убедитесь, что на всех рабочих станциях в настройках сетевого адаптера указан `192.168.1.3` (или IP `lin-dc1`) как **единственный** DNS-сервер. 5. **Права:** Все команды `samba-tool` и `ldbsearch/modify` требуют запуска от `root` или через `sudo`, а также валидных доменных учётных данных (`-U administrator`). --- 📅 *Документ подготовлен для домена `AU.TEAM`, контроллер `LIN-DC1`. Дата актуализации: 19.04.2026* 🔧 *При возникновении нестандартных ошибок предоставляйте вывод `journalctl -u samba.service --since "1 hour ago"` и `samba-tool drs showrepl` для анализа.*