ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

Как настроить сервер NFS на Ubuntu

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

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

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

 

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

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

NFS Server IP: 192.168.26.148
NFS Clients IPs: From the 192.168.26.0/24 range

 

В этом разделе объясняется, как установить необходимые пакеты, создать и экспортировать каталоги 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.26.0/24:
/etc/export

/srv/nfs4         192.168.26.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/backups 192.168.26.0/24(ro,sync,no_subtree_check) 192.168.26.3(rw,sync,no_subtree_check)
/srv/nfs4/www     192.168.26.110(rw,sync,no_subtree_check)

 

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

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

Последняя строка должна быть понятной. Для получения дополнительной информации обо всех доступных опциях введите man exportsсвой терминал.

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

sudo exportfs -ra

 

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

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

sudo exportfs -v

 

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

/srv/nfs4/backups
		192.168.26.3(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 	192.168.26.110(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4     	192.168.26.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.26.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

 

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

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

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

 

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

Служба NFS включает в себя предопределенные правила для доступа к серверу NFS. Следующие команды будут постоянно разрешать доступ из подсети 192.168.26.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.26.0/24 --permanent
sudo firewall-cmd --reload

 

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

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

 

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

 

Мы будем работать на клиентском компьютере с IP-адресом 192.168.26.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.26.148:/backups /backups
sudo mount -t nfs -o vers=4 192.168.26.148:/www /srv/www

 

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

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

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

df -h

 

Команда напечатает все смонтированные файловые системы. Последние две строки являются смонтированными долями:

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

 

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

sudo nano /etc/fstab

 

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

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

 

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

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

 

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

Сначала попробуйте создать тестовый файл в каталоге /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, который отображает привилегированный пользователь к пользователю 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 Oct 14 05:24 .
drwxr-xr-x 3 root     root     4096 Oct 23 05:25 ..
-rw-r--r-- 1 apache apache    0 Oct 23 04:22 index.html
-rw-r--r-- 1 apache apache    0 Oct 14 05:24 test.txt

 

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

sudo umount /backups

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

 

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

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

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

Exit mobile version