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

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

How to Install and Configure an NFS Server on Ubuntu 18.04

3 Марта 2021 | Ubuntu

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

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

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

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

Прежде чем вы приступите

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

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

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

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

Начнем с установки и настройки сервера NFS.
 

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

Обновите индекс пакетов и установите пакет сервера NFS:
 

sudo apt update sudo apt install nfs-kernel-server 


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

По умолчанию в Ubuntu 18.04 NFS версии 2 отключена. Версии 3 и 4 включены. Вы можете убедиться в этом, выполнив следующую cat команду :
 

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

NFSv2 сейчас довольно старый, и нет причин для его включения.

Параметры конфигурации сервера NFS установлены в /etc/default/nfs-kernel-server и /etc/default/nfs-common файлы. В нашем случае достаточно настроек по умолчанию.
 

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

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

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

Объект /var/www/ принадлежит пользователю и группе www-data и /opt/backups принадлежит root .

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

sudo mkdir -p /srv/nfs4/backups sudo mkdir -p /srv/nfs4/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 

/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(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 	192.168.33.110(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4     	192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups
		192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
 

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

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

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

Конфигурация межсетевого экрана

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

Предполагая, что вы используете UFW для управления своим брандмауэром, чтобы разрешить доступ из 192.168.33.0/24 подсети, вам необходимо выполнить следующую команду:
 

sudo ufw allow from 192.168.33.0/24 to any port nfs 


Чтобы проверить запуск изменений:
 

sudo ufw status 


Вывод должен показать, что трафик на порт 2049 разрешен:
 

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.33.0/24           
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)  
 

Настройка клиентов 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.10:/backups /backups sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www 


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

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

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

df -h 


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

Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00   38G  1.7G   36G   5% /
devtmpfs                         236M     0  236M   0% /dev
tmpfs                            244M     0  244M   0% /dev/shm
tmpfs                            244M  4.5M  240M   2% /run
tmpfs                            244M     0  244M   0% /sys/fs/cgroup
/dev/sda2                       1014M   87M  928M   9% /boot
tmpfs                             49M     0   49M   0% /run/user/1000
192.168.33.10:/backups           9.7G  1.2G  8.5G  13% /backups
192.168.33.10:/www               9.7G  1.2G  8.5G  13% /srv/www 


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

sudo nano /etc/fstab 


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

/ etc / fstab
192.168.33.10:/backups /backups   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.33.10:/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 каталоге в качестве корневого с помощью sudo команды:
 

sudo touch /srv/www/test.txt 


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

touch: cannot touch ‘/srv/www’: Permission denied
 

Если вспомнить /var/www каталог принадлежит к www-data пользователю , и эта доля имеет root_squash опцию , которая отображает набор корневого пользователя к nobody пользователю и nogroup группе , которая не имеет права на запись на удаленном ресурсе.

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

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


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

Чтобы проверить это, перечислите файлы в /srv/www каталоге:
 

ls -la /srv/www 


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

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

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

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

sudo umount /backups 


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

Вывод

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

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


    Комментарии

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

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