Linux настройка nfs сервера

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

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

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

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

Подготовка

В этом примере предполагается, что у вас есть один сервер под управлением 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 updatesudo apt install nfs-kernel-server

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

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

sudo cat /proc/fs/nfsd/versions

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/backupssudo mkdir -p /srv/nfs4/www

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

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

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

Читайте также:  Добавить пользователя группу linux debian

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

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

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

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

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

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

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

Вывод будет включать все акции с их опционами. Как видите, есть также параметры, которые мы не определили в /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.

Читайте также:  What is lsusb in linux

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

sudo ufw allow from 192.168.33.0/24 to any port nfs

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

Вывод должен показать, что трафик через порт 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
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.10:/backups /backupssudo 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 :

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

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 :

Читайте также:  Редактор горячих клавиш linux

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

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 :

Вы снова увидите сообщение 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 :

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

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 , выполните:

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

Выводы

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

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

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

Источник

Оцените статью
Adblock
detector