Гид по технологиям

Установка и настройка NFS на Debian 11 с ограничением доступа через UFW

• 9 min read • Linux • Обновлено 28 Nov 2025
NFS на Debian 11: установка, UFW и автоподключение
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-сервера

  1. Установите пакеты nfs-server и rpcbind:
apt install nfs-kernel-server rpcbind

При появлении запроса введите y и нажмите Enter.

Установка NFS-сервера на Debian 11

  1. Создайте каталоги для общего доступа (не делитесь корнем / или /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

Создание директорий для NFS

  1. Отредактируйте /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 на экспортируемых каталогах, если в сети есть ненадёжные клиенты.

  1. Перезапустите службу и проверьте её статус:
systemctl restart nfs-server
systemctl is-enabled nfs-server
systemctl status nfs-server

Ожидаемый статус: enabled и active (exited) — служба активна, демон может не иметь долгоживущего процесса.

Проверка статуса nfs-server


Защита NFS с помощью ufw

UFW — простой front-end для iptables/Netfilter. Здесь мы разрешаем доступ к NFS только указанным IP/сетям и обязательно разрешаем SSH, чтобы не потерять доступ.

  1. Установите UFW:
apt install ufw

Установка ufw

  1. Разрешите SSH (иначе вы можете потерять подключение по SSH при включении UFW):
ufw allow ssh
  1. Разрешите доступ к 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 для NFS

  1. Включите UFW и проверьте статус:
ufw enable
ufw status

Вы увидите активное состояние и правило для порта 2049 (nfs).

Статус UFW с правилами NFS

Notes: если у вас есть дополнительные сервисы RPC, возможно, потребуется разрешить диапазон портов или статические порты для служб (rpcbind, idmapd и т.д.).


Настройка NFS-клиента

  1. Установите необходимые пакеты на клиенте:
apt install nfs-common

Установка nfs-client

  1. Создайте точки монтирования:
mkdir -p /nfs/shared
mkdir -p /nfs/data
  1. Смонтируйте экспортированные каталоги:
mount 192.168.1.25:/mnt/shared /nfs/shared
mount 192.168.1.25:/srv/data /nfs/data
  1. Проверьте монтирование и содержимое:
df -h
cat /nfs/shared/test-file.txt
cat /nfs/data/test-file.txt

Проверка монтирования NFS

Если файлы отображаются — монтирование прошло успешно.


Проверка прав доступа (чтение/запись)

  1. Проверьте запись в разделе /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

  1. Проверка доступа только для чтения (/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.

Ошибка записи в read-only NFS


Автоматическое монтирование при загрузке (/etc/fstab)

  1. Отредактируйте /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 — кэширование атрибутов в секундах.
  1. Протестируйте конфигурацию перед перезагрузкой:
umount -R /nfs/shared
umount -R /nfs/data
mount -a
df -h

Если ошибок нет — автоподключение настроено корректно. Перезагрузите клиент для окончательной проверки.

Автомонтирование через /etc/fstab


Углублённая безопасность и повышенные требования

  1. Использование NFSv4 и Kerberos — лучший путь для защищённого окружения. Kerberos обеспечивает аутентификацию пользователей и служб. Реализация требует:
  • Настройки KDC (Kerberos Distribution Center).
  • Конфигурации krb5.conf на всех узлах.
  • Настройки idmapd (NFSv4 mapping).
  1. Ограничение сетевого доступа:
  • Разрешайте доступ только с конкретных IP или подсетей.
  • Рассмотрите использование VPN для мультисайтовых подключений.
  1. Минимизация прав на файловой системе:
  • Используйте root_squash по умолчанию.
  • Ограничивайте владельцев и права на экспортируемых каталогах.
  1. Логи и мониторинг:
  • Включите аудит доступа (auditd) на сервере при необходимости контроля.
  • Следите за нестандартной активностью и попытками записи из запрещённых подсетей.

Security hardening checklist (короткий):

  • Включить firewall и разрешить только нужные хосты.
  • Использовать root_squash, если нет явной причины отключать.
  • Перейти на NFSv4+Kerberos при необходимости шифрования/аутентификации.
  • Мониторить логи, контролировать uid/gid клиентов.

Общие ошибки и способы их устранения (Troubleshooting)

  1. Проблема: не видно экспортов с сервера.
  • Проверьте /etc/exports и права.
  • Выполните exportfs -r и exportfs -v.
  • Убедитесь, что rpcbind запущен (systemctl status rpcbind).
  1. Проблема: доступ блокируется firewall.
  • Проверьте ufw status и правила.
  • Разрешите порт nfs (2049) и, при необходимости, порты для rpcbind и mountd.
  1. Проблема: «Read-only file system», хотя экспорт rw.
  • Проверьте права файловой системы на сервере.
  • Убедитесь, что монтирование клиента не выполнено с опцией ro в /etc/fstab.
  1. Проблема: задержки и плохая производительность.
  • Попробуйте параметр async (с осторожностью).
  • Тестируйте через TCP, используйте noatime и actimeo для уменьшения I/O.
  • Проверьте сеть, MTU и нагрузку диска.
  1. Проблема: 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).
  • Логи на сервере не содержат ошибок о правах доступа при нормальной работе.

Примеры тест-кейсов:

  1. TC-01: Простой монтирование и чтение
  • Шаги: mount экспорт, выполнить cat test-file.txt
  • Ожидаемый результат: файл читается.
  1. TC-02: Запись в rw-экспорт
  • Шаги: попытка создать файл в /nfs/shared
  • Ожидаемый результат: файл создаётся и читается.
  1. TC-03: Запись в ro-экспорт
  • Шаги: попытка создать файл в /nfs/data
  • Ожидаемый результат: операция завершается ошибкой «Read-only file system».
  1. 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 — краткий план

  1. Проверить поддержку NFSv4 на всех клиентах и серверах.
  2. Настроить idmapd и синхронизировать доменные имена/UID/GID.
  3. При необходимости развернуть Kerberos для аутентификации.
  4. Поэтапно переводить экспорты и тестировать приложения.

Краткая галерея типичных ошибок (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) — если клиенты потеряли доступ

  1. Проверить, доступен ли сервер по сети: ping 192.168.1.25.
  2. На сервере: systemctl status nfs-server rpcbind; exportfs -v.
  3. Проверить правила ufw: ufw status verbose.
  4. На клиенте: showmount -e 192.168.1.25; mount | grep nfs; dmesg | tail -n 50.
  5. При обнаружении ошибок в конфигурации /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).
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро