Сетевой протокол NFS (Network File System) широко используется для предоставления общего доступа к файлам и папкам в среде Linux/Unix. NFS часто используется в системах виртуализации, когда нужно организовать общее хранилище для виртуальных машин, или для хранилищ резервных копий. Также NFS хорошо подходит, когда нужно организовать передачу файлов через общие сетевые каталоги в гетерогенных средах, включающих Windows хосты. В этой статье мы рассмотрим, как установить роль NFS, опубликовать общий сетевой каталог NFS на Windows Server, настроить маппинг пользователей и смонтировать NFS директорию с клиента Linux.
Встроенная поддержка NFS сервера имеется во всех поддерживаемых версия Windows Server (2025,2022,2019) реализуется с помощью роли Server for NFS. Основные особенности:
- NFS сервер в Windows Server поддерживает все версии протокола NFS: NFSv2, NFSv3 и последнюю версию NFSv4
- Для доступа к NFS используется фиксированный RPC порт 2049
- Упрощённая идентификация реализуется за счёт использования плоского файла сопоставления (mapping file)
Установка роли Server for NFS в Windows Server
В Windows Server включены как сервер, так и клиент NFS (в отличии от дестокпных редакций Windows 10 и 11, в которых есть только клиент NFS).
Роль NFS хранилища в Windows Server можно установить через Server Manager (Add roles -> Server roles -> File and Storage Services -> Server for NFS) или с помощью PowerShell:
Install-WindowsFeature -Name FS-NFS-Service -IncludeManagementTools


Для взаимодействия клиентов с NFS сервером по протоколу NFSv4 на сервере должен быть открыт порт TCP/ UDP 2049 и TCP/UDP 111 (Portmap for UNIX Software).
Проверьте, что в Windows Defender Firewall включено правило, разрешающее доступ к серверу по протоколу NFS:
Get-NetFirewallRule -DisplayName "Server for NFS*","*Portmap*"|ft
Должны быть включены следующие правила:
- Server for NFS (NFS-TCP-In) —
Microsoft-Windows-NFS-ServerCore-NfsSvc-NFS-TCP-In - Server for NFS (NFS-UDP-In) —
Microsoft-Windows-NFS-ServerCore-NfsSvc-NFS-UDP-In - Portmap for UNIX-based Software (TCP-In)
- Portmap for UNIX-based Software (UDP-In)

Для работы NFSv3 требуется открытый динамический RPC диапазон и TCP 135 (RPC Endpoint Mapper).
Создать сетевой каталог NFS в Windows Server
Опубликовать общий сетевой каталог NFS в Windows можно из графической консоли Server Manager:
- Разверните роль File and Storage Services в Server Manager
- Перейдите в раздел Shares и выберите Tasks -> New Share -> NFS Share — Quick
Режим NFS Share Advanced может использовать только совместно с ролью File Server Resource Manager (FSRM). В этом режиме можно настроить детальный контроль доступа, квоты, классификацию файлов и ряд других расширенных опций. - Затем укажите имя и локальный путь к директории, которую вы хотите опубликовать по NFS.

- Далее нужно выбрать тип аутентификации. NFS сервер на Windows поддерживает Kerberos v5 аутентификацию.Для клиентов, которые не умеют аутентифицировать по Kerberos, нужно включить опцию No server authentication (AUTH_SYS). Это менее безопасный UNIX способ аутентификации, в котором используются UID и GID для доступа.
Опция Enable unmapped user access – позволяет получить доступ к NFS пользователям, для которых не настроено прямое сопоставление с учетной записью Windows (без этой опции обязательно должно быть настроено сопоставление пользователя с пользователем Windows). При этом можно включить идентификацию пользователей по их UID или GID на UNIX устройстве (Allow unmapped user access by UID/GID) или разрешить анонимный доступ без проверки (Allow anonymous access).

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

- Здесь можно выбрать, каком хостам или группам, будет разрешено подключаться к NFS папке. Например, в поле Host можно отраничить доступ по IP или DNS адресу клиента. Чтобы разрешить доступ всем устройствам, нужно выбрать All Mahcines. В настройке кодировки нужно выбрать ANSI и права доступа: No access, Read only или Read+Write

- Далее можно настроить NTFS права доступа к папкеNTFS разрешения папки определяют базовый уровень доступа к файлам и папкам на сервере, а NFS-права через маппинг пользователей и разрешения NFS — регулируют доступ в рамках сетевого взаимодействия NFS.
- Подтвердите создание сетевой папки NFS.
Также можно создать общий сетевой каталога NFS с помощью PowerShell:
New-NfsShare -Name NFSShare2 -Path "C:\nfsshare2" -AllowRootAccess $false -Permission ReadWrite

Чтобы вывести NFS права доступа к папке:
Get-NfsSharePermission nfsshare
Изменить права доступа к NFS шаре:
Grant-NfsSharePermission -Name NFSShare2 -ClientName 192.168.1.100 -ClientType host -LanguageEncoding ANSI
Настройка NFS сервера в Windows
Текущие настройки NFS сервера можно вывести с помощью команды:
Get-NfsServerConfiguration

State : Running
LogActivity :
CharacterTranslationFile : Not Configured
DirectoryCacheSize (KB) : 128
HideFilesBeginningInDot : Disabled
EnableNFSV2 : True
EnableNFSV3 : True
EnableNFSV4 : True
EnableAuthenticationRenewal : True
AuthenticationRenewalIntervalSec : 600
NlmGracePeriodSec : 45
MountProtocol : {TCP, UDP}
NfsProtocol : {TCP, UDP}
NisProtocol : {TCP, UDP}
NlmProtocol : {TCP, UDP}
NsmProtocol : {TCP, UDP}
PortmapProtocol : {TCP, UDP}
MapServerProtocol : {TCP, UDP}
PreserveInheritance : False
NetgroupCacheTimeoutSec : 30
UnmappedUserAccount :
WorldAccount : Everyone
AlwaysOpenByName : False
GracePeriodSec : 240
LeasePeriodSec : 120
OnlineTimeoutSec : 180
Чтобы изменить настройки сервера NFS, используется команда Set-NfsServerConfiguration. Например, следующая команда отключит поддержку протокола NFSv2.
Set-NfsServerConfiguration -EnableNFSV2 $false
Также для управления настройками NFS сервера в Windows можно использовать графическую MMC оснастку Services for Network File System MMC (
nfsmgmt.msc
). Эта оснастка позволяет выбрать транспортный протокол NFS ( по умолчанию TCP+UDP), включить логирование NFS доступа, управлять блокировками файлов и просматривать активные подключения.


Рассмотрим, как настроить сопоставления (маппинг) пользователя из AD с соответствующим GUI и UID пользователя Linux.
Получить UID и GID пользователя в Linux можно командой:
$ id username
Вывод покажет UID пользователя, основной GID и группы, в которые он входит. В нашем примере это 1000 и 1000.

Устанавливаем Active Directory в качестве хранилища маппинга:
Set-NfsMappingStore -EnableADLookup $true -ADDomainName "winitpro.local"
Проверить текущее хранилище:
Get-NfsMappingStore
Создать новую запись маппинга для группы «NFS_users» в Active Directory и присвоить ей Unix GID 1000.
New-NfsMappedIdentity -MappingStore AD -GroupName "NFS_users" -GroupIdentifier 1000
Проверяем сопоставление для группы:
Get-NfsMappedIdentity -MappingStore AD -AccountType Group -AccountName "NFS_users"
Связываем учетную запись Windows пользователя с Unix-идентификаторами:
Set-NfsMappedIdentity -MappingStore AD -UserName "kbuldogov" -UserIdentifier 1000 -GroupIdentifier 100
Вывести настройки маппинга для пользователя
Get-NfsMappedIdentity -AccountName "kbuldogov" -AccountType User
Таким образом вы можете настроить сопоставление Linux пользователей с аккаунтами Windows (AD).
Проверяем подключение к NFS серверу Windows с клиента
Теперь можно протестировать подключение к NFS серверу на Windows Server с любого клиента. В этом примере мы используем хост с Debian:
Установить пакет с компонентами NFS клиента для Linux:
$ sudo apt-get install -y nfs-common
Создать точку монтирования:
$ sudo mkdir /mnt/nfs
Монтируем NFS каталог с удаленного сервера в указанную директорию:
$ sudo mount 192.168.158.147:/nfsshare /mnt/nfs
Проверьте, что вы видите все файлы в NFS директории на удаленном сервере:

Чтобы отмонтировать NFS шару, выполните:
$ umount /mnt/nfs/
Для автоматического подключения NFS директории, можно добавить запись в fstab.


Спасибо, очень помогло .
Тоже присоединяюсь к словам выше. То что нужно для первоначального знакомства с темой.
С ubuntu команда:
sudo mount 192.168.24.200:/nfs /mntне даёт эфекта, что-то намудрили с нфс мелкомягкие.
Диагностика:
$nmap 192.168.24.200 -p2049PORT STATE SERVICE
2049/tcp open nfs
$ sudo tshark -n ip host 192.168.24.200 and port 2049 or port 111
Capturing on 'eth0'
1 0.000000 192.168.20.20 -> 192.168.24.200 TCP 74 955 > 2049 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=731769529 TSecr=0 WS=128
1 2 0.997184 192.168.20.20 -> 192.168.24.200 TCP 74 [TCP Retransmission] 955 > 2049 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=731769779 TSecr=0 WS=128
2 3 3.001142 192.168.20.20 -> 192.168.24.200 TCP 74 [TCP Retransmission] 955 > 2049 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=731770280 TSecr=0 WS=128
3 4 7.009177 192.168.20.20 -> 192.168.24.200 TCP 74 [TCP Retransmission] 955 > 2049 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=731771282 TSecr=0 WS=128
4 5 15.033196 192.168.20.20 -> 192.168.24.200 TCP 74 [TCP Retransmission] 955 > 2049 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=731773288 TSecr=0 WS=128
5 ^C
Очень разочаровалась в том что я не знаю английский на вашем уровне. Также слова «шару» и «мапится» застали врасплох