Как сохранить доступ к SMB при смене сервера (CNAME + SPN)

Есть файловый сервер:

  • Старый адрес:
    \\smb-old.piksrv.ru\files\
  • Новый сервер:
    \\smb.piksrv.ru\files\

Старый сервер выведен из эксплуатации, данные перенесены на новый.
Задача — чтобы пользователи могли продолжать работать по старому адресу без проблем.


Проблема

Если просто создать DNS-алиас (CNAME):

smb-old → smb

то при подключении:

\\smb-old.piksrv.ru\files\

пользователи получат:
запрос логина/пароля


Почему так происходит

  • DNS работает корректно
  • Но Kerberos требует точное совпадение имени сервера (SPN)
  • Для алиаса (CNAME) SPN по умолчанию отсутствует

В итоге:

  • Kerberos не срабатывает
  • Переход на NTLM → запрос пароля

Решение

Нужно добавить SPN для алиаса на новый сервер.


Шаг 1. Проверка (важно!)

На контроллере домена:

setspn -Q cifs/smb-old.piksrv.ru
setspn -Q cifs/smb-old

Ожидаемый результат:

No such SPN found

Шаг 2. Добавление SPN

setspn -S cifs/smb-old.piksrv.ru smb
setspn -S cifs/smb-old smb

Где:

  • smb — имя нового сервера (NetBIOS)

Шаг 3. Проверка

setspn -L smb

Должно появиться:

cifs/smb-old.piksrv.ru
cifs/smb-old

Шаг 4. Проверка с клиента

klist purge

После этого:

\\smb-old.piksrv.ru\files\

Должно открыться без запроса логина


Альтернатива через GUI

  1. Открыть Active Directory Users and Computers
  2. Включить: View → Advanced Features
  3. Найти компьютер: smb
  4. Свойства → Attribute Editor
  5. Атрибут: servicePrincipalName
  6. Добавить: cifs/smb-old.piksrv.ru
    cifs/smb-old

Важные моменты

Не допускайте дубликатов SPN

Перед добавлением обязательно проверяйте:

setspn -Q <SPN>

Используйте -S, а не -A

  • -S проверяет уникальность
  • -A может создать конфликт

Перезапуск не требуется

Изменения применяются сразу (иногда помогает klist purge)


#CNAME+SPN #CNAME #SMB