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

Настройка NFS на Rocky Linux 8: сервер и клиент

• 8 min read • DevOps • Обновлено 26 Nov 2025
Настройка NFS на Rocky Linux 8
Настройка NFS на Rocky Linux 8

Иллюстрация сетевого обмена файлами через NFS

Этот пошаговый гид показывает, как установить и настроить NFS-сервер и NFS-клиент на Rocky Linux 8: установите пакеты, подготовьте директории, экспортируйте их через /etc/exports, настройте firewalld, смонтируйте точки на клиенте и сделайте монтирование постоянным через /etc/fstab. В разделе безопасности и отладки приведены варианты для защищённого использования в продакшне и пошаговый план устранения неисправностей.

О чём статья

  • Быстрая настройка NFSv4 для общего доступа к файлам в приватной сети
  • Пояснение ключевых опций экспорта и монтирования
  • Настройка firewall и постоянного монтирования
  • Практические советы по безопасности, производительности и отладке

Основные термины

  • NFS — протокол распределённой файловой системы для доступа к удалённым файловым системам как к локальным.
  • Экспорт — объявление директории сервера доступной клиентам (файл /etc/exports).
  • Монтирование — подключение удалённой экспортированной директории к точке в локальной файловой системе клиента.

Требования

  • Две машины с Rocky Linux 8 (Host и Client). На каждой — пользователь с sudo.
  • Желательно статические IP-адреса или приватная сеть. В примерах: host_ip и client_ip.

Важно: NFS из коробки не шифрует трафик. Для продакшна рассмотрите дополнительные уровни защиты (VPN, Kerberos, TLS/стороннее туннелирование).

Шаг 1 — Установка NFS на сервере и клиенте

Host

Установите пакет nfs-utils, он содержит демоны и утилиты для сервера NFS.

$ sudo dnf install nfs-utils

Запустите и включите сервис nfs-server. Остальные сервисы для NFS (nfsd, nfs-idmapd, rpcbind, rpc.mountd и т. п.) поднимутся автоматически.

$ sudo systemctl enable nfs-server --now

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

$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

Знак минус перед версией 2 означает, что NFSv2 отключён. В реальности используются NFSv3 или NFSv4.x.

Конфигурации хранятся в /etc/nfsmount.conf (параметры монтирования) и /etc/nfs.conf (параметры демонов).

Client

На клиенте установите nfs-utils и инструменты ACL для NFSv4:

$ sudo dnf install nfs-utils nfs4-acl-tools

Шаг 2 — Создание директорий для шаринга на сервере

Мы продемонстрируем два случая:

  • Общая директория с типичным поведением NFS (root-squash по умолчанию)
  • Поделиться домашней директорией сервера (с no_root_squash)

Замечание: NFS по умолчанию маппит root-клиента на непривилегированного пользователя (обычно nobody) на сервере — это называется root_squash. Это ограничение повышает безопасность.

Общая директория

Создайте каталог для шаринга:

host:$ sudo mkdir -p /var/nfs/share

По умолчанию каталог будет принадлежать root:

host:$ ls -l /var/nfs
total 0
drwxr-xr-x. 2 root root 6 Dec 13 07:30 share

Чтобы согласовать права с маппингом nobody, измените владельца:

host:$ sudo chown nobody:nobody /var/nfs/share

(в исходном примере была опечатка /var/nfs/general — используйте существующую директорию /var/nfs/share)

Домашняя директория

Домашняя директория пользователей уже существует и менять её права обычно не нужно. Мы покажем пример, как экспортировать /home, и обсудим риски.


Шаг 3 — Конфигурирование экспортов на сервере

Откройте /etc/exports:

host:$ sudo nano /etc/exports

Добавьте строки:

/var/nfs/share      client_ip(rw,sync,no_subtree_check)
/home               client_ip(rw,sync,no_root_squash,no_subtree_check)

Замените client_ip на реальный IP клиента или сеть (например 192.168.1.0/24). Каждая экспортируемая директория должна быть в отдельной строке.

Пояснение опций:

  • rw — чтение и запись для клиента.
  • sync — синхронная запись на диск перед подтверждением (надёжнее, медленнее).
  • no_subtree_check — отключает проверку поддерева, повышает надёжность при переименованиях.
  • no_root_squash — позволяет root на клиенте действовать как root на сервере (опасно без контроля).

Сохраните изменения и выполните экспорт:

host:$ sudo exportfs -arv
exporting client_ip:/home
exporting client_ip:/var/nfs/share

Ключи exportfs:

  • -a — экспортировать все директории из /etc/exports
  • -r — пересоздать список экспортов
  • -v — подробный вывод

Посмотреть текущие экспорты:

host:$ sudo exportfs -s
/var/nfs/share  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/home  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

Шаг 4 — Настройка брандмауэра на сервере

Rocky Linux использует firewalld. Проверьте статус:

host:$ sudo firewall-cmd --state
running

Добавьте службы NFS в публичную зону и при необходимости разрешите источник с IP клиента.

host:$ sudo firewall-cmd --permanent --add-service=nfs
host:$ sudo firewall-cmd --permanent --add-service=rpc-bind
host:$ sudo firewall-cmd --permanent --add-service=mountd
host:$ sudo firewall-cmd --permanent --add-source=client_ip
host:$ sudo firewall-cmd --reload

Если клиент и сервер в одной подсети, можно вместо добавления источника предоставить доступ по сети.

Important: если вы используете статические порты для mountd/lockd/rpc/statd, их можно закрепить в конфиге /etc/nfs.conf и открыть конкретные порты, чтобы упростить фильтрацию.


Шаг 5 — Создание точек монтирования на клиенте

Проверьте список экспортов с клиента:

client:$ showmount -e host_ip
Export list for host_ip:
/home          host_ip
/var/nfs/share host_ip

Создайте директории для монтирования локально:

client:$ sudo mkdir -p /nfs/share
client:$ sudo mkdir -p /nfs/home

Смонтируйте ресурсы:

client:$ sudo mount host_ip:/var/nfs/share /nfs/share
client:$ sudo mount host_ip:/home /nfs/home

Проверка:

client:$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
devtmpfs                   370M     0  370M   0% /dev
tmpfs                      405M     0  405M   0% /dev/shm
tmpfs                      405M   16M  389M   4% /run
tmpfs                      405M     0  405M   0% /sys/fs/cgroup
/dev/vda1                   25G  2.4G   23G  10% /
tmpfs                       81M     0   81M   0% /run/user/1000
host_ip:/var/nfs/share      25G  2.4G   23G  10% /nfs/share
host_ip:/home               25G  2.4G   23G  10% /nfs/home

Дополнительно:

client:$ mount | grep nfs
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
host_ip:/var/nfs/share on /nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
host_ip:/home on /nfs/home type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)

Шаг 6 — Тестирование доступа к NFS

Тест общего шаринга

Создайте файл на клиенте:

client:$ sudo touch /nfs/share/test.txt

Проверьте владельца:

client:$ ls -l /nfs/share/test.txt
-rw-r--r--. 1 nobody nobody 0 Dec 13 08:08 /nfs/share/test.txt

Так как на сервере применён root_squash, файлы, созданные от root на клиенте, имеют владельца nobody:nobody.

Тест домашней директории

client:$ sudo touch /nfs/home/home.txt
client:$ ls -l /nfs/home/home.txt
-rw-r--r--. 1 root root 0 Dec 13 08:09 /nfs/home/home.txt

При использовании no_root_squash root на клиенте действует как root в экспортированной директории сервера.


Шаг 7 — Постоянное монтирование через /etc/fstab

Чтобы точки монтирования сохранялись после перезагрузки, добавьте записи в /etc/fstab:

client:$ sudo nano /etc/fstab

Добавьте в конец:

host_ip:/var/nfs/share      /nfs/share     nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Кратко о ключевых опциях:

  • nofail — при проблемах с сетью загрузка не остановится.
  • noatime — отключает обновление времени доступа (уменьшает I/O).
  • nolock — отключает клиентскую блокировку (используйте с осторожностью).
  • intr — разрешить прерывание операций (устаревающая опция для NFSv4).
  • actimeo — контролирует агрегацию атрибутов (кэширование метаданных).

Проверьте монтирование без перезагрузки:

client:$ sudo mount -a

Шаг 8 — Отмонтирование

Если нужно отключить шару:

client:$ cd ~
client:$ sudo umount /nfs/share
client:$ sudo umount /nfs/home

Если записи в /etc/fstab больше не нужны, закомментируйте их, добавив # в начале строки.


Безопасность и защита данных

NFS традиционно не шифрует трафик. Для безопасного использования в продакшне рассмотрите следующие подходы:

  • Разверните NFS только в приватной сети или внутри VPN. Это простейший способ защитить трафик.
  • Используйте Kerberos (sec=krb5/krb5i/krb5p) для аутентификации и целостности/шифрования (требует инфраструктуры Kerberos). Это стандартный способ для корпоративного NFSv4.
  • Туннелирование через TLS/SSH или использование WireGuard/IPsec для защиты канального трафика.
  • Минимизируйте использование no_root_squash на общих ресурсах.
  • Ограничьте список клиентов в /etc/exports и через firewall-cmd.
  • Логи и мониторинг: следите за /var/log/messages и audit-событиями при подозрительной активности.

Security hardening — быстрый чеклист:

  • Не экспортируйте / без крайней необходимости.
  • Не используйте no_root_squash для общедоступных ресурсов.
  • Ограничьте IP-диапазоны доступа.
  • Фиксируйте порты демонoв rpc и откройте только необходимые.

Производительность и оптимизация

Советы:

  • Для больших файлов повышайте rsize/wsize (размер блоков чтения/записи), но убедитесь, что сеть и сервер это поддерживают.
  • Используйте TCP для стабильности в сложных сетях.
  • actimeo и attribute cache помогают снизить нагрузку на сервер при большом количестве операций stat.
  • Для сильно нагруженных рабочих нагрузок рассмотрите NFSv4.1/4.2 с pNFS или распределённые файловые системы (CephFS) для масштабируемости.

Тесты приёмки

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

  1. Клиент успешно монтирует экспортированные директории после выполнения mount и после reboot.
  2. Файлы, созданные на клиенте в общей директории, имеют владельца nobody:nobody при root_squash.
  3. Файлы, созданные в /home с no_root_squash, имеют владельца root (если создавались от root).
  4. Firewall открыт только по необходимым службам и, при необходимости, по IP-адресам.
  5. Логи не содержат ошибок rpc или exportfs после экспорта директорий.

Тесты:

  • showmount -e host_ip должен показывать ожидаемые экспорты.
  • mount | grep nfs должен показывать vers=4.2 (или используемую версию).
  • Попытка записи/чтения с клиента и проверка владельцев и прав.

Руководство по устранению неисправностей (Runbook)

Сценарий: клиент не монтирует ресурс

  1. На клиенте: ping host_ip — проверить сетевую доступность.
  2. На сервере: sudo systemctl status nfs-server — убедиться, что сервис поднят.
  3. На сервере: sudo exportfs -s — проверить, что экспорт доступен.
  4. На клиенте: showmount -e host_ip — убедиться, что экспорт виден.
  5. Проверить firewall: на сервере sudo firewall-cmd –list-all –zone=public и убедиться, что сервисы nfs, rpc-bind, mountd открыты.
  6. Логи: на сервере /var/log/messages, journalctl -u nfs-server — искать ошибки.
  7. Проверить версии NFS: cat /proc/fs/nfsd/versions на сервере и mount | grep nfs на клиенте.
  8. Если проблема с UID/GID, проверьте совпадение пользователей или используйте idmapd для преобразования имён.

Сценарий: файлы видны, но права некорректны

  • Проверьте root_squash/no_root_squash в /etc/exports.
  • Убедитесь, что владельцы на сервере соответствуют желаемым (chown).
  • Если нужны POSIX ACL, убедитесь, что файловая система и сервер поддерживают их.

Альтернативные подходы и когда NFS не подходит

Когда NFS — плохой выбор:

  • Нужна сквозная шифрация на уровне файлового протокола (используйте SSHFS, SMB3 с шифрованием, либо настройте VPN/IPsec).
  • Требуется распределённая файловая система с высокой доступностью и масштабированием (рассмотрите CephFS, GlusterFS).
  • Требуется блочный доступ (используйте iSCSI или Fibre Channel).

Альтернативы:

  • SMB/CIFS — хорошо для смешанных Windows/Linux сред.
  • SSHFS — простой, шифруемый протокол для одного пользователя, но медленный для масштабируемых задач.
  • CephFS — масштабируемая распределённая файловая система для кластеров.

Модель принятия решений — когда использовать NFS

  • Нужны общие папки между Linux-серверами в приватной сети: NFS подходит.
  • Для высокой безопасности и публичных сетей: NFS сам по себе недостаточен — добавьте VPN/Kerberos/TLS.
  • Для однорангового доступа с небольшим количеством пользователей: NFS прост и эффективен.

Ролевые контрольные списки

Администратор сервера:

  • Установить nfs-utils, включить nfs-server.
  • Настроить /etc/exports, проверить exportfs -s.
  • Настроить firewalld и открыть только нужные сервисы.
  • Зафиксировать порты для демонов при желании.

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

  • Установить nfs-utils, создать точки монтирования.
  • Выполнить mount host_ip:/share /point и проверить доступ.
  • Добавить записи в /etc/fstab и проверить sudo mount -a.

Безопасник:

  • Проверить использование no_root_squash и ограничение IP-диапазонов.
  • Настроить Kerberos или туннелирование для шифрования.
  • Настроить аудит файловых операций при необходимости.

Совместимость и заметки по версиям

  • NFSv3 — широко поддерживается, не имеет встроенного шифрования, прост.
  • NFSv4/4.1/4.2 — поддерживает улучшения безопасности и состояния, рекомендуются для новых деплоев.
  • Kerberos интеграция доступна для NFSv4.
  • Windows поддерживает NFS частично; для смешанных сред лучше SMB.

Примеры типичных ошибок и их причины

  • Permission denied при монтировании: неправильно указаны IP в /etc/exports или firewall блокирует доступ.
  • Ownership всегда nobody:nobody: активирован root_squash на сервере.
  • Пониженная производительность: маленькие rsize/wsize, проблемы с сетью или синхронные операции (sync).

Короткий план для продакшна

  1. Разверните NFS в приватной сети или за VPN.
  2. Настройте Kerberos для аутентификации, если требуется высокий уровень доверия.
  3. Закрепите порты и правила firewall.
  4. Тестируйте восстановление и отказоустойчивость (reboot, network loss).
  5. Включите мониторинг I/O и логи.

Краткое резюме

  • NFS на Rocky Linux 8 легко устанавливается с пакетом nfs-utils.
  • Экспортируйте каталоги через /etc/exports и применяйте exportfs -arv.
  • Не забывайте про firewall и /etc/fstab для постоянных монтирований.
  • Для продакшна учитывайте шифрование, аутентификацию (Kerberos) и строгую фильтрацию по IP.

Если у вас остались вопросы, опишите вашу топологию и ошибки — это поможет дать более точные рекомендации.

Поделиться: 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 быстро