• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Статья также доступна на украинском (перейти к просмотру).

Конфигурирование NFS на Ubuntu 22.04

Оглавление

Часто возникает вопрос организации удаленного доступа пользователей Ubuntu к общему сетевому ресурсу. Решить этот вопрос можно с помощью сетевого распределенного протокола файловой системы. NFS (Network File System). Рассмотрим его возможности и вопросы практического использования при организации доступа к общим сетевым ресурсам.

Возможности NFS

Программное средство дает возможность работать с удаленными каталогами так, словно они локальные.

Гибкость настроек обеспечивается наличием нескольких служб, входящих в состав NFS, как на стороне сервера, так и на клиенте. Каждая из служб имеет собственную конфигурацию, установленную по умолчанию, которую можно легко изменить с помощью общего файла конфигурации /etc/nfs.conf. Файл появился на замену нескольким отдельным файлам, начиная с версии Ubuntu 22.04.

Укажем некоторые преимущества использования NFS:

  • Экономия дисковых ресурсов на локальных станциях (клиентах) за счет использования общего хранилища данных;
  • Использование вместо локальных только удаленных домашних каталогов пользователей, настроенных на сервере;
  • Уменьшение количества внешних устройств хранения данных в сети.

Следует отметить, что NFS не шифрует данные при передаче, и поэтому следует учитывать эту его особенность. Да, при организации общего доступа через частную сеть можно обойтись без шифрования, но в противном случае лучше принять определенные меры, например, применить туннель с шифрованием. Это позволит в дальнейшем обезопасить компанию от потери корпоративных данных. Более подробное описание читайте в нашей статье “Що таке NFS”, а в этой статье мы сконцентрируемся на его настройке.

Конфигурирование NFS на сервере

Перед началом работы с NFS необходимо установить соответствующее программное обеспечение на сервере и на клиентах – машинах, которые будут пользоваться общими ресурсами сервера. В нашем случае, и сервер и клиент управляются Ubuntu 22.04.

Сначала рассмотрим последовательность действий, которую нужно выполнить на сервере:

  • Создание пользователя и обновление индекса пакетов;
  • Развертывание серверной части программы;
  • Создание и подготовка к экспорту общих ресурсов;
  • Настройка брандмауера.

Создание пользователя и обновление индекса пакетов

Создадим на сервере нового пользователя с правами sudo. Для этого введем в терминале:

$ adduser testing_nfs

Создание нового пользователя

Пользователя с именем testing_nfs создан. Добавим его в группу sudo с помощью следующей команды:

$ adduser testing_nfs sudo

Добавление пользователя к группе sudo

Изменим текущий аккаунт:

$ su -l testing_nfs

Смена аккаунта

Обновим индекс локальных пакетов Ubuntu:

$ sudo apt update

Обновление пакетов

Команда успешно выполнена:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done

Развертывание серверной части программы

Инициируем процесс инсталляции программы с помощью следующей команды:

$ sudo apt install nfs-kernel-server

Инициализация установки программы

Подтвердим свое согласие на выделение дополнительных 1,973 kB дискового пространства, введя символ Y, после чего процесс инсталляции продолжится.

Процесс установки программы

Окончательное окно выхода команды приведено ниже.

Процесс установки программы

Результат: Setting up nfs-kernel-server (1:2.6.1-1ubuntu1.2), то есть программа установлена.

С помощью справочной системы всегда можно просмотреть справочную информацию по сетевой файловой системе. Это можно сделать с помощью следующей команды:

$ man nfs

Вызов справки программы

Запустим NFS-сервер в качестве службы. Введем в терминале:

$ sudo systemctl start nfs-kernel-server.service

Запуск NFS-сервера как службы

Сервер успешно запущен.

Создание и подготовка к экспорту общих ресурсов

Общие ресурсы могут быть двух типов – без возможности root-доступ со стороны клиентов и с возможностью такого доступа. Сначала рассмотрим первый вариант организации доступа к общим ресурсам.

Создадим каталог общего пользования с именем shared_res:

$ sudo mkdir /var/nfs/shared_res -p

Создание каталога

Поскольку при создании ресурса были применены привилегии sudo, его владельцем будет root-пользователь сервера Для подтверждения этого рассмотрим установленные для ресурса права:

$ ls -la /var/nfs/shared_res

Проверка прав на каталог

Результат:

drwxr-xr-x 2 root root 4096 Mar  9 16:21 .
drwxr-xr-x 3 root root 4096 Mar  9 16:21 ..

Можно убедиться, что владельцем является root-пользователь.

Сменим владельца каталога для возможности защиты данных от действий root-пользователь клиентской машины. Для этого введем в терминале:

$ sudo chown nobody:nogroup /var/nfs/shared_res

Смена владельца каталога

После этого ресурс защищен и готов к экспорту.

Теперь рассмотрим создание общего ресурса с возможностью root-доступа со стороны клиента. На практике это может потребоваться в случае использования клиентами домашних каталогов, хранящихся на сервере.

Используем уже существующий на сервере каталог /home.

Для организации общего доступа к нему воспользуемся файлом конфигурации NFS с именем /etc/exports, который был автоматически создан при инсталляции программы.

Откроем указанный файл с помощью редактора nano:

$ sudo nano /etc/exports

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

/var/nfs/shared_res 178.20.157.79(rw,sync,no_subtree_check)
/home           	178.20.157.79(rw,sync,no_root_squash,no_subtree_check)

Редактирование файла в nano

В первой части каждой записи указано название ресурса, к которому открывается общий доступ. Затем указывается IP-адрес сервера. И, наконец, в скобках через запятую перечисляются опции, определяющие правила обработки запросов и уровни доступа к ресурсу. Укажем значение некоторых из них:

sync – инициирует запись и фиксацию текущего состояния общего ресурса перед каждым ответом клиенту; обеспечивает стабильность и согласованность состояния системы, однако снижает скорость ее работы;

rw – разрешает клиенту запись и считывание данных;

no_root_squash – дает возможность получить клиентам root-доступ к общему ресурсу.

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

Перезагрузим NFS-сервер для возможности применения внесенных нами изменений. Для этого введем в терминале:

$ sudo systemctl restart nfs-kernel-server

Перезаuheprf NFS-серверf

Настройка брандмауэра

Перед практическим использованием общих ресурсов необходимо убедиться в том, что существующие правила брандмауэра не препятствуют прохождению их трафика.

Для начала, проверим статус брандмауэра, чтобы выяснить, включен ли он. Для этого введем следующую команду:

$ sudo ufw status

Проверка статуса брандмауера

Результат: Status: inactive, тоесть брандмауэр неактивный.

Перед его активацией желательно сразу включить правила, разрешающие допустимые входящие соединения.

Разрешим входящие SSH-соединение. Для этого введем в терминале:

$ sudo ufw allow ssh

Разрешение на входящие соединения по ssh

Результат: Rules updated.

Таким образом мы позволили все соединение на прослушиваемом порту 22 SSH по умолчанию.

Для активации UFW введем в терминале:

$ sudo ufw enable

Активация UFW

Результат: Firewall is active and enabled on system startup, что означает, что брандмауэр включен.

Просмотрим действующие правила:

$ sudo ufw status verbose

Статус действующих правил

Теперь необходимо добавить отдельные правила для NFS-трафика.

Откроем порт 2049 на сервере для клиентской машины:

$ sudo ufw allow from 178.20.157.79 to any port nfs

Тут 178.20.157.79 – IP-адрес нашего клиента.

Открытие порта 2049

Результат: Rule added.

Еще раз проверим установленные правила:

$ sudo ufw status

Преверка статуса правил

На выходе мы получили следующие изменения в правилах:

To                   	Action          	From
 
2049              	ALLOW        	178.20.157.79

Это означает, что NFS-трафик для клиентской машины открыт.

Конфигурирование NFS на клиенте

На клиентской машине мы уже имеем пользователя с именем admin и правами sudo и потому не будем создавать нового. Нам остается только обновить индекс локальных пакетов и установить клиентскую часть программы.

$ sudo apt update

Обновление пакетов

$ sudo apt install nfs-common

Установка программы

Процесс установки программы

Результат: Setting up nfs-common (1:2.6.1-1ubuntu1.2), то есть программа установлена.

Монтирование каталогов сервера на клиенте

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

Создадим два пустых каталога с помощью следующих команд:

$ sudo mkdir -p /nfs/shared_res

Создание каталога

$ sudo mkdir -p /nfs/home

Создание каталога

После этого смонтируем общие ресурсы сервера на клиентскую систему с помощью следующих команд:

$ sudo mount 178.20.159.96:/var/nfs/shared_res /nfs/shared_res

Монтирование ресурсов

$ sudo mount 178.20.159.96:/home /nfs/home

Монтирование ресурсов

Здесь 178.20.159.96 – IP-адрес сервера.

Проверим успешность выполнения операции:

$ df -h

Проверка результата

Можно убедиться в том, что общие каталоги смонтированы на клиенте. Использование одинаковых объемов дискового пространства клиента объясняется тем, что они смонтированы из одной файловой системы.

Просмотреть сколько реально занимает дисковое пространство каждая точка монтирования можно с помощью команды:

$ du -sh /nfs/shared_res

Размер на диске точек монтирования

Таким образом содержимое каталога /nfs/shared_res составляет всего 4.0Kb.

Тестирование доступа к общим ресурсам

Сущность тестирования заключается в записи тестовых файлов в общие каталоги и проверки успеваемости проделанной операции.

Сначала запишем тестовый файл с именем shared_res.test в каталог общего пользования с ограничением root-доступа. Для этого введем в терминале:

$ sudo touch /nfs/shared_res/shared_res.test

Запись тестового файла

Проверим владельца созданного файла:

$ ls -l /nfs/shared_res/shared_res.test

Проверка владельца файла

Результат:

-rw-r--r-- 1 nobody nogroup 0 Mar 11 11:05 /nfs/shared_res/shared_res.test

Можно убедиться, что владельцем файла является nobody:nogroup. Это означает, что root-ользователь клиента не сможет выполнять в этом каталоге администраторские действия, например такие, как изменение владельца файла и другие. И это согласуется с тем фактом, что по умолчанию NFS настроена таким образом, чтобы ограничить доступ к общим ресурсам сервера. При создании же указанного общего ресурса на сервере мы сознательно не изменяли эти настройки.

Теперь аналогичным образом запишем тестовый файл с именем home.test к общему ресурсу, выполняющему функции домашнего каталога для клиента. Для этого введем в терминале:

$ sudo touch /nfs/home/home.test

Запись файла

Перевіримо власника створеного файлу:

$ ls -l /nfs/home/home.test

Проверка владельца файла

Результат:

-rw-r--r-- 1 root root 0 Mar 11 11:11 /nfs/home/home.test

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

Автоматическая монтировка общих ресурсов NFS при загрузке клиента

Для реализации указанной задачи достаточно добавить строчки с настройками для каждого из ресурсов в файл /etc/fstab на клиенте.

Откроем указанный файл в редакторе nano с правами Администратора:

$ sudo nano /etc/fstab

Добавим к файлу следующие строчки:

178.20.159.96:/var/nfs/shared_res	/nfs/shared_res   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
 
178.20.159.96:/home             	/nfs/home     	nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Редактирование файла в nano

На первой позиции здесь указывается IP-адрес сервера и путь доступа к общему ресурсу на сервере. На второй позиции указывается каталог монтирования на клиенте. После этого перечисляются через запятые опции для настроек.

Сохраним внесенные изменения и выйдем из редактора.

Демонтирование общих NFS-ресурсов

Например, демонтируем созданные нами общие ресурсы:

$ sudo umount /nfs/shared_res
$ sudo umount /nfs/home

Демонтирование ресурсов

После этого на клиенте остаются доступными только локальные ресурсы. Проверим это:

$ df -h

Переверка использования диска

Убедитесь, что удаленные ресурсы уже недоступны для клиента.

В случае, если записи о ресурсах уже были внесены в файл /etc/fstab, то необходимо либо удалить эти записи, либо закомментировать. Также можно удалить из записей опцию auto. После этого ресурсы уже не будут автоматически монтироваться при загрузке клиентской системы. Но всегда можно будет выполнить монтаж вручную после загрузки.

Если для вашего проекта требуется выделенный сервер, дата-центр FREEhost.UA готов помочь вам в этом. На нашем сайте Вы найдете самый большой выбор серверов для аренды в Украине. У нас вы найдете простые серверы для личных проектов, а также мощное оборудование на базе серверных процессоров Xeon. Наши преимущества: круглосуточная техническая поддержка на украинском языке, высокая надежность дата-центра, серверы расположены в Украине, поэтому подг для пользователей будет минимальный, для юридических лиц мы предоставляем все необходимые бухгалтерские документы.

Подписывайтесь на наш телеграмм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов.

Смотрите наш канал Youtube на https://www.youtube.com/freehostua.

Мы в чем ошиблись, или что-то пропустили?

Напишите об этом в комментариях, мы с удовольствием ответим и обсуждаем Ваши замечания и предложения.

Дата: 14.03.2024
Автор: Александр Ровник
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
navigate
go
exit
Спасибо, что выбираете FREEhost.UA