Установка и настройка NFS на Debian 11 с ограничением доступа через UFW
- Установите на сервере пакеты nfs-kernel-server и rpcbind, создайте общие директории, внесите их в /etc/exports и перезапустите службу nfs-server.
- На сервере настроьте ufw: разрешите ssh и доступ к порту nfs (2049) только для доверенных хостов/сетей.
- На клиентах установите nfs-common, создайте точки монтирования, смонтируйте вручную или пропишите в /etc/fstab для авто-маунта при загрузке.
- Проверьте права (rw/ro) и при необходимости примените дополнительные меры безопасности (Kerberos/NFSv4, export options, сетевые ACL).
Краткое описание: пошаговая инструкция по установке NFS-сервера и клиента на Debian 11 (Bullseye), настройке экспорта, ограничению доступа через ufw, проверке прав доступа и автоподключению через /etc/fstab. Включены практические советы по безопасности, проверочные сценарии и чеклисты для ролей.
Что такое NFS (в одном предложении)
NFS (Network File System) — сетевой протокол, который позволяет монтировать удалённые файловые системы по сети, чтобы клиенты могли работать с ними как с локальными каталогами.
Основные версии и совместимость
- NFSv2 и NFSv3: широко поддерживаются, просты, но имеют минимальные встроенные средства безопасности; рекомендуется использовать только в доверенных локальных сетях.
- NFSv4: добавляет базовые функции безопасности (аутентификация и шифрование) при интеграции с Kerberos; требует дополнительной настройки для безопасного использования.
Важно: NFS работает по модели «сервер — клиенты» и использует rpcbind для регистрации RPC-сервисов.
Предварительные требования
- Две машины в одной сети (пример):
- debian64 — 192.168.1.25 — роль: NFS Server
- client-debian — 192.168.1.30 — роль: NFS Client
- Доступ root или пользователь с sudo-привилегиями на обеих машинах.

Установка и базовая настройка NFS-сервера
- Установите пакеты nfs-server и rpcbind:
apt install nfs-kernel-server rpcbindПри появлении запроса введите y и нажмите Enter.

- Создайте каталоги для общего доступа (не делитесь корнем / или /etc):
mkdir -p /mnt/shared
mkdir -p /srv/dataСоздайте тестовые файлы:
echo "test file nfs server" > /mnt/shared/test-file.txt
echo "test file nfs server" > /srv/data/test-file.txtУстановите владельца nobody:nogroup (анонимный пользователь для NFS):
chown nobody:nogroup /mnt/shared /srv/data
- Отредактируйте /etc/exports, чтобы объявить экспорты:
nano /etc/exportsПримеры записей (с пояснениями далее):
- Экспорт для одного хоста с записью и чтением:
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)- Экспорт для нескольких сетей/хостов:
/srv/data 172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check) 10.11.12.0/24(rw,no_subtree_check)- Экспорт только для чтения:
/srv/data 192.168.1.30(ro)Финальный пример:
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)
/srv/data 172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check) 10.11.12.0/24(rw,no_subtree_check)
/srv/data 192.168.1.30(ro,no_root_squash)Сохраните изменения (Ctrl+X, Y, Enter в nano).
Опции, которые важно понимать:
- rw — разрешить чтение и запись.
- ro — только чтение.
- sync — сервер отвечает после фиксации данных на диске (безопаснее, по умолчанию включено).
- async — сервер может ответить раньше фиксации (ускоряет, но рискованно).
- subtree_check / no_subtree_check — проверка поддерева; отключение может повысить надёжность при перемещении экспортируемых файлов.
- root_squash / no_root_squash — отображение запросов от root на анонимного пользователя; обычно включают root_squash для безопасности.
Important: по соображениям безопасности избегайте no_root_squash на экспортируемых каталогах, если в сети есть ненадёжные клиенты.
- Перезапустите службу и проверьте её статус:
systemctl restart nfs-server
systemctl is-enabled nfs-server
systemctl status nfs-serverОжидаемый статус: enabled и active (exited) — служба активна, демон может не иметь долгоживущего процесса.

Защита NFS с помощью ufw
UFW — простой front-end для iptables/Netfilter. Здесь мы разрешаем доступ к NFS только указанным IP/сетям и обязательно разрешаем SSH, чтобы не потерять доступ.
- Установите UFW:
apt install ufw
- Разрешите SSH (иначе вы можете потерять подключение по SSH при включении UFW):
ufw allow ssh- Разрешите доступ к NFS только с доверенных узлов:
Разрешить один хост:
ufw allow from 192.168.1.30 to any port nfsРазрешить сети:
ufw allow from 172.16.1.0/24 to any port nfs
ufw allow from 10.11.12.0/24 to any port nfs
- Включите UFW и проверьте статус:
ufw enable
ufw statusВы увидите активное состояние и правило для порта 2049 (nfs).

Notes: если у вас есть дополнительные сервисы RPC, возможно, потребуется разрешить диапазон портов или статические порты для служб (rpcbind, idmapd и т.д.).
Настройка NFS-клиента
- Установите необходимые пакеты на клиенте:
apt install nfs-common
- Создайте точки монтирования:
mkdir -p /nfs/shared
mkdir -p /nfs/data- Смонтируйте экспортированные каталоги:
mount 192.168.1.25:/mnt/shared /nfs/shared
mount 192.168.1.25:/srv/data /nfs/data- Проверьте монтирование и содержимое:
df -h
cat /nfs/shared/test-file.txt
cat /nfs/data/test-file.txt
Если файлы отображаются — монтирование прошло успешно.
Проверка прав доступа (чтение/запись)
- Проверьте запись в разделе /nfs/shared (если экспорт с rw):
cd /nfs/shared
ls
cat test-file.txt
echo "This file from nfs-client" > client.txt
cat client.txtЕсли файл client.txt создан — права на запись работают. Конфигурация, например:
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)
- Проверка доступа только для чтения (/nfs/data):
cd /nfs/data
ls
cat test-file.txt
echo "This is a file from client to data" > client-data.txtОжидаемая ошибка: “Read-only file system” — права соответствуют настройке ro.

Автоматическое монтирование при загрузке (/etc/fstab)
- Отредактируйте /etc/fstab на клиенте:
nano /etc/fstabПример строк (подставьте свои IP и пути):
192.168.1.25:/mnt/shared /nfs/shared nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.1.25:/srv/data /nfs/data nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0Опции fstab, которые используются:
- auto — монтировать при загрузке.
- nofail — не мешать загрузке, если монтирование не удалось.
- noatime — экономит записи атрибутов доступа.
- nolock — отключает механизм блокировок (используется в специфичных сценариях).
- intr — позволяет прерывать операции монтирования (устаревшая опция, но иногда полезна).
- tcp — использовать TCP (надёжнее через ненадёжные сети).
- actimeo — кэширование атрибутов в секундах.
- Протестируйте конфигурацию перед перезагрузкой:
umount -R /nfs/shared
umount -R /nfs/data
mount -a
df -hЕсли ошибок нет — автоподключение настроено корректно. Перезагрузите клиент для окончательной проверки.

Углублённая безопасность и повышенные требования
- Использование NFSv4 и Kerberos — лучший путь для защищённого окружения. Kerberos обеспечивает аутентификацию пользователей и служб. Реализация требует:
- Настройки KDC (Kerberos Distribution Center).
- Конфигурации krb5.conf на всех узлах.
- Настройки idmapd (NFSv4 mapping).
- Ограничение сетевого доступа:
- Разрешайте доступ только с конкретных IP или подсетей.
- Рассмотрите использование VPN для мультисайтовых подключений.
- Минимизация прав на файловой системе:
- Используйте root_squash по умолчанию.
- Ограничивайте владельцев и права на экспортируемых каталогах.
- Логи и мониторинг:
- Включите аудит доступа (auditd) на сервере при необходимости контроля.
- Следите за нестандартной активностью и попытками записи из запрещённых подсетей.
Security hardening checklist (короткий):
- Включить firewall и разрешить только нужные хосты.
- Использовать root_squash, если нет явной причины отключать.
- Перейти на NFSv4+Kerberos при необходимости шифрования/аутентификации.
- Мониторить логи, контролировать uid/gid клиентов.
Общие ошибки и способы их устранения (Troubleshooting)
- Проблема: не видно экспортов с сервера.
- Проверьте /etc/exports и права.
- Выполните
exportfs -rиexportfs -v. - Убедитесь, что rpcbind запущен (
systemctl status rpcbind).
- Проблема: доступ блокируется firewall.
- Проверьте
ufw statusи правила. - Разрешите порт nfs (2049) и, при необходимости, порты для rpcbind и mountd.
- Проблема: «Read-only file system», хотя экспорт rw.
- Проверьте права файловой системы на сервере.
- Убедитесь, что монтирование клиента не выполнено с опцией ro в /etc/fstab.
- Проблема: задержки и плохая производительность.
- Попробуйте параметр async (с осторожностью).
- Тестируйте через TCP, используйте noatime и actimeo для уменьшения I/O.
- Проверьте сеть, MTU и нагрузку диска.
- Проблема: uid/gid не совпадают между сервером и клиентом.
- Используйте единый каталог пользователей (LDAP/NSS) или корректную настройку idmapd для NFSv4.
Mini-checklist для отладки:
- exportfs -v
- systemctl status nfs-server rpcbind nfs-kernel-server
- ufw status
- showmount -e 192.168.1.25
- mount | grep nfs
Тест-кейсы и критерии приёмки
Критерии приёмки:
- Клиент успешно монтирует все перечисленные экспорты после reboot.
- Файловая система доступна с ожидаемыми правами (rw / ro).
- Доступ ограничен только доверенными IP/сетями (проверяется через ufw).
- Логи на сервере не содержат ошибок о правах доступа при нормальной работе.
Примеры тест-кейсов:
- TC-01: Простой монтирование и чтение
- Шаги: mount экспорт, выполнить cat test-file.txt
- Ожидаемый результат: файл читается.
- TC-02: Запись в rw-экспорт
- Шаги: попытка создать файл в /nfs/shared
- Ожидаемый результат: файл создаётся и читается.
- TC-03: Запись в ro-экспорт
- Шаги: попытка создать файл в /nfs/data
- Ожидаемый результат: операция завершается ошибкой «Read-only file system».
- TC-04: Ограничение доступ по IP
- Шаги: попытка монтирования с IP вне списка разрешённых
- Ожидаемый результат: попытка блокируется.
Чеклисты по ролям
Администратор сервера:
- Установить nfs-kernel-server и rpcbind.
- Настроить /etc/exports и проверить exportfs -v.
- Установить и настроить ufw, добавить правила для NFS и SSH.
- Настроить мониторинг и логи.
Администратор клиента:
- Установить nfs-common.
- Создать точки монтирования и протестировать mount.
- Добавить строки в /etc/fstab с nofail и протестировать через mount -a.
Разработчик/пользователь приложения:
- Проверить доступность файлов через приложение.
- Убедиться в корректном управлении блокировками и ожиданиях I/O.
- При необходимости координировать uid/gid с администратором.
Советы по производительности и совместимости
- NFSv3 лучше подходит для простых LAN-сетей с высокой скоростью; NFSv4 предлагает улучшения и более простую конфигурацию через один порт и поддержку привязки к домену.
- Для высоких нагрузок используйте SSD/RAID, настройте кеширование на клиенте и сервере, применяйте noatime и actimeo.
- Проверяйте, что MTU и сетевые параметры скорректированы для вашей среды.
Compatibility matrix (упрощённо):
- NFSv2: устаревший, поддержка ограничена.
- NFSv3: широкая поддержка, без встроенного шифрования.
- NFSv4: современный, поддерживает Kerberos, междоменные сценарии.
Миграция с NFSv3 на NFSv4 — краткий план
- Проверить поддержку NFSv4 на всех клиентах и серверах.
- Настроить idmapd и синхронизировать доменные имена/UID/GID.
- При необходимости развернуть Kerberos для аутентификации.
- Поэтапно переводить экспорты и тестировать приложения.
Краткая галерея типичных ошибок (Edge-case gallery)
- NFS mount работает локально, но изнутри контейнера нет доступа — проблема с namespace и привилегиями контейнера.
- Файлы появляются с UID 65534 (nobody) — проверьте root_squash и картирование пользователей.
- Проблемы с блокировками при использовании NFS и баз данных — используйте локальные диски для БД.
Краткий глоссарий
- RPC: Remote Procedure Call — механизм удалённого вызова процедур (используется rpcbind).
- rpcbind: сервис регистрации RPC-скриптов и сопоставления портов.
- idmapd: демон сопоставления имён пользователей NFSv4.
- Kerberos: система сетевой аутентификации для безопасных NFS-сессий.
Шаблон /etc/exports для частого использования
# каталог разрешённые_хосты/сети(опции)
/mnt/shared 192.168.1.30(rw,sync,no_subtree_check)
/srv/data 172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check)Пример инцидентного плана (Runbook) — если клиенты потеряли доступ
- Проверить, доступен ли сервер по сети: ping 192.168.1.25.
- На сервере: systemctl status nfs-server rpcbind; exportfs -v.
- Проверить правила ufw: ufw status verbose.
- На клиенте: showmount -e 192.168.1.25; mount | grep nfs; dmesg | tail -n 50.
- При обнаружении ошибок в конфигурации /etc/exports — исправить и выполнить exportfs -r, затем перезапустить службу.
Заключение
Вы успешно настроили NFS-сервер и клиента на Debian 11: установили сервисы, объявили экспорты, ограничили доступ с помощью ufw, проверили права доступа и настроили автоподключение через /etc/fstab. Для продакшн-среды рассмотрите переход на NFSv4 с Kerberos и дополнительные меры мониторинга и аудита.
Рекомендация на будущее: при построении защищённой инфраструктуры файловых хранилищ NFS следует комбинировать сетевые фильтры, контроль прав доступа на уровне ОС и, при необходимости, Kerberos для аутентификации.
Summary
- Установите nfs-kernel-server и rpcbind на сервер, nfs-common на клиентах.
- Настройте /etc/exports и перезапустите nfs-server.
- Ограничьте доступ через ufw, разрешив только доверенные IP/сети.
- Настройте /etc/fstab для автоподключения и проверьте права (rw/ro).
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента