// Engineering Log

Протоколы передачи файлов: Часть 4 — SMB или NFS

Опубликовано 22.09.2026

// Быстрый маршрут

Эта статья относится к теме Серверы и инфраструктура.

Когда файлы нужно не передавать, а работать с ними прямо на сервере — открывать документы, сохранять проекты, хранить общие папки отдела, — используют протоколы сетевых файловых систем. Их два: SMB, привычный пользователям Windows, и NFS, стандарт мира Unix и Linux. Оба позволяют подключить папку на сервере так, будто это локальный диск, но устроены по-разному.

SMB: файловые ресурсы Windows

SMB (Server Message Block) — протокол общих папок и принтеров Windows. Если вы подключали сетевой диск \\server\share, вы пользовались SMB. Работает он поверх TCP, порт 445.

Версии SMB

  • SMB1 (его диалект также называют CIFS) — устаревшая версия с известными уязвимостями, через которые распространялись шифровальщики. Microsoft объявила её устаревшей в 2014 году.
  • SMB2 и SMB3 — современные версии. SMB 3.x поддерживает шифрование трафика, несколько каналов одновременно (multichannel) и защиту от подмены при согласовании соединения (SMB 3.1.1).

По документации Microsoft, начиная с Windows 10 и Windows Server версии 1709 SMB1 не устанавливается по умолчанию, а в Windows 11 после чистой установки нет ни клиента, ни сервера SMB1. На практике это значит: старый NAS или МФУ, которые умеют только SMB1, современная Windows просто не увидит. Microsoft настоятельно не рекомендует возвращать SMB1 — правильное решение в таком случае — обновить прошивку устройства или заменить его.

Проверить и включить шифрование на Windows-сервере можно в PowerShell:

powershell
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EncryptData
Set-SmbServerConfiguration -EncryptData $true

Samba: SMB-сервер на Linux

Samba — свободная реализация SMB. С её помощью Linux-сервер раздаёт папки Windows- и macOS-клиентам, а также подключается к ресурсам Windows. По умолчанию современная Samba принимает соединения не ниже SMB 2.02 (server min protocol = SMB2_02) — то есть SMB1 выключен и здесь.

Минимальная общая папка для отдела:

ini
# /etc/samba/smb.conf
[global]
   server min protocol = SMB2_02
   server smb encrypt = desired

[docs]
   path = /srv/share/docs
   valid users = @office
   read only = no
   create mask = 0660
   directory mask = 0770
bash
sudo smbpasswd -a ivanov       # пароль Samba для пользователя системы
testparm                        # проверка конфигурации
sudo systemctl restart smbd
  • valid users = @office пускает только членов группы office.
  • read only по умолчанию yes — для записи его нужно выключить явно.
  • server smb encrypt = desired предлагает клиентам шифрование, но не требует его; required потребует шифрование от всех клиентов, и старые устройства подключиться не смогут.

Подключение с Linux-клиента:

bash
sudo mount -t cifs //192.0.2.20/docs /mnt/docs -o username=ivanov,vers=3.1.1

NFS: сетевая файловая система Unix

NFS (Network File System) изначально создан для Unix. Его естественная среда — Linux-серверы, кластеры виртуализации, хранилища для контейнеров и резервных копий.

Версии NFS

  • NFSv3 — простой и быстрый, но требует нескольких служб и портов (rpcbind на 111, mountd и другие), что усложняет межсетевой экран. Доступ определяется по адресу клиента, а пользователь — по числовому UID, который сообщает сам клиент.
  • NFSv4.x — работает через один порт 2049, поддерживает Kerberos и сопоставляет пользователей по именам, а не только по числам. Для новых установок выбирают его.

Главная ловушка NFS: кому сервер верит

По умолчанию NFS использует режим sec=sys: сервер доверяет UID и GID, которые передаёт клиент. Если на клиенте у пользователя UID 1000, сервер будет считать его владельцем файлов пользователя 1000 — даже если на сервере это другой человек. Отсюда два правила:

  1. Экспортировать только доверенным адресам, а не всей сети.
  2. Там, где клиентам нельзя доверять, использовать Kerberos: sec=krb5 (только аутентификация), krb5i (плюс целостность), krb5p (плюс шифрование).

Пользователь root на клиенте по умолчанию сопоставляется с анонимным пользователем (root_squash) — это защита, отключать которую без особой причины не стоит.

Минимальная настройка NFS-сервера

# /etc/exports
/srv/backup  192.0.2.0/24(rw,sync,no_subtree_check)
bash
sudo exportfs -ra           # применить изменения
sudo exportfs -v            # проверить, что экспортируется
# на клиенте
sudo mount -t nfs4 192.0.2.30:/srv/backup /mnt/backup

По документации exports: ro — значение по умолчанию, поэтому для записи нужен rw; sync отвечает клиенту только после записи данных на диск; async быстрее, но при сбое сервера данные могут потеряться.

Что на самом деле влияет на скорость

Споры «что быстрее — SMB или NFS» обычно упираются не в протокол, а в окружение:

  • Сеть. Гигабитная сеть ограничивает скорость примерно 110 МБ/с в любом протоколе. Переход на 10 Гбит/с даёт больше, чем смена протокола.
  • Диски. Если на сервере медленный массив, быстрый протокол не поможет.
  • Мелкие файлы. Тысячи маленьких файлов упираются в задержки операций с метаданными, а не в пропускную способность.
  • Синхронная запись. sync в NFS и шифрование в SMB замедляют запись — это цена надёжности и безопасности.
  • Параллельность. SMB 3 умеет multichannel, в Linux-клиенте NFS есть параметр монтирования nconnect для нескольких TCP-соединений.

Что выбрать

СитуацияПротокол
Офис с Windows и macOS, общие папки отделовSMB 3 (Windows Server или Samba)
Linux-серверы, виртуализация, контейнерыNFSv4
Хранилище резервных копий для Linux-машинNFSv4 или rsync по SSH
Смешанная сетьSamba для пользователей и NFS для серверов на одном хранилище
Доступ через интернетни тот ни другой напрямую — только через VPN

Типичные ошибки

  • Включённый обратно SMB1 ради старого МФУ. Это открывает сеть для уязвимостей, которыми пользуются шифровальщики. Лучше сканировать в папку по SMB2 после обновления прошивки или через другой механизм.
  • Порт 445 или 2049, открытый в интернет. Сетевые файловые системы рассчитаны на доверенную сеть.
  • NFS-экспорт на всю подсеть с no_root_squash. Любой root на любом клиенте получает права root на экспортированных файлах.
  • Разные UID на клиентах NFSv3. Файлы «меняют владельца» в зависимости от того, с какой машины на них смотреть.

// Похожая задача

Если у вас похожая ситуация

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

Тема статьи

Серверы и инфраструктура

VPS, Linux, веб-стек, миграции, хостинг, базы данных и базовая эксплуатация.

Часто с этим приходят

  • Перенести сайт или сервис на новый сервер
  • Настроить Linux, Nginx, базу данных и бэкапы
  • Разобраться, почему всё работает нестабильно

// Следующий шаг

Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.

Открыть услуги

// Contact

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Написать в Telegram

Отвечаю в течение рабочего дня (03:00–13:00 GMT)

Или оставьте заявку здесь:

Подтвердите, что вы не бот.

Написать и получить быстрый ответ