Как установить и настроить NFS-сервер на CentOS 8

CentOS NFS

Сетевая файловая система (NFS) — это протокол распределённой файловой системы, позволяющий предоставлять общий доступ к удалённым каталогам по сети. С помощью NFS вы можете монтировать удалённые каталоги в своей системе и работать с файлами на удалённом компьютере так, как если бы они были локальными.

Протокол NFS по умолчанию не шифруется и, в отличие от Samba, не обеспечивает аутентификацию пользователей. Доступ к серверу ограничен IP-адресами или именами хостов клиентов.

В этом руководстве вы выполните шаги, необходимые для настройки сервера NFSv4 на CentOS 8. Мы также покажем вам, как смонтировать файловую систему NFS на клиенте.

Предпосылки

Мы предполагаем, что у вас есть сервер под управлением CentOS 8, на котором мы настроим NFS-сервер и другие машины, которые будут выступать в роли NFS-клиентов. Сервер и клиенты должны иметь возможность взаимодействовать друг с другом через частную сеть. Если ваш хостинг-провайдер не предоставляет частные IP-адреса, вы можете использовать публичные IP-адреса и настроить брандмауэр сервера так, чтобы он разрешал трафик через порт 2049 только от доверенных источников.

Машины в этом примере имеют следующие IP-адреса:

 NFS Server IP: 192.168.33.148 NFS Clients IPs: From the 192.168.33.0/24 range

Настройка NFS-сервера

В этом разделе объясняется, как установить необходимые пакеты, создать и экспортировать каталоги NFS, а также настроить брандмауэр.

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

Пакет «nfs-utils» предоставляет утилиты и демоны NFS для NFS-сервера. Чтобы установить его, выполните следующую команду:

 sudo dnf install nfs-utils

После завершения установки включите и запустите службу NFS, введя:

 sudo systemctl enable --now nfs-server

По умолчанию в CentOS 8 NFS версий 3 и 4.x включен, а версия 2 отключена. NFSv2 уже довольно устарела, и нет смысла её включать. Чтобы проверить это, выполните следующую команду cat :

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

Параметры конфигурации NFS-сервера задаются в файлах /etc/nfsmount.conf и /etc/nfs.conf . Для нашего руководства достаточно настроек по умолчанию.

Создание файловых систем

При настройке сервера NFSv4 рекомендуется использовать глобальный корневой каталог NFS и привязывать монтирование реальных каталогов к точке монтирования общего ресурса. В этом примере мы будем использовать каталог /srv/nfs4 в качестве корня NFS.

Чтобы лучше объяснить, как можно настроить монтирование NFS, мы собираемся использовать два каталога ( /var/www и /opt/backups ) с различными параметрами конфигурации.

/var/www/ принадлежит пользователю и группе apache , а /opt/backups принадлежит пользователю root .

Создайте экспортную файловую систему с помощью команды mkdir :

 sudo mkdir -p /srv/nfs4/{backups,www}

Смонтируйте реальные каталоги:

 sudo mount --bind /opt/backups /srv/nfs4/backups sudo mount --bind /var/www /srv/nfs4/www

Чтобы сделать привязки монтирования постоянными, добавьте следующие записи в файл /etc/fstab :

 sudo nano /etc/fstab

/etc/fstab

 /opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

Экспорт файловых систем

Следующий шаг — определить файловые системы, которые будут экспортироваться NFS-сервером, параметры общих ресурсов и клиентов, которым будет разрешен доступ к этим файловым системам. Для этого откройте файл /etc/exports :

 sudo nano /etc/exports

Экспортируйте каталоги www и backups и разрешите доступ только клиентам в сети 192.168.33.0/24 :

/etc/exports

 /srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid = 0) /srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check) /srv/nfs4/www 192.168.33.110(rw,sync,no_subtree_check)

Первая строка содержит fsid=0 , который определяет корневой каталог NFS /srv/nfs4 . Доступ к этому тому NFS разрешён только клиентам из подсети 192.168.33.0/24 . Для предоставления общего доступа к каталогам, являющимся подкаталогами экспортируемого каталога, требуется параметр crossmnt .

Вторая строка показывает, как задать несколько правил экспорта для одной файловой системы. Она экспортирует каталог /srv/nfs4/backups и разрешает только чтение для всего диапазона 192.168.33.0/24 , а также чтение и запись для диапазона 192.168.33.3 . Параметр sync указывает NFS записать изменения на диск перед ответом.

Последняя строка не требует пояснений. Чтобы узнать больше о всех доступных параметрах, введите man exports в терминале.

Сохраните файл и экспортируйте акции:

 sudo exportfs -ra

Вам необходимо выполнять указанную выше команду каждый раз при изменении файла /etc/exports . Если возникнут какие-либо ошибки или предупреждения, они будут отображены в терминале.

Чтобы просмотреть текущие активные экспорты и их состояние, используйте:

 sudo exportfs -v

Вывод будет включать все общие ресурсы и их параметры. Как видите, есть также параметры, которые мы не определили в файле /etc/exports . Это параметры по умолчанию, и если вы хотите их изменить, вам потребуется задать их явно.

 /srv/nfs4/backups 192.168.33.3(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/www 192.168.33.110(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4 192.168.33.0/24(sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash) /srv/nfs4/backups 192.168.33.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

root_squash — одна из важнейших опций, обеспечивающих безопасность NFS. Она запрещает пользователям root, подключенным с клиентов, получать привилегии root на смонтированных общих ресурсах. Она сопоставляет UID и GID root с UID и GID nobody / nogroup .

Чтобы пользователи на клиентских машинах имели доступ, NFS ожидает, что идентификаторы пользователя и группы клиента совпадут с идентификаторами на сервере. Другой вариант — использовать функцию сопоставления идентификаторов NFSv4, которая преобразует идентификаторы пользователей и групп в имена и наоборот.

Вот и всё. На этом этапе вы настроили NFS-сервер на своём сервере CentOS. Теперь можно перейти к следующему шагу: настроить клиенты и подключиться к NFS-серверу.

Конфигурация брандмауэра

FirewallD — это решение брандмауэра по умолчанию в Centos 8 .

Служба NFS включает предопределенные правила для разрешения доступа к серверу NFS.

Следующие команды навсегда разрешат доступ из подсети 192.168.33.0/24 :

 sudo firewall-cmd --new-zone=nfs --permanent sudo firewall-cmd --zone=nfs --add-service=nfs --permanent sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent sudo firewall-cmd --reload

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

Теперь, когда сервер NFS настроен и общие ресурсы экспортированы, следующим шагом будет настройка клиентов и монтирование удаленных файловых систем.

Вы также можете смонтировать общий ресурс NFS на компьютерах с macOS и Windows, но мы сосредоточимся на системах Linux.

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

На клиентских машинах установите инструменты, необходимые для монтирования удаленных файловых систем NFS.

  • Установка NFS-клиента на Debian и Ubuntu

    Пакет, включающий программы для монтирования файловых систем NFS в дистрибутивах на базе Debian, называется nfs-common . Для его установки выполните:

     sudo apt update sudo apt install nfs-common
  • Установка NFS-клиента на CentOS и Fedora

    В Red Hat и его производных установите пакет nfs-utils :

     sudo yum install nfs-utils

Монтирование файловых систем

Мы будем работать на клиентской машине с IP-адресом 192.168.33.110 , которая имеет доступ на чтение и запись к файловой системе /srv/nfs4/www и доступ только на чтение к файловой системе /srv/nfs4/backups .

Создайте два новых каталога для точек монтирования. Вы можете создать их в любом месте.

 sudo mkdir -p /backups sudo mkdir -p /srv/www

Смонтируйте экспортированные файловые системы с помощью команды mount :

 sudo mount -t nfs -o vers=4 192.168.33.148:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.148:/www /srv/www

Где 192.168.33.148 — IP-адрес NFS-сервера. Вы также можете использовать имя хоста вместо IP-адреса, но оно должно быть доступно для разрешения клиентским компьютером. Обычно это достигается сопоставлением имени хоста с IP-адресом в файле /etc/hosts .

При монтировании файловой системы NFSv4 необходимо исключить корневой каталог NFS, поэтому вместо /srv/nfs4/backups необходимо использовать /backups .

Убедитесь, что удаленные файловые системы успешно смонтированы, с помощью команды mount илиdf :

 df -h

Команда выведет все смонтированные файловые системы. Последние две строки — это смонтированные общие ресурсы:

 ... 192.168.33.148:/backups 9.7G 1.2G 8.5G 13% /backups 192.168.33.148:/www 9.7G 1.2G 8.5G 13% /srv/www

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

 sudo nano /etc/fstab

и добавьте следующие строки:

/etc/fstab

 192.168.33.148:/backups /backups nfs defaults,timeo = 900,retrans=5,_netdev 0 0 192.168.33.148:/www /srv/www nfs defaults,timeo = 900,retrans=5,_netdev 0 0

Чтобы найти дополнительную информацию о доступных параметрах монтирования файловой системы NFS, введите man nfs в терминале.

Другой вариант монтирования удаленных файловых систем — использование инструмента autofs или создание модуля systemd.

Тестирование доступа NFS

Давайте проверим доступ к общим папкам, создав в каждой из них новый файл .

Сначала попробуйте создать тестовый файл в каталоге /backups с помощью команды touch :

 sudo touch /backups/test.txt

Файловая система /backup экспортируется только для чтения, и, как и ожидалось, вы увидите сообщение об ошибке Permission denied :

 touch: cannot touch '/backups/test': Permission denied

Затем попробуйте создать тестовый файл в каталоге /srv/www как пользователь root с помощью команды sudo :

 sudo touch /srv/www/test.txt

И снова вы увидите сообщение Permission denied .

 touch: cannot touch '/srv/www': Permission denied

Каталог /var/www принадлежит пользователю apache , а для этого общего ресурса установлен параметр root_squash , который сопоставляет пользователя root с пользователем nobody и группой nogroup , у которых нет прав на запись в удаленный общий ресурс.

Предполагая, что на клиентской машине существует пользователь apache с теми же UID и GID , что и на удаленном сервере (что должно быть в случае, если, например, вы установили apache на обеих машинах), вы можете попробовать создать файл от имени пользователя apache с помощью:

 sudo -u apache touch /srv/www/test.txt

Команда не выведет никаких результатов, что означает, что файл был успешно создан.

Для проверки перечислите файлы в каталоге /srv/www :

 ls -la /srv/www

На выходе должен быть отображен вновь созданный файл:

 drwxr-xr-x 3 apache apache 4096 Jun 23 22:18 . drwxr-xr-x 3 root root 4096 Jun 23 22:29 .. -rw-r--r-- 1 apache apache 0 Jun 23 21:58 index.html -rw-r--r-- 1 apache apache 0 Jun 23 22:18 test.txt

Размонтирование файловой системы NFS

Если вам больше не нужен удалённый общий ресурс NFS, вы можете размонтировать его, как и любую другую смонтированную файловую систему, с помощью команды umount. Например, чтобы размонтировать общий ресурс /backup , выполните:

 sudo umount /backups

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

Заключение

В этом руководстве мы показали, как настроить NFS-сервер и монтировать удалённые файловые системы на клиентских компьютерах. Если вы используете NFS в рабочей среде и обмениваетесь конфиденциальными данными, рекомендуется включить аутентификацию Kerberos.

В качестве альтернативы NFS вы можете использовать SSHFS для монтирования удалённых каталогов через SSH-соединение. SSHFS по умолчанию зашифрован и гораздо проще в настройке и использовании.

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

centos nfs mount terminal Не используете CentOS 8?
Выберите другую ОС:
убунту 18.04 убунту 20.04

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *