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

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

How to Install and Configure an NFS Server on CentOS 8

4 Января 2020 | CentOS

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

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

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

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

На сервере под управлением 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/backupssudo 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/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 на подключенных общих ресурсах. Он будет отображать корень 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 --permanentsudo firewall-cmd --zone=nfs --add-service=nfs --permanentsudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanentsudo firewall-cmd --reload


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

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

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

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

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

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

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

    sudo apt updatesudo 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 /backupssudo mkdir -p /srv/www


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

sudo mount -t nfs -o vers=4 192.168.33.148:/backups /backupssudo 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 инструмент или создать системный модуль.

Тестирование NFS Access

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

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

sudo touch /backups/test.txt


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

touch: cannot touch ‘/backups/test’: Permission denied


Далее попробуйте создать тестовый файл в /srv/www каталоге как корень, используя 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 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 зашифрован по умолчанию и намного проще в настройке и использовании.


    Комментарии

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

Загрузка комментариев...