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

12 set 2022 7 min di lettura
Как установить и настроить сервер NFS в CentOS 8 Linux
Indice dei contenuti

Введение

Сетевая файловая система (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-сервер на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Настроить NFS-сервер

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

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

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

sudo dnf install nfs-utils

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

sudo systemctl enable --now nfs-server

По умолчанию версии 3 и 4.x включены в CentOS 8 NFS, версия 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.

В этом руководстве мы используем nano, если вы предпочитаете, вы можете использовать vi, установленный по умолчанию в большинстве дистрибутивов.

sudo dnf install nano
sudo nano /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:

/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/nfs. Доступ к этому тому 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 с nobody /nogroup UID /GID.

Чтобы пользователи клиентских компьютеров имели доступ, 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 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

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

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:

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 зашифрован по умолчанию, и его намного проще настроить и использовать.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.