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

Установка и настройка NFS на Ubuntu 22.04 — сервер и клиент

• 9 min read • Инфраструктура • Обновлено 23 Nov 2025
NFS на Ubuntu 22.04: сервер и клиент
NFS на Ubuntu 22.04: сервер и клиент

Схема NFS: сервер и клиенты

Введение

Что такое NFS? NFS (Network File System) — сетевой протокол, который позволяет пользователям и приложениям работать с удалёнными файлами так, как будто они расположены локально. Первоначально разработан компанией Sun Microsystems, NFS остаётся стандартом для обмена файлами в Unix‑совместимых системах.

NFS удобно применять в централизованных средах: один сервер хранит данные, к которым подключаются множество клиентов. В этом руководстве описаны шаги для Ubuntu 22.04: установка сервера и клиента, настройка экспортов, правила брандмауэра, автоматический монтирование и проверка записи.

Кому полезно: системным администраторам, инженерам DevOps, консультантам по инфраструктуре.

Ключевые понятия в одну строку:

  • Экспорт — каталог, который сервер предоставляет для доступа клиентам.
  • Монтирование — подключение удалённого экспорта в локальную файловую систему клиента.
  • NFSv3 / NFSv4 — версии протокола с различиями в производительности и безопасности.

Основные варианты использования и варианты запросов

Primary intent: установка и настройка NFS на Ubuntu 22.04 Related intents: настройка NFS сервера, настройка NFS клиента, автоматический монтирование NFS, безопасность NFS, отладка NFS

Требования

  • Ubuntu Server 22.04 — для установки NFS‑сервера.
  • Клиентская машина с Linux (в примерах — Ubuntu).
  • Пользователь с правами sudo на обеих машинах.
  • Сетевой доступ между сервером и клиентами (учтите VLAN/маршрутизацию).

Установка и базовая настройка NFS-сервера

  1. Подключитесь к серверу и переключитесь на root (или используйте sudo):
ssh user@SERVER-IP
sudo su
  1. Обновите список пакетов и установите пакет сервера NFS:
sudo apt update
sudo apt install nfs-kernel-server
  1. Проверьте статус службы NFS:
sudo systemctl is-enabled nfs-server
sudo systemctl status nfs-server

Проверка статуса службы NFS

Примечание: на Ubuntu 22.04 основные настройки расположены в /etc/nfs.conf, а дополнительные — в файлах /etc/default/nfs-*. По умолчанию включены NFSv3 и NFSv4.

Проверить поддерживаемые версии ядром сервера можно так:

cat /proc/fs/nfsd/versions

Вывод может выглядеть так: -2 +3 +4 +4.1 +4.2 — знак + означает включённую версию.

Создание экспортов и права доступа

  1. Создайте каталоги, которые будете экспортировать:
sudo mkdir -p /srv/backups /mnt/shared
  1. Установите владельца и права. В примерах используется nobody:nogroup и права 777, чтобы упростить демонстрацию. В продакшне настройте права более строго.
sudo chown -R nobody:nogroup /srv/backups /mnt/shared
sudo chmod 777 /srv/backups /mnt/shared
  1. Отредактируйте /etc/exports и добавьте строки экспорта. В примере:
sudo nano /etc/exports

Добавьте:

/srv/backups 192.168.5.100(rw,sync,no_subtree_check)
/mnt/shared 192.168.10.0/24(rw,sync,no_subtree_check)

Пояснения к опциям:

  • rw — разрешить чтение и запись;
  • sync — запись на диск на сервере выполняется до подтверждения клиенту (безопаснее, но медленнее);
  • no_subtree_check — отключает проверку поддерева, улучшает совместимость при переименовании/перемещении файлов.
  1. Примените экспорты и перезапустите службу:
sudo exportfs -a
sudo systemctl restart nfs-server
sudo systemctl status nfs-server
  1. Посмотреть текущие экспортируемые каталоги:
sudo exportfs -v

Список экспортов NFS

Важно: используйте конкретные IP или подсети в /etc/exports. Экспорт на “*” (всем) опасен.

Безопасность: настройка брандмауэра UFW

По умолчанию NFS использует порт 2049 (TCP/UDP). Чтобы ограничить доступ, добавьте правила UFW для конкретных хостов/сетей:

sudo ufw allow from 192.168.5.100 to any port nfs
sudo ufw allow from 192.168.10.0/24 to any port nfs
sudo ufw reload
sudo ufw status

Правила UFW для NFS

Советы по безопасности:

  • По возможности используйте NFSv4 с авторизацией и Kerberos (sec=krb5/krb5i).
  • Разделяйте сети управления и передачи данных.
  • Используйте сетевые ACL и VPN для доступа через публичные сети.
  • Ограничивайте доступ не только по IP, но и на уровне прав файловой системы и пользователей.

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

Подключитесь к клиентской машине (или откройте терминал на рабочей станции):

ssh root@CLIENT-IP

Установите пакет клиента:

sudo apt update
sudo apt install nfs-common

Установка клиента NFS

Монтирование вручную

  1. Создайте точку монтирования на клиенте:
sudo mkdir -p /mnt/data
  1. Смонтируйте экспорт сервера (замените nfs_server_ip на IP или DNS сервера):
sudo mount nfs_server_ip:/srv/backups /mnt/data
  1. Проверьте монтирование:
sudo df -h

Монтирование NFS

Проверка записи

На клиенте создайте файл в точке монтирования:

echo "This file from client" > /mnt/data/write.txt
cat /mnt/data/write.txt

На сервере проверьте наличие и содержимое:

cat /srv/backups/write.txt
ls /srv/backups/

Тест записи

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

  1. Отмонтируйте временно смонтированную точку:
sudo umount /mnt/data
  1. Откройте /etc/fstab и добавьте запись:
sudo nano /etc/fstab

Добавьте строку (замените nfs_server_ip):

nfs_server_ip:/srv/backups    /mnt/data   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Пояснение параметров:

  • auto — монтировать при загрузке;
  • nofail — не останавливать загрузку, если ресурс недоступен;
  • noatime — не обновлять время последнего доступа (экономит I/O);
  • nolock — отключает блокировки (небезопасно для приложений, требующих блокировок);
  • intr — позволяет прерывать операции монтирования (устаревшая опция для некоторых реализаций);
  • actimeo=1800 — кэширование атрибутов в секундах (уменьшает сетьную нагрузку).
  1. Примените изменения:
sudo mount -a
sudo df -h

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

Альтернатива: systemd‑автоматическое монтирование с опцией x-systemd.automount для более гибкого управления.

Подробные опции экспорта и монтирования — что выбрать

Короткие рекомендации:

  • Для большинства сценариев использования выбирайте NFSv4 (меньше портов, улучшенная автентификация).
  • Для высокой производительности используйте async с осторожностью (риск потери данных при падении сервера).
  • Для приложений с интенсивной работой с метаданными уменьшите actimeo.

Частые опции для /etc/exports:

  • ro — только для чтения;
  • rw — чтение/запись;
  • sync / async — синхронная/асинхронная запись;
  • root_squash / no_root_squash — отображение root клиента на nobody (рекомендуется root_squash);
  • all_squash — отображение всех пользователей на nobody;
  • anonuid / anongid — задать UID/GID для анонимных пользователей.

Частые опции для mount:

  • rw,ro — режим доступа;
  • vers=3/4 — версия протокола;
  • proto=tcp/udp — транспортный протокол;
  • rsize/wsize — размер буферов чтения/записи;
  • timeo — таймаут операции;
  • soft/hard — поведение при ошибках сети (soft позволяет ошибку, hard повторяет запросы — предпочтительнее для целостности).

Советы по производительности

  • Увеличьте rsize/wsize для высокоскоростных сетей (например, rsize=65536,wsize=65536), но тестируйте.
  • Для больших потоковых операций используйте TCP.
  • Настройте параметр actimeo для баланса между свежестью метаданных и нагрузкой на сеть.
  • На сервере используйте быстрые диски и RAID‑массивы; при больших нагрузках рассмотрите кеширование на стороне клиента.

Безопасность и жёсткая настройка

  1. Kerberos: для безопасной аутентификации используйте NFSv4 с Kerberos (sec=krb5/krb5i/krb5p). Требует настройки KDC и соответствующих сервисных ключей.
  2. Шифрование: NFS не шифрует трафик по умолчанию. Для передачи по небезопасным сетям используйте VPN или IPsec.
  3. SELinux/AppArmor: на серверах с включённым SELinux/AppArmor убедитесь, что контекст безопасности директорий и профили разрешают экспорт и доступ.
  4. Разделение прав: используйте root_squash и anonuid/anongid, чтобы ограничить привилегии удалённых пользователей.

Совместимость и миграция

  • NFSv3 совместим с большинством старых клиентов, но требует дополнительных портов (rpcbind и динамические порты).
  • NFSv4 использует один TCP‑порт 2049 и имеет встроенную поддержку stateful‑сессий.
  • При миграции учитывайте поведение блокировок и привязку пользователей (UID/GID) между серверами.

Отладка и типичные ошибки

  1. Проблема: клиент не монтирует экспорт. Проверки:
  • Убедитесь, что export видим: на сервере sudo exportfs -v.
  • На клиенте выполните showmount -e nfs_server_ip.
  • Проверьте сетевую доступность: ping, nc -z nfs_server_ip 2049.
  • Проверьте брандмауэр (UFW, iptables, firewalld).
  1. Проблема: “Permission denied” при записи. Проверки:
  • Права файловой системы на сервере (uid/gid); совпадают ли они с клиентскими пользователями.
  • root_squash может отображать root клиента как nobody — проверьте.
  • SELinux/AppArmor — временно отключите (для теста) или проверьте логи.
  1. Проблема: медленный доступ. Проверки:
  • Проверьте сетевые задержки и потери.
  • Настройте rsize/wsize и actimeo.
  • Оцените нагрузку на диск сервера.

Полезные команды для отладки:

# Показывает экспортируемые каталоги с сервера
exportfs -v

# На клиенте: показ доступных экспортов
showmount -e nfs_server_ip

# Проверка портов
sudo ss -ltnp | grep nfs
sudo ss -lpn | grep 2049

# Журналы
sudo journalctl -u nfs-server -b
sudo dmesg | tail -n 50

Контроль качества и тесты

Ключевые тесты после настройки:

  • Подключение: mount и df -h показывают точку монтирования.
  • Запись: создание/чтение файла с клиента и проверка на сервере.
  • Параллельность: несколько клиентов одновременно читают/записывают файлы.
  • Перезагрузка: перезагрузить клиент и убедиться, что запись через /etc/fstab монтируется автоматически.

Критерии приёмки:

  • Экспорт доступен с указанных IP/подсетей.
  • Права файлов соответствуют ожиданиям (чтение/запись разрешены там, где нужно).
  • Брандмауэр позволяет доступ только указанным хостам.
  • Нет ошибок в журнале nfs-server после перезапуска.

Резервирование, мониторинг и бэкапы

  • NFS — способ делиться данными, но не заменяет резервное копирование. Планируйте регулярные бэкапы.
  • Мониторьте I/O, загрузку CPU и сетевые метрики. Инструменты: Prometheus + node_exporter, Zabbix, Grafana.
  • Рассмотрите HA‑решения: файловые кластеры, DRBD + кластерная система файлов.

Роли и чек‑листы

Для администратора сервера:

  • Установить пакет nfs-kernel-server.
  • Создать каталоги и настроить права.
  • Отредактировать /etc/exports и применить exportfs -a.
  • Настроить брандмауэр и проверить доступ.
  • Настроить мониторинг и журналирование.

Для администратора клиента:

  • Установить nfs-common.
  • Создать точку монтирования.
  • Тестово смонтировать вручную и проверить запись.
  • Добавить запись в /etc/fstab или настроить systemd automount.

Частые ошибки и готовые исправления

  • “mount: wrong fs type, bad option” — убедитесь в правильности опции vers и proto.
  • “stale NFS file handle” — файл был удалён или иноды изменились; размонтируйте и перемонтируйте.
  • “permission denied” — проверьте UID/GID и root_squash.

Краткая методология для внедрения NFS в продакшн

  1. Спроектировать сеть и список клиентов, имеющих доступ.
  2. Подготовить сервер (диски, RAID, бэкапы).
  3. Настроить экспорты с минимально необходимыми правами.
  4. Защитить доступ брандмауэром и при возможности использовать Kerberos.
  5. Протестировать производительность и отказоустойчивость.
  6. Ввести мониторинг и процедуры восстановления.

Глоссарий в одну строку

  • export — каталог на сервере, предоставляемый клиентам;
  • mount — подключение экспорта в локальную файловую систему;
  • root_squash — отображение root клиента в не привилегированного пользователя;
  • actimeo — время кэширования атрибутов в секундах.

Часто задаваемые вопросы

Как выбрать между NFSv3 и NFSv4?

NFSv4 рекомендуется для новых развертываний: он использует TCP/2049, упрощает безопасность и поддерживает stateful‑сессии. NFSv3 остаётся для совместимости.

Можно ли использовать NFS через интернет?

Прямое использование NFS через интернет не рекомендуется без VPN/IPsec, так как трафик не шифруется по умолчанию.

Что делать, если после монтирования файлы недоступны или пусты?

Проверьте права на сервере, соответствие UID/GID, и логи nfs-server. Попробуйте размонтировать и снова смонтировать.

Как включить Kerberos для NFS?

Это отдельная комплексная настройка: потребуется KDC (например, MIT KDC или Active Directory), создание ключей для nfs/имя_сервера и настройка секции sec=krb5 в /etc/exports и на клиенте.

Нужно ли ставить одинаковые UID/GID на всех клиентах?

Да, для корректных прав доступа рекомендуется поддерживать согласованность UID/GID между серверами и клиентами либо использовать механизм отображения через anonuid/anongid.

Итоги

Вы успешно узнали, как установить NFS‑сервер и клиент на Ubuntu 22.04, как экспортировать каталоги, настраивать брандмауэр, автоматически монтировать экспорты и тестировать права записи. Для продакшна обратите внимание на безопасность (Kerberos, VPN), согласование UID/GID, мониторинг и резервирование.

Важно: всегда тестируйте изменения в изолированной среде перед применением в продакшн.

Краткие шаги для быстрого старта:

  1. sudo apt install nfs-kernel-server на сервере;
  2. настроить /etc/exports и sudo exportfs -a;
  3. sudo apt install nfs-common на клиенте и sudo mount nfs_server_ip:/srv/backups /mnt/data;
  4. добавить запись в /etc/fstab для автоподключения.

Заметки

  • Всегда ограничивайте доступ по IP/подсети и минимизируйте привилегии.
  • Для шифрования трафика используйте VPN или IPsec.
  • Документируйте настройки UID/GID и политику бэкапов.
Поделиться: 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 быстро