Service Principal Name (SPN)

Материал из СисадминВики (SysadminWiki.ru)
Перейти к: навигация, поиск


Общая информация

Service Principal Name (SPN) - Первичное имя сервиса. Это в некотором роде Windows аналог /etc/hosts в Linux. Здесь указываются имена сервера, которые используются установленными на нём сервисами. Только в SPN могут заводиться записи не только для компьютеров, но и для пользователей. Официальное название объекта в SPN: участник-служба.


Команда setspn

  • Посмотреть все записи SPN можно командой:
setspn -L <Имя сервера>
  • Добавить новый новое DNS имя newname.domain.local для сервера servname можно командой:
setspn -a host/newname.domain.local servname
  • команда setspn запущенная без параметров, покажет как и для чего ей можно пользоваться, а также предоставит примеры.


Работа над ошибками

Не доступны сетевые ресурсы сервера по DNS имени

Такое может произойти в случае если DNS имя компьютера не совпадает c "простым" NetBIOS именем.

Например, у нас компьютера (сервер) имеет несколько имён:

  • Alfa - простое имя компьютера, имя NetBIOS
  • alfa.domain.local - имя в домене , но мы также создали ему псевдоним (алиас, alias, CNAME запись в DNS)
  • music.domain.local - псевдоним (алиас, alias, CNAME запись в DNS) по выполняемой функции
  • zeta.domain2.local - DNS имя (CNAME запись) в другом домене

В описанном случае замечались проблемы с получением списка SMB ресурсов сервера по DNS имени, хотя все имена разрешались (резолвились) корректно и пинговались (ping). Причём проблема была при обращение с компьютеров Windows XP, с Windows 7 все ресурсы были доступны.

Решается проблема добавлением SPN записей на сервере (не всегда[1]). Для нашего случая это выполняется командами, запускаемыми на alfa:

setspn -a host/music.domain.local alfa
setspn -a host/zeta.domain2.local alfa


Сноски


  1. Проблема решается не всегда. Windows XP использует для обращения к сетевым файловым ресурсам UNC имена и DNS не понимает. Однако, если последний уровень DNS имени совпадает с NetBIOS именем, то работать будет, например alfa.domain.local и alfa

Полезные ссылки