Настройка nfs сервера на windows 2008

Всем привет сегодня рассмотрим как установить NFS server в Windows Server 2008 R2. Эта тема в догонку к ранее уже описанной Как установить NFS server в Windows Server 2012 R2. Давайте попробуем сделать из нашего сервера под управлением Windows Server 2008 R2 хранилище виртуальных машин по протоколу NFS. Для этого мы с вами установим специальную роль через графические и консольные средства.

Обновлено 26.07.2016

Как установить NFS server в Windows Server 2008 R2

Как установить NFS server в Windows Server 2008 R2

Всем привет сегодня рассмотрим как установить NFS server в Windows Server 2008 R2. Эта тема в догонку к ранее уже описанной Как установить NFS server в Windows Server 2012 R2. Давайте попробуем сделать из нашего сервера под управлением Windows Server 2008 R2 хранилище виртуальных машин по протоколу NFS. Для этого мы с вами установим специальную роль через графические и консольные средства.

Как установить NFS роль через графический интерфейс

Для установки NFS server откройте Диспетчер сервера и нажимаем Добавить роли

Как установить NFS server в Windows Server 2008 R2-01

Как установить NFS server в Windows Server 2008 R2-01

Выбираем в мастере установки Файловые службы

Как установить NFS server в Windows Server 2008 R2-02

Как установить NFS server в Windows Server 2008 R2-02

Далее будет окно которое познакомит вас с данной ролью пропускаем его.

Как установить NFS server в Windows Server 2008 R2-03

Как установить NFS server в Windows Server 2008 R2-03

Выбираем компонент Службы для NFS

Как установить NFS server в Windows Server 2008 R2-04

Как установить NFS server в Windows Server 2008 R2-04

Установить.

Как установить NFS server в Windows Server 2008 R2-05

Как установить NFS server в Windows Server 2008 R2-05

Пройдет немного времени и роль установится.

Как установить NFS server в Windows Server 2008 R2-06

Как установить NFS server в Windows Server 2008 R2-06

Как установить NFS роль через консоль

Для решения данной задачи нам поможет команда servermanagercmd. Открывает командную строку и вводим

servermanagercmd -install FS-FileServer -FS-NFS-Services

Как установить NFS server в Windows Server 2008 R2-07

Как установить NFS server в Windows Server 2008 R2-07

Вот так вот просто установить NFS server в Windows Server 2008 R2.

Материал сайта pyatilistnik.org

Июл 26, 2016 23:31

Используя сетевую файловую систему NFS можно предоставить доступ серверам ESXi к файловым ресурсам или дисковой емкости другого оборудования, работающего под различными ОС. Например, удобно сделать доступными iso-образы, чтобы проще было их подключать к CD-ROM накопителям виртуальных машин.

Рассмотрим порядок установки и настройки связки NFS сервиса и VMware ESXi на примере сервера под Windows 2008 в самом простом варианте, без использования Active Directory:

1. Устанавливаем необходимые роли, а именно «Файловые службы» и ниже по иерархии «Служба для NFS».

2. После того как установка закончится, рекомендуется проверить, работает ли сервис «Служба для NFS» и открыт ли порт 111.

Иногда установке NFS сервиса может помешать уже работающая программа или служба, использующая тот же 111 порт. Например, так себя может вести «ONC/RPC Portmapper». В таком случае придется решить конфликт, отключив данный сервис.

3. Далее заходим в свойства той папки, которую будем расшаривать по NFS. Переключаемся на закладку «Совместный доступ NFS».

4. Нажимаем «Управление доступом NFS» и переходим в новое окно. Устанавливаем следующие настройки:

5. Ставим галку «Открыть общий доступ к этой папке», именуем общий ресурс, хотя лучше оставить имя по-умолчанию. Далее снимаем две следующие галки, оставляя «Не использовать серверную проверку подлинности» и устанавливаем «Разрешить доступ несопоставленным пользователям», затем «Разрешить анонимный доступ» и в полях анонимных UID и GID пишем идентификатор встроенного пользователя ESXi для работы с NFS(

nfsnobody

): 65534.

6. Нажимаем «Разрешения»:

7. В данном окне нужно выбрать тип доступа и обязательно поставить галку «Разрешить доступ с правами root». Тут также можно более подробно настроить доступ хостов к серверу NFS. На картинке показана лишь одна группа по-умолчанию, но с помощью консольной утилиты «nfsadmin« можно создать свои группы(«nfsadmin server creategroup MyGroup») и добавить туда необходимые клиенты(«nfsadmin server addmembers MyGroup \MyESXiHost»).

8. Далее заходим в свойство расшариваемой директории в параметры безопасности и добавляем требуемые права для файловой системы NTFS локальной группе «АНОНИМНЫЙ ВХОД».

9.  Если нужен доступ не только на чтение, но и на запись, в настройках локальной политики безопасности нужно обязательно включить параметр «Сетевой доступ: разрешать применение разрешений «Для всех» к анонимным пользователям»(«Локальные политики -> Параметры безопасности»).

10. Продолжаем настройку на стороне ESXi. В vSphere Client выберите нужный сервер, затем переходим на

«Configuration»->»Storage»->»Add Storage»

. Выбираем «Network File System»:

 11. Заполняем параметры подключения(

имя сервера

,

название шары на сервере

,

название хранилища на ESXi

). Устанавливаем галочку «Mount NFS read only» если доступ должен быть только в режиме чтения.

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

Согласитесь, и у Вас когда-либо возникала проблема с нехваткой дискового пространства на ESX. И само-собой встает вопрос, а что делать??? Конечно самое простое это добавить хардов и проблема решена, но не всегда это возможно, к примеру, нет денег на HDD или же еще хуже, закончились свободные отсеки для HDD. И опять же что делать?
Если у Вас к примеру есть сервер, работающий на Windows 2008 R2, и на нем есть достаточно свободного места, то его можно прекрасно использовать для наших целей.

Итак переходим от прелюдий к практике:
1. Заходим Start > Administrative Tools > Server Manager

Выбираем Roles и нажимаем Add Roles:

Далее выбираем Роль File Services

В следующем меню нас интересует только  Services for Network File System:

Нажимаем Далее и устанавливает данную Роль.

Если данный Windows 2008 Server не является контроллер AD, то устанавливаем Роль Active Directory Domain Services, иначе пропускаем этот пункт и делаем все дальше.

P.S. Как устанавливать AD думаю описывать не стоит…

В окне Server Manager в категории Active Directory жмем Add Roles Services 

Устанавливаем Роль маппинг в AD для UNIX-систем.

 После установки перегружаем сервер.

После перезагрузки сервера запускаем Active Directory Users and Computers из меню Administrative Tools. Раскрываем дерево домена и выбираем OU Users:

Добавляем новую группу:

Нажимаем ОК и открываем группу еще раз, переходим на закладку UNIX Attributes, тут в качестве NIS Domain выбираем имя домена и устанавливаем GID (Group ID) в 0

С группами покончили, создаем User и добавляем его в нашу созданную группу UnixGroup. Далее перейдите на вкладку UNIX Attributes. Там в качестве NIS Domain выбираем имя домена и устанавливаем GID (Group ID) в 0. Это позволит серверу VMware ESX получить доступ к NFS-ресурсу для пользователя.

Теперь в Administrative Tools открываем Service for Network File System (NFS). Нажимаем правой кнопкой на Services for NFS и выбираем Properties:

На вкладке General Settings в поле Identity mapping source вводим имя домена:

Теперь создаем папку, где будут храниться виртуальные машины на хранилище NFS. Заходим в ее свойства и переходим на вкладку NFS Sharing, жмем Manage NFS Sharing.

Далее попадаем в окно, где ставил галочку Share this folder и вводим Share name (!без пробела!), а также ставим как изображено на картинке Allow anonymous access:

Нажимаем кнопку Permissions и меняем тип доступа на Read-Write, так же ставим галку: Allow root access checkbox.

Если все получилось, то в поле Network Path в свойствах NFS-шары будет отображен путь к этому ресурсу. 

С виндой закончили, теперь заходим в наш родной vSphere Client, жмем Add Storage, указываем Network File System указываем FQDN-имя сервера Windows 2008 Server R2, в поле Folder указываем имя папки на Windows Server, а в поле Datastore Name указываем имя нового виртуального хранилища NFS.

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

Всем удачи, с Вами был valhome ;)

настройка NFS для авторизации в windows 2008 R2Доброго времени, уважаемые читатели и гости блога! В продолжении прошлой темы о NFS, хочу опубликовать небольшой мануал как настроить экспортированные каталоги NFSv4 на проверку подлинности через Active Directory на Windows 2008 R2. Данный пост я реализовывал на дистрибутиве Debian. Удачно заставить работать NFSv4 и AD на Windows 2008 мне удалось только на тестовой версии — wheezy с ядром 3.0.0. На версии squeeze до сих пор идут дебаты по поводу ошибки

Nov 17 11:20:49 archiv rpc.svcgssd[13849]: ERROR: GSS-API: error in handle_nullreq: gss_accept_sec_context(): 
GSS_S_FAILURE (Unspecified GSS failure.  Minor code may provide more information) - 
No supported encryption types (config file error?)

Если появится какое-либо решение этой проблемы, то я обновлю пост…

План интеграции Active Directory на Windows 2008 R2 и NFSv4 на Linux (Debian wheezy)

В целом, организацию проверки подлинности ресурсов NFS посредством Kerberos можно представить в виде следующей последовательности шагов:

1. Настроить NFS и проверить работоспособность без Kerberos по протоколу NFSv4

  1. Настройка NFSv4 на сервере
  2. Настройка NFSv4 на клиенте.

2. Настроить Kerberos

  1. Предварительная настройка DNS и контроллера домена.
  2. Настройка синхронизации времени (на основе демона ntpd)
  3. Настроить и проверить Kerberos на идентификацию пользователя без ключевого файла krb5.keytab.
  4. Создать ключевой файл krb5.keytab на KDC (контроллер домена Windows 2008 R2)
  5. Настроить и проверить работу Kerberos для авторизации через krb5.keytab

3. Настроить NFSv4 на проверку подлинности через Kerberos.

  1. Настроить и проверить работу сервера NFSv4 на Debian
  2. Настроить и проверить работу клиента NFSv4 на Debian

4. Траблешуттинг Troubleshooting

Давайте подробней разберем каждый шаг.

Исходные данные для организации NFS

  • доменDOMAIN.LOCAL
  • DNS-имя контроллера доменаDC.DOMAIN.LOCAL
  • IP-адрес контроллера домена 10.0.0.4
  • NFS-server
    • DNS-имя NFS сервера — NFSD.DOMAIN.LOCAL
    • IP-адрес NFS сервера — 10.0.0.50
  • NFS-client
    • DNS-имя NFS сервера — NFSC.DOMAIN.LOCAL
    • IP-адрес NFS сервера — 10.0.0.51

1. Настройка NFSv4 без Kerberos

1.1., 1.2. Настройка NFSv4 сервера и клиента

Я решил объединить эти 2 пункта, т.к. они содержат очень похожие шаги. Поэтому начнем настройку с общих этапов для клиента и сервера. Итак, и на клиенте и на сервере необходимо настроить сеть в Debian. (Так же можно почитать статью основные понятия сетей). На сервере и клиенте необходим установленный пакет nfs-common с необходимыми зависимостями (portmap). Для того чтобы протокол Kerberos работал корректно, необходимо обязательно правильно настроить файлы /etc/hosts, /etc/hostname, /etc/resolv.conf, ну и конечно /etc/network/interfaces. Для того чтобы избавиться от возможных ошибок при работе к Kerberos, необходимо учесть некоторые нюансы (хотя и без этих нюансов скорей всего заработает), которые я отмечу комментариями:

root@nfsc:~# cat /etc/hosts
10.0.0.51       nfsc.DOMAIN.local  nfsc
127.0.0.1       localhost
# для Kerberos советуют указывать именно такой порядок
# то есть первой строкой именно 10.0.0.51 (внешний IP, не loopback)
root@nfsc:~# cat /etc/hostname
nfsc
root@nfsc:~# cat /etc/resolv.conf
domain DOMAIN.local
search DOMAIN.local
nameserver 10.0.0.4
root@nfsc:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.0.0.51
        netmask 255.255.0.0
        gateway 10.0.0.254
==================================
root@nfsd:~# cat /etc/hosts
10.0.0.50       nfsd.DOMAIN.local  nfsd
127.0.0.1       localhost

root@nfsd:~# cat /etc/hostname
nfsd
root@nfsd:~# cat /etc/resolv.conf
domain DOMAIN.local
search DOMAIN.local
nameserver 10.0.0.4
root@nfsd:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 10.0.0.50
        netmask 255.255.0.0
        gateway 10.0.0.254

Думаю видно, где тут сервер, где тут клиент? Если все же — нет, то как я уже говорил выше nfsd — это сервер и имеет строку root@nfsd:~#, а nfsс — это клиент и имеет строку root@nfsc:~#. На клиенте и на сервере необходимо иметь установленный пакет nfs-common, как он устанавливается и из чего он состоит я писал в прошлой статье. В конфигурационном файле NFS клиента (/etc/default/nfs-common) необходимо добавить «yes» в параметр NEED_IDMAPD=yes и NEED_GSSD=yes. Это разрешить запуск демонов rpc.idmapd и rpc.gssd, которые необходимы для работы интерфейса GSS-API для взаимодействия с Kerberos. После этого, необходимо перезапустить nfs-common на обеих машинах.

root@nfsс:~# service nfs-common restart
Stopping NFS common utilities: gssd idmapd statd.
Starting NFS common utilities: statd idmapd gssd.

Далее, настройка производится на cервере. На сервере NFS необходимо установить пакет nfs-kernel-server. И задать экспортируемые каталоги в файле /etc/exports, перезапустить сервер и проверить сделанное командой showmount:

root@nfsd:~# mkdir /nfs
root@nfsd:~# vim /etc/exports
root@nfsd:~# cat /etc/exports
/nfs    10.0.0.51(rw,sync,no_subtree_check) 10.0.0.50(rw,sync,no_subtree_check)
root@nfsd:~# service nfs-kernel-server restart
Stopping NFS kernel daemon: mountd nfsd.
Unexporting directories for NFS kernel daemon....
Exporting directories for NFS kernel daemon....
Starting NFS kernel daemon: nfsd mountd.
root@nfsd:~# showmount -e
Export list for nfsd:
/nfs 10.0.0.50,10.0.0.51

На этом настройка сервера и клиента завершена. Давайте проверим наши настройки. Сначал необходимо попробовать смонтировать экспортированный каталог локально на сервере по протоколу NFSv4:

root@nfsd:~# mount -v -t nfs4 10.0.0.50:/nfs /mnt
mount.nfs4: timeout set for Fri Nov 18 12:20:52 2011
mount.nfs4: trying text-based options 'addr=10.0.0.50,clientaddr=10.0.0.50'
10.0.0.50:/nfs on /mnt type nfs4 (rw)
root@nfsd:~# mount | grep nfs4
10.0.0.50:/nfs on /mnt type nfs4 (rw,addr=10.0.0.50,clientaddr=10.0.0.50)

Как видно, монтирование произошло удачно. Более подробно о команде mount тут, а еще подробней — в man mount. Теперь проверим возможность удаленного монтирования с клиентской машины:

root@nfsc:~# mount -v -t nfs4 10.0.0.50:/nfs /mnt
mount.nfs4: timeout set for Fri Nov 18 11:01:16 2011
mount.nfs4: trying text-based options 'addr=10.0.0.50,clientaddr=10.0.0.51'
10.0.0.50:/nfs on /mnt type nfs4 (rw)
root@nfsc:~# mount | grep nfs4
10.0.0.50:/nfs on /mnt type nfs4 (rw,addr=10.0.0.50,clientaddr=10.0.0.51)

Как видно, опять все удачно. На этом можно считать, что NFS корректно работает по протоколу NFSv4. Теперь можно приступить к настройке протокола Kerberos на Debian.

2. Настройка протокола Kerberos на Debian

2.1. Предварительная настройка DNS и Active DirectoryСоздание A и PTR записей для Debian

Для корректной работы Kerberos в Linux необходима правильная настройка DNS. «Настройка DNS» тут громко сказано, просто нужно иметь корректные записи в прямой и обратной зоне для клиента NFS и сервера NFS. Создаем эти записи в оснастке DNS (изображение) и проверим работу на Debian:

root@nfsc:~# nslookup -type=A nfsc
Server:         10.0.0.4
Address:        10.0.0.4#53

Name:   nfsc.DOMAIN.local
Address: 10.0.0.51

root@nfsc:~# nslookup -type=A nfsd
Server:         10.0.0.4
Address:        10.0.0.4#53

Name:   nfsd.DOMAIN.local
Address: 10.0.0.50

root@nfsc:~# nslookup 10.0.0.50
Server:         10.0.0.4
Address:        10.0.0.4#53

50.0.0.10.in-addr.arpa  name = nfsd.domain.local.

root@nfsc:~# nslookup 10.0.0.51
Server:         10.0.0.4
Address:        10.0.0.4#53

51.0.0.10.in-addr.arpa  name = nfsc.domain.local.

DNS корректно отдает наши IP по именам и имена DNS по IP. Это меговажный момент, ибо Kerberos активно взаимодействует с DNS и без данных записей просто не будет работать!

2.2. Настройка синхронизации времени для протокола Kerberos

Для работы среды Kerberos v5 необходимо, чтобы расхождение времени KDC и хостов, запрашивающих доступ к каким-либо ресурсам и времени на хостах, предоставляющих сами ресурсы не составляло более 5 минут. Для синхронизации будем использовать возможности пакета ntp. О том, как настроить сервер и клиента NTP я уже рассказывал в прошлых статьях, поэтому отправлю вас читать NTP server на Linux. Здесь же ограничусь основными параметрами. Итак, на клиенте и сервере NFS необходимо установить пакет ntp, отредактировать файл конфигурации /etc/ntp.conf до следующего вида (после этого перезапустить службу ntp):

root@nfsd:~# cat /etc/ntp.conf
server dc.domain.local
restrict default ignore
restrict dc.domain.local
restrict 127.0.0.1 nomodify notrap
root@nfsd:~# service ntp restart
Stopping NTP server: ntpd.
Starting NTP server: ntpd.

2.3. Настройка клиента Kerberos на Debian Wheezy для доменной аутентификации

Данный этап необходимо сделать как на клиенте, так и на сервере — он одинаков как для сервера, так и для клиента NFS. Поэтому покажу, как настроить на примере сервера. Для Kerberos необходимо установить пакет krb5-user с зависимостями (он должен подтянуть krb5-config), далее его необходимо настроить. Настройка заключается в редактировании файла /etc/krb5.conf. Данный файл содержит настройки, необходимые библиотекам, взаимодействующим со средой Kerberos V, такие как область (ее еще называют realm) по умолчанию, расположение серверов KDC (key distribution centers) для известных областей и др. По синтаксису файл очень похож на файл конфигурации SAMBA (smb.conf) и так же состоит из разделов, выделенных квадратными скобками и параметров в формате параметр=значение (более подробно о настройках этого файла в man krb5.conf). Для работы в сети с одной областью вполне достаточно следующего конфигурационного файла:

root@nfsd:~# cat /etc/krb5.conf
[libdefaults]
        default_realm = DOMAIN.LOCAL
[realms]
        DOMAIN.LOCAL = {
                kdc = dc.domain.local
        }

Раздел [libdefaults] содержит значения по-умолчанию для Kerberos V библиотек, а параметр default_realm задает область по умолчанию, которая будет задействована при взаимодействии с Kerberos. Раздел  [realms] содержит подразделы с параметрами, отписывающими область Kerberos, например расположение KDC контроллера. Остальные параметры, которые часто советуют указывать в этом файле вполне работоспособны и по-умолчанию.  После данной настройки давайте проверим работоспособность Kerberos, для этого используется утилита kinit. Kinit запрашивает, получает и кэширует TGT (ticket-granting ticket)-билеты от KDC.

root@nfsc:~# # получаем билет для любого доменного пользователя
root@nfsc:~# kinit domainuser
Password for domainuser@DOMAIN.LOCAL:
root@nfsc:~# # после ввода пароля ошибок не было
root@nfsc:~# # значит билет получен корректно
root@nfsc:~# # просмотрим содержимое кэша:
root@nfsc:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: domainuser@DOMAIN.LOCAL

Valid starting     Expires            Service principal
11/18/11 16:12:00  11/19/11 02:12:08  krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
        renew until 11/19/11 16:12:00
root@nfsc:~# ls -la /tmp/krb5*
-rw------- 1 root root 1101 Ноя 18 16:12 /tmp/krb5cc_0
root@nfsc:~# # очистим содержимое кэша:
root@nfsc:~# kdestroy
root@nfsc:~# ls -la /tmp/krb5*
ls: невозможно получить доступ к /tmp/krb5*: Нет такого файла или каталог

Как видно, билет корректно получен. Не забудьте те же действия проделать на сервере.

Тут я сделаю небольшое отступление в виде абзаца, взятого не помню откуда и не с первого прочтения подающегося пониманию, но тем не менее, хорошо описывающего работу Kerberos ):

Сервер Kerberos свободно распространяет TGT (Ticket Granting Ticket) на каждый неавторизованный запрос; однако, каждый TGT зашифрован ключом, полученным из пароля пользователя. Следовательно, когда пользователь вводит свой пароль, он не отправляется на KDC, а используется для расшифровки TGT, который уже получен kinit. Если в процессе расшифровки получается правильный билет с правильным значением времени, у пользователя есть действующее удостоверение. Это удостоверение содержит ключ сессии для установления безопасного соединения с сервером Kerberos, как и действующий TGT, зашифрованный ключом сервера Kerberos. Второй уровень шифрования недоступен пользователю, но позволяет серверу Kerberos проверять правильность каждого TGT.

Идем дальше…

2.4. Создание keytab-файла на контроллере домена Windows 2008 R2

Перед созданием ключевого файла необходимо создать учетные записи для хостов (сервера и клиента) NFS, соответствующие именами хостов:keytab account

Наступает самый интересный этап. Не углубляясь в Kerberos, keytab-файл это «связка ключей», файл содержащий в себе одну или несколько запсей — ключей, которые используются вместо логина/пароля при запросе доступа у сервера KDC к какому-либо ресурсу. Другими словами, машина предоставляет данный файл серверу KDC как подтверждение своей достоверности, когда запрашивает у контроллера домена (KDC) доступ к какому-либо ресурсу (например доступ к службе или сетевому каталогу). В большинстве случаев, при настройке какой-либо службы в связке с Kerberos проблемы возникают именно на данном этапе, т.к. именно этот файл является связующим звеном между Windows 2008 и Linux (в нашем случае — Debian). Проблемы обычно связаны с различными типами шифрования, которые поддерживает Windows, но не поддерживает Linux и наоборот…

Итак, согласно документации жадных, Windows 7 и Windows Server 2008 R2 более не поддерживают типы шифрования, основанные на DES (DES-CBC-MD5 & DES-CBC-CRC), но в них включены следующие типы шифрования (по убиванию стойкости):

  • AES256-CTS-HMAC-SHA1-96
  • AES128-CTS-HMAC-SHA1-96
  • RC4-HMAC

При этом, необходимо учитывать, что если при использовании Kerberos будут использоваться клиенты на основе WinXP и младше, то они из всего приведенного поддерживают только RC4-HMAC.

keytab создается с помощью утилиты ktpass (документация по ней), которая с Windows 2003 SP1 входит в состав дистрибутива, а в дистрибутивах младше — необходимо установить отдельно Microsoft Server SupportTools, имеющегося на диске с дистрибутива Windows Server . Формат создания keytab утилитой ktpass следующий:

ktpass.exe /princ имя_службы/fqdn.имя.хоста@ИСПОЛЬЗУЕМАЯ.ОБЛАСТЬ
/mapuser учетная_запись_хоста$@ИСПОЛЬЗУЕМАЯ.ОБЛАСТЬ
/crypto тип_шифрования
/ptype ТИП_ПРИНЦИПАЛА
/pass пароль_или_+rndpass
/out C:каталогсоздаваемый_файл

В примере параметры команды для удобства выстроены в столбик, реально же они пишутся все в одну строку. Давайте поймем,  что делает команда ktpass и ее параметры и все их рассмотрим. Вообще, говоря о функциях и назначении данной программы, то создание keytab файла — это одна из двух ее функций, другая функция — это создание принципала (/princ), «привязанного» (примапленного — /mapuser) к учетной записи компьютера или пользователя.  Принципал представляет собой SPN-запись (server principal name, дословно — имя основного сервера), думаю, что из дословного перевода SPN, понятно что назначение этой записи — указать на компьютер, предоставляющий тот или иной сервис (службу, в нашем случае — служба NFS). О том, что есть принципал (SPN) — более подробно — можно почитать тут. Давайте пойдем по прядку по параметрам…

Параметр /princ

Задает имя службы и хост, на котором она (служба) расположена и в какой области домене. В нашем случае указывается nfs/nfsd.domain.local@DOMAIN.LOCAL (для сервера NFS) и nfs/nfsс.domain.local@DOMAIN.LOCAL (для клиента NFS). Для примера, для службы Apache указывается принципал HTTP/fqdn.имя.хоста@ИСПОЛЬЗУЕМАЯ.ОБЛАСТЬ, причем HTTP обязательно В ВЕРХНЕМ РЕГИСТРЕ, многие службы требуют указания имени службы в SPN именно в верхнем регистре. Узнать, в каком регистре и какое значение имя_службы указывать можно из документации к службе, например в man rpc.gssd есть такая информация. Очень часто указывается общее имя принципала host/fqdn@REALM. Стоит отметить такой нюанс…почему-то во всех источниках указывают, что должно стоять имя FQDN. Но на сколько я знаю, FQDN-имя предполагает наличие точки в конце имени, но тем не менее — точку не ставят в данном случае.

Параметр /mapuser

Задает имя доменной учетной записи, к которой «цепляется» указанный выше SPN. Для нас это будет созданные в предыдущем разделе учетные записи компьютеров nfsc$@DOMAIN.LOCAL — для клиента и nfsd$@DOMAIN.LOCAL — для сервера.

Параметр /crypto

Задает тип шифрования Kerberos, который будет использоваться при шифрации/дешифрации билетов, передаваемых между контроллером домена KDC и хостами. На Windows 2008 R2 мне удалось запустить корректную аутентификацию при указании параметра /crypto ALL (то есть keytab создавался с несколькими принципалами со всеми поддерживаемыми типами шифрования). Тем не менее, желательно придерживаться следующих правил, чтобы избежать проблем с шифрованием: для win 2k и 2k3 желательно указывать /crypto DES-CBC-MD5, для Win 2k3 SP1/crypto rc4-hmac-nt, для Windows 2008 R2/crypto AES256-SHA1 или /crypto rc4-hmac-nt.

Параметр /ptype

Задает тип принципала. В значении этого параметра рекомендуется указывать KRB5_NT_PRINCIPAL, т.к. подходит практически для всех служб.

Параметр /pass

Задает пароль, который может быть указан вручную, или устанавливает произвольный пароль, если задано значение +rndpass.

Параметр /out

Задает имя выходного файла keytab.

Итак, рассмотрев параметры, можно составить команды, которые создадут нам необходимые keytab файлы на контроллере домена:

C:Windowssystem32>ktpass.exe /princ nfs/nfsc.domain.local@DOMAIN.LOCAL /mapuser 
nfsc$@DOMAIN.LOCAL /crypto ALL /ptype KRB5_NT_PRINCIPAL /pass +rndpass 
/out C:tmpnfsckeytab
Targeting domain controller: DC.domain.local
Using legacy password setting method
Successfully mapped nfs/nfsc.domain.local to NFSC$.
WARNING: Account NFSC$ is not a user account (uacflags=0x1021).
WARNING: Resetting NFSC$'s password may cause authentication problems if NFSC$
is being used as a server.

Reset NFSC$'s password [y/n]?  y
WARNING: pType and account type do not match. This might cause problems.
Key created.
Key created.
Key created.
Key created.
Key created.
Output keytab to C:tmpnfsckeytab:
Keytab version: 0x502
keysize 55 nfs/nfsc.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x1 (DES-CBC-CRC) keylength 8 (0x206e7fbaa738ec1c)
keysize 55 nfs/nfsc.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x3 (DES-CBC-MD5) keylength 8 (0x206e7fbaa738ec1c)
keysize 63 nfs/nfsc.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x17 (RC4-HMAC) keylength 16 (0x85a6dea042798a45a547f8450e1115fc)
keysize 79 nfs/nfsc.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x12 (AES256-SHA1) keylength 32 (0x624fe15973fb5bda6c88a289260789cd16b135451f296
a83679424c27c04507a)
keysize 63 nfs/nfsc.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x11 (AES128-SHA1) keylength 16 (0x5ea804c4527c2467f7c710d845c09821)

Это был клиент. Как видно, вывалилось несколько «варнингов». Первый нам говорит, о том, что это аккуант не пользователя, а компьютера, второй — что могут возникнуть проблемы, если мы сбросим пароль (но мы то знаем, что делаем, поэтому подтверждаем и жмахаем Ентер), третий говорит нам, что ptype не соответствует аккуанту. Это произошло потому что мы указали «общий» тип, а привязали принципал к учетной записи хоста. Теоретически, это не должно привести к проблемам при настройке, но если сообщение мозолит глаза, то можно указать тип KRB5_NT_SRV_HST. Давайте теперь создадим кейтаб для сервера NFSv4:

C:Windowssystem32>ktpass.exe /princ nfs/nfsd.domain.local@DOMAIN.LOCAL /mapuser 
nfsd$@DOMAIN.LOCAL /crypto ALL /ptype KRB5_NT_PRINCIPAL /pass +rndpass 
/out C:tmpnfsdkeytab
Targeting domain controller: DC.domain.local
Using legacy password setting method
Successfully mapped nfs/nfsd.domain.local to NFSD$.
WARNING: Account NFSD$ is not a user account (uacflags=0x1021).
WARNING: Resetting NFSD$'s password may cause authentication problems if NFSD$
is being used as a server.

Reset NFSD$'s password [y/n]?  y
WARNING: pType and account type do not match. This might cause problems.
Key created.
Key created.
Key created.
Key created.
Key created.
Output keytab to C:tmpnfsdkeytab:
Keytab version: 0x502
keysize 55 nfs/nfsd.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x1 (DES-CBC-CRC) keylength 8 (0xb36dd6ef3b518f73)
keysize 55 nfs/nfsd.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x3 (DES-CBC-MD5) keylength 8 (0xb36dd6ef3b518f73)
keysize 63 nfs/nfsd.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x17 (RC4-HMAC) keylength 16 (0x85a6dea042798a45a547f8450e1115fc)
keysize 79 nfs/nfsd.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x12 (AES256-SHA1) keylength 32 (0x760287626e74dea671b3c90cfae8d2b2f5b69f596ff9e
f73c8c3da476ee64925)
keysize 63 nfs/nfsd.domain.local@DOMAIN.LOCAL ptype 1 (KRB5_NT_PRINCIPAL) vno 3 etype
0x11 (AES128-SHA1) keylength 16 (0x8fa396ecd3d4a69c329437b08da883e9)

Итого, мы получили 2 keytab в каталоге C:tmp для клиента — nfsсkeytab и для сервера — nfsdkeytabKerberos keytab файлы для NFSv4

Примечание. Подразделение (Organization Unit) в котором размещены учетные записи сервера (nfsd) и клиента (nfsc) не должны иметь в своем имени кириллических символов. Иначе при создании keytab будет ошибка Password set failed! 0×00000020. Aborted. (Спасибо за замечание комментатору Михаилу)

Теперь эти ключи Kerberos необходимо БЕЗОПАСНО скопировать на соответствующие машины, например чрез WinSCP и приступить к следующему шагу.

2.5. Настройка клиента Kerberos для аутентификации через keytab

Допустим, мы скопировали наши keytab файлы в папку пользователя root. Теперь рассмотрим настройку keytab на сервере NFS:

root@nfsd:~# ktutil
ktutil:  rkt /root/nfsdkeytab
ktutil:  list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    3             nfs/nfsd.domain.local@DOMAIN.LOCAL
   2    3             nfs/nfsd.domain.local@DOMAIN.LOCAL
   3    3             nfs/nfsd.domain.local@DOMAIN.LOCAL
   4    3             nfs/nfsd.domain.local@DOMAIN.LOCAL
   5    3             nfs/nfsd.domain.local@DOMAIN.LOCAL
ktutil:  wkt /etc/krb5.keytab
ktutil:  q
root@nfsd:~# kinit -k  nfs/nfsd.domain.local
root@nfsd:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: nfs/nfsd.domain.local@DOMAIN.LOCAL

Valid starting     Expires            Service principal
11/19/11 01:17:30  11/19/11 11:17:31  krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
        renew until 11/20/11 01:17:30
root@nfsd:~# kdestroy
root@nfsd:~# chmod -v u=rw,go-rwx /etc/krb5.keytab
права доступа «/etc/krb5.keytab» изменены с 0644 (rw-r--r--) на 0600 (rw-------)

Давайте разберем сделанное: сначала, с помощью утилиты ktutil прочитали исходный скопированный файл, просмотрели его содержимое, чтобы убедится, что это нужный нам файл и записали прочитанное содержимое в файл /etc/krb5.keytab, который читается библиотеками Kerberos, затем вышли из утилиты командой q. Командой kinit с параметром -k и указанным именем службы мы попробовали проверить подлинность без пароля с помощью keytab. Данное действие корректно завершилось, т.к. ошибок выдано не было и klist нам отобразил полученный билет из кэша. Далее мы удалили полученный билет и задали права на доступ к krb5.keytab только пользователю root. Дополнительно могу отметить, что иногда приходится к kinit добавить ключ -t с путем к кейтаб-файлу. Это может понадобиться, если по какой-то причине, kinit не смог найти и обратиться к keytab файлу по умолчательному пути… (спасибо комментатору angel2s2АХТУНГ!!! Если на данном этапе kinit выдал ошибки, то далее настраивать смысла нет, ибо Kerberos клиент работает не корректно. Необходимо избавиться от ошибок.

Далее, давайте то же самое проделаем с клиентом:

root@nfsc:~# ktutil
ktutil:  rkt /root/nfsckeytab
ktutil:  list
slot KVNO Principal
---- ---- ---------------------------------------------------------------------
   1    3             nfs/nfsc.domain.local@DOMAIN.LOCAL
   2    3             nfs/nfsc.domain.local@DOMAIN.LOCAL
   3    3             nfs/nfsc.domain.local@DOMAIN.LOCAL
   4    3             nfs/nfsc.domain.local@DOMAIN.LOCAL
   5    3             nfs/nfsc.domain.local@DOMAIN.LOCAL
ktutil:  wkt /etc/krb5.keytab
ktutil:  q
root@nfsc:~# kinit -k nfs/nfsc.domain.local
root@nfsc:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: nfs/nfsc.domain.local@DOMAIN.LOCAL

Valid starting     Expires            Service principal
11/19/11 01:31:28  11/19/11 11:31:29  krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
        renew until 11/20/11 01:31:28
root@nfsc:~# kdestroy
root@nfsc:~# chmod -v -u=rw,go- /etc/krb5.keytab
права доступа «/etc/krb5.keytab» изменены с 0600 (rw-------) на 0644 (rw-r--r--)

Все у нас хорошо. Можно пробовать настроить NFS через Kerberos.

3. Настройка NFSv4 на проверку подлинности через Kerberos V (Win 2k8 R2 как KDC)

Настройку начнем с сервера NFS. В конфигурационном файле сервера (/etc/default/nfs-kernel-server)  необходимо разрешить запуск демона, отвечающего за взаимодействие с Kerberos (демон rpc.svcgssd), для этого необходимо вставить yes в параметре NEED_SVCGSSD=yes, задать экспортируемому ресурсу соответствующую настройку для авторизации через KDC и перезапустить службу:

root@nfsd:~# cat /etc/exports
/nfs    gss/krb5(rw,sync,no_subtree_check)
root@nfsd:~# service nfs-kernel-server restart
Stopping NFS kernel daemon: mountd svcgssd nfsd.
Unexporting directories for NFS kernel daemon....
Exporting directories for NFS kernel daemon....
Starting NFS kernel daemon: nfsd svcgssd mountd.
root@nfsd:~# showmount -e
Export list for nfsd:
/nfs gss/krb5

На этом настройка закончена. Давайте для начала размонтируем ранее смонтированную NFS и попробуем смонтировать каталог на той же машине, где установлен сервер:

root@nfsd:~# umount -v /mnt
NFSv4 mount point detected
10.0.0.50:/nfs umounted
root@nfsd:~# mount -v -t nfs4 -o sec=krb5 nfsd:/nfs /mnt
mount.nfs4: timeout set for Sat Nov 19 01:50:11 2011
mount.nfs4: trying text-based options 'sec=krb5,addr=10.0.0.50,clientaddr=10.0.0.50'
nfsd:/nfs on /mnt type nfs4 (rw,sec=krb5)
root@nfsd:~# mount | grep nfs4
nfsd:/nfs on /mnt type nfs4 (rw,sec=krb5,addr=10.0.0.50,clientaddr=10.0.0.50)

Как видно, все получилось отлично. Давайте то же самое попробуем проделать на клиенте:

root@nfsc:~# mount -v -t nfs4 -o sec=krb5 nfsd:/nfs /mnt
mount.nfs4: timeout set for Sat Nov 19 02:24:21 2011
mount.nfs4: trying text-based options 'sec=krb5,addr=10.0.0.50,clientaddr=10.0.0.51'
nfsd:/nfs on /mnt type nfs4 (rw,sec=krb5)
root@nfsc:~# mount | grep nfs4
nfsd:/nfs on /mnt type nfs4 (rw,sec=krb5,addr=10.0.0.50,clientaddr=10.0.0.51)

Так же — все удачно.

4. Траблешуттинг Kerberos и NFS

Диагностику стоит начать с проверки — запущены ли необходимые процессы:

root@nfsd:~# ps aux | grep rpc
root       667  0.0  0.2   2236   940 ?        Ss   Nov17   0:01 /sbin/rpcbind -w
root       690  0.0  0.0      0     0 ?        S<   Nov17   0:00 [rpciod]
statd     1666  0.0  0.3   2548  1248 ?        Ss   Nov18   0:00 /sbin/rpc.statd
root      1679  0.0  0.1   2552   736 ?        Ss   Nov18   0:00 /usr/sbin/rpc.idmapd
root      1684  0.0  0.5   3948  2240 ?        Ss   Nov18   0:28 /usr/sbin/rpc.gssd
root      3859  0.0  0.4   3880  1808 ?        Ss   01:44   0:00 /usr/sbin/rpc.svcgssd
root      3862  0.0  0.3   3076  1504 ?        Ss   01:44   0:00 /usr/sbin/rpc.mountd --manage-gids
root      4017  0.0  0.1   3424   768 pts/0    S+   02:29   0:00 grep rpc

Это вывод с сервера. На клиенте, соответственно, не будет процесса rpc.svcgssd. Далее стоит просмотреть лог /var/log/daemons.log и /var/log/syslog на наличие ошибок.

Для диагностики клиента, необходимо добавить в /etc/defaults/nfs-common строку RPCGSSDOPTS=-vvv и перезапустить nfs-common. Это запустит демон rpc.gssd в очень verbose-режиме )). Для диагностики сервера можно добавить такую же опцию в RPCSVCGSSDOPTS=-vvv и перезапустить nfs-kernel-server. После этого — наблюдать за логом /var/log/daemons.log и /var/log/syslog.

БОлше понимания о шифровании в Kerberos дает команда klist с параметром -e, что заставляет отображать типы шифрования в файле keytab и кэше.

Можно так же «поиграться» с заданием разрешенного типа шифрования Kerberos. Это делается добавлением строк в файл krb5.conf:

[libdefaults]
 …
      # явно задает тип шифрования RC4, можно
      # задать des-cbc-cbr, des-cbc-md5, aes256-cts или aes128-cts
      default_tkt_enctypes = rc4-hmac
      default_tgs_enctypes = rc4-hmac
      permitted_enctypes = rc4-hmac

Если используется Kerberos клиент старше 1.6, то скорее всего DES там как и в Windows 2008 — не поддерживается и для его включения необходимо добавить в раздел [libdefaults] строку allow_weak_crypto = true.

Хочется отметить еще вот такой нюанс: на контроллере домена возможно привязать несколько SPN к однойучетной записи, но это может привести к некоторым проблемам, поэтому я бы не советовал этого делать. Пример такой проблемы хорошо раборали товарсчи с форума ixbt. Кроме того, в сети идет много дебатов о том, привязывать SPN к учетной записи компьютера или к учетной записи пользователя, некоторую полезную информацию об этом можно найти тут.

Многие ресурсы советуют добавить в krb5.conf вот такой раздел:

[logging]
FILE=/var/krb5/kdc.log

Что теоретически должно заставить библиотеки клиента kerberos писать о своей работе в лог, но заставить работать этот механизм мне не удалось, поэтому я пропустил данную настройку в статье.

Резюме.

Итак, статью можно считать завершенной. Чтобы до конца разобраться в этом вопросе мне пришлось убить более 2х недель и перечитать кучу материалов. Очень надеюсь, что  материал, который я постарался как можно понятней донести до Вас будет Вам полезен. Буду рад комментариям и замечаниям. До новых встреч!

Что почитать еще

http://blog.scottlowe.org/2007/01/15/active-directory-integration-index/ — очень много информации по интеграции UNIX и AD
http://technet.microsoft.com/en-us/library/cc734104(WS.10).aspx — Kerberos Key Distribution Center на Windows 2008
http://social.technet.microsoft.com/wiki/contents/articles/717.aspx — SPN от мелкософт
http://technet.microsoft.com/en-us/library/cc753771(WS.10).aspx — ktpass от Microsoft
http://msdn.microsoft.com/en-us/library/ms995329.aspx — очень интересная статья с теоретической точки зрения о настройке Linux, Kerberos и HTTP
http://technet.microsoft.com/ru-ru/library/dd546914.aspx — управление доступом в гетерогенных сетях
http://www.grolmsnet.de/kerbtut/ — тоже о Linux, Kerberos и HTTP
http://osdude.wordpress.com/2011/08/12/authenticating-unixlinux-to-windows-2008r2-part-3-rhel-5-6/ — неплохая теоретическая информация о шифровании в KDC на Windows 2008
http://osdude.wordpress.com/2011/08/12/authenticating-unixlinux-to-windows-2008r2-part-5-kerberos-encryption-types/ — вторая неплохая теоретическая информация о шифровании в KDC на Windows 2008
http://www.securitylab.ru/analytics/265153.php — работа Kerberos в Linux
http://nfsworld.blogspot.com/2005/06/using-active-directory-as-your-kdc-for.html — NFS и Windows 2003
http://sammoffatt.com.au/jauthtools/Kerberos — хорошая wiki по Kerberos
http://techpubs.spinlocksolutions.com/info/kerberos.html — MIT Kerberos в Debian

C Уважением, Mc.Sim!


Теги: Active Directory, HOWTO, kerberos, Linux, Microsoft Windows, NFS

We are currently working on a feature that will allow potential clients to download a trial of Atomia Cloud Hosting Platform and install it in their OpenStack cloud. This means we have to keep the size of the installation package as well as the footprint in their cloud (in terms of numbers of virtual machines) to a minimum. While a clustered productions environment may contain dozens of VMs we aim for a fully functional test environment with as few VMs as possible (currently 3, but we strive for 2).

Since we offer both Linux and Windows websites we need a storage solution that supports both SMB (Windows) and NFS (Linux). For production environments we recommend Nexenta ZFS, but for testing this is less suitable because it means that we would have to ship another image (and another VM is needed).

This can be avoided by exposing the NFS through Windows Server for NFS Services. While there are hundreds to tutorials regarding creating SMB shares, few are to be find about NFS Services. In Windows 2008 R2 there has been a number of changes and this blog post will guide you from start to finish on how to set it up.

Installing Server for NFS Services

To install Server for NFS Services simply execute this command:

ServerManagerCmd -install File-Services FS-NFS-Services

Setting up the User Mapping

This version of Server for NFS Services lacks the User Mapping server. The mapping is now done by Active Directory itself. But first a short explanation on what user mapping does: If you want to connect to the Windows NFS share from Linux, and you don’t use a common authentication scheme like Kerberos, Linux will identify the user to Windows using their user ID and group ID (which every user and group in Linux has). Run the following command in your Linux terminal to get the IDs:

less /etc/passwd

This is of course insecure because if an attacker controls a Linux machine of his own and connects to your NFS share he can simply pretend to be any user. Unlike among Windows machines it is not required for the Linux and the Windows user to share the same password. It is therefore important to control the access to the share via firewall or IP restrictions.

For the root you can choose for every share if it should be either considered anonymous or if it should be mapped to Administrator automatically. All unmapped users are covered by the entity Anonymous Logon in Windows. So you can save yourself the user mapping if you trust all users of the Linux machine, by granting rights to Anonymous Logon.

Run the following command on your Windows server to enable user mapping:

nfsadmin mapping localhost config adlookup=yes addomain=<yourdomain>
sc.exe stop NfsService
sc.exe start NfsService

Where the domain is given in its full DNS name.

To set up the mapping, let assume you found the line

ubuntu:x:1000:1000:Ubuntu,,,:/home/ubuntu:/bin/bash

in the passwd file. That means ubuntu is member of Ubuntu group and both have the ID 1000. To replicate that in windows you need to create a user ubuntu and a group we call g-ubuntu, but the name won’t matter.

MSDN has an excelent blog post with scripts on how to set the user and group ID
here.

Unfortunately it does not cover how to set the default group. In Windows a user can be member of several groups, but in Linux it can be only one. To set the default group, you open Active Directory Users and Computers, navigate to the users account, right click, select Properties, select the Member of tab and then select the group and click on Set Primary Group.

The User properties dialog

Creating the share

To create an NFS share simply right-click on folder and select the NFS Sharing tab. You can activate NFS sharing there. The defaults are usually ok.

The NFS sharing dialog in Windows explorerThe NFS sharing dialog in Windows explorer

Then click on the Permissions button. By default all machines have read access. You should limit access to those machines that really need it. If you need that you can allow root access which means that the root user is given Administrative privileges.

The permissions dialog for an NFS shareThe permissions dialog for an NFS share

The NTFS permissions

The trickiest part are the NTFS permissions. Let’s say you want to give the user ubuntu access to a file. In that case you will probably add ubuntu to the users of that file and add permissions. But on the linux side this will change nothing. This is because Linux is only aware of three entities, the owner, the owner’s group and all. So when you give permissions this applies:

Use the Everyone entity in Windows to give permissions to all. To give permissions to a specific user or group you must first change the ownership of the folder to that group and then give explicitly permissions to that user or group.

To give ownership to a certain user/group it is best to use SetACL:

SetACL -on c:Storageb -ot file -actn setowner -ownr "n:ubuntu" -actn setgroup -grp "n:g-ubuntu" -rec cont_obj

To give the user and group explicit read and execute access use:

SetACL -on c:Storage -ot file -actn ace -ace "n:ubuntu;p:read_ex" -ace "n:g-ubuntu;p:read_ex" -actn rstchldrn -rst dacl

On the Linux side

On the Linux side you simply mount the NFS share

mount <IP>:/<name_of_the_share> /<mountpoint>

When the Server for NFS Services role service is installed it automatically opens the right ports in the Windows firewall.

When connecting to NFS shared folder the windows credentials needs to be mapped to a equivalent unix account+ group. 

In Windows Server 2008 R2 the support for User Mapping is dropped and the same functionality can only be achived using Identity Management for Unix Components (extension schema for Active Directory).

Below describes on how you can connect to a NFS folder without using User Mapping Server.

A. Install NFS Client

Step 1. Enable File Services Role. Go to Server Management – > Add Roles -> File Services

Step 2. Install Services for Network File System. Go to File Services – > Add Role Services

 

B. Update NFS Client Registry

In this step, we are going to map the anonymous user credential to the unix account credential that you’ll be using to connect to NFS share. First you need to get the User Id and Group Id of the unix account from the unix administrator. It should be of decimal value like: UserId= 6500000 GroupId=4200. Once you have it, we can proceed.

1. Open Regedit.

2. Go to HKEY_LOCAL_MACHINESOFTWAREMicrosoftClientForNFSCurrentVersionDefault.

3. Create 2 DWORD value, one for AnonymousUid with decimal value=<User Id> and another for AnonymousGid with decimal value=<GroupId>.

It should look like this:

4.  Restart the NFS Client. Go to Administrative Tools -> Services for Network File System (NFS) ->

C. Test NFS Connection

1. Open command prompt.

2. Type:  mount -u:<UserName and not UserId> -p:<Password> <SharedNFSFolder> <drive letter to mount, Ex: J:>

3. dir <drive letter:>

Copy file to this NFS folder. This is only way to confirm that the registry hacking is successfully. Because by default if the anonymous access is turned on in NFS side, you can see the files without having to supply user/password.

Note: Limitation is that, you can only connect to a single NFS share because it would use the same UserId and Group Id everytime you connect.

I’ve had a requirement recently to create a small XenServer 6.2 test/demo environment. I decided to use a Windows 2008 R2 host as an NFS server to provide shared storage to the XenServer hosts as it is quick and easy to set up.

First of all you have to install NFS services. This is done by running the following command:

ServerManagerCmd -install File-Services FS-NFS-Services


nfs_feature_install

Once the installation is complete, the next step is to create a share. First of all, create a folder, then right click on it and select the NFS Sharing tab:

nfs_share

Click the Manage NFS Sharing button:

nfs_settings

For our purposes, it’s fine to leave the defaults, but we will need to change a setting in the permissions options:

nfs_permissions

We need to ensure that ‘Allow root access’ is enabled, and that the share is set to Read-Write. By default it will be set as read only. If required, you can set it so that only certain IP address are able to connect to the share, however in this example I will leave it as allow all.

Now the share has been set up it can be added to the XenServer hosts as a Storage Repository. In XenCenter, right click a XenServer host and select ‘New SR’:

new-sr

Next, choose NFS VHD as the virtual disk storage type:

nfs-type

On the next screen, give the SR a name:

sr-name

Finally, enter the path to the NFS share created earlier:

sr-server

After clicking finish the new SR should be available.

If you wanted to use this NFS share with an ESXi environment rather than XenServer, the setup is identical on the NFS server. To connect an ESXi host to it, use the Add Storage wizard in the vSphere client:

esxi-nfs

  • Remove From My Forums
  • Question

  • I have found many guides on doing it in Server 2003 but there doesn’t seem to be much information on 2008.  I’m not sure if it’s even possible.  Does anyone know about this?  Thanks in advance. 

Answers

  • Hi Starke77,

    I found a useful TechNet document for your reference. You may refer to the «Creating an NFS shared folder» section to create an NFS shared folder on the computer running server for NFS.

    Hope it helps.


    Your potential. Our passion.

    • Marked as answer by

      Friday, July 11, 2008 3:05 AM

Понравилась статья? Поделить с друзьями:
  • Настройка nat в windows server 2003
  • Настройка radius сервера windows server 2012
  • Настройка mysql сервера windows server 2012
  • Настройка sdrsharp на windows 10 под rtl sdr приемник
  • Настройка mysql на windows server 2008