Поиск по сайту:

Как установить и настроить NFS-сервер в Debian 11


NFS или сетевая файловая система — это сетевой протокол, который позволяет монтировать удаленную файловую систему через сеть. Протокол NFS использует архитектуру сервер-клиент, сервер NFS, предоставляющий все каталоги или разделы, готовые к доступу и монтированию, и клиенты, которые использовали протокол rpcbind для доступа ко всем каталогам и файловой системе через внутреннее сетевое соединение.

Текущее состояние протокола сетевой файловой системы описано ниже.

1. NFSv2 и NFSv3 по-прежнему поддерживаются основной операционной системой, но из соображений безопасности вы должны ограничить доступ сервера NFS доверенной локальной сетью. NFSv2 и NFSv3 рекомендуются для малых и средних типов развертываний.
2. Протокол NFSv4 предоставляет базовые функции безопасности, такие как аутентификация и шифрование, но в этих целях он опирается на Kerberos. Поэтому вам необходимо добавить дополнительную конфигурацию для использования NFSv4 с базовыми функциями безопасности.

Из этого руководства вы узнаете, как установить и настроить сервер NFS в последней версии Debian 11 Bullseye. Вы будете устанавливать сервер NFS и обеспечивать доступ, ограничивая количество хостов с помощью брандмауэра ufw. Затем вы узнаете, как настроить клиент для монтирования каталогов и разделов, предоставленных сервером NFS, и настроить автоматическое монтирование сервера NFS при загрузке системы через конфигурацию «/etc/fstab».

Предварительные условия

1. Мы будем использовать две разные машины в одной сети, как показано ниже.
     - debian64 - 192.168.1.25 - в качестве сервера NFS
     - client-debian - 192.168.1.30 - в качестве клиента
2. Пользователь root или пользователь с привилегиями root. Этот пользователь будет использоваться для установки новых пакетов и редактирования конфигураций системы.

Установка и настройка NFS-сервера

Сначала вы установите пакет сервера nfs и настроите общий каталог для клиентов.

1. Выполните следующую команду, чтобы установить пакеты nfs-сервера.

apt install nfs-kernel-server rpcbind

Введите «y» и нажмите «Enter», чтобы продолжить установку.

2. Теперь создайте новый каталог, которым вы хотите поделиться с клиентами. В этом примере вы предоставите клиентам общий доступ к двум каталогам «/mnt/shared» и «/srv/data». И не делитесь корневым каталогом «/» по умолчанию или каталогом «/etc».

Создайте новый общий каталог с помощью приведенной ниже команды mkdir.

mkdir -p /mnt/shared
mkdir -p /srv/data

Создайте новый файл в каждом каталоге, выполнив приведенную ниже команду echo.

echo "test file nfs server" > /mnt/shared/test-file.txt
echo "test file nfs server" > /srv/data/test-file.txt

Теперь измените владельца обоих общих каталогов на «никто: nogroup», выполнив команду ниже.

chown nobody:nogroup /mnt/shared /srv/data

И вы готовы настроить NFS-сервер.

3. Чтобы настроить общий каталог для nfs, отредактируйте конфигурацию «/etc/exports» с помощью редактора nano.

nano /etc/exports

Ниже приведены примеры конфигураций для некоторых сценариев.

Общий каталог для клиента с одним хостом с доступом для чтения и записи.

/mnt/shared    192.168.1.30(rw,sync,no_subtree_check)

Общий каталог для нескольких клиентов, включая группу хост-сети.

/srv/data      172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check) 10.11.12.0/24(rw,no_subtree_check)

Общий каталог для одного клиента с доступом только для чтения.

/srv/data        192.168.1.30(ro)

Ниже приведен окончательный пример конфигурации.

/mnt/shared    192.168.1.30(rw,sync,no_subtree_check)
/srv/data      172.16.1.0/24(rw,sync,no_root_squash,no_subtree_check) 10.11.12.0/24(rw,no_subtree_check)
/srv/data      192.168.1.30(ro,no_root_squash)

Сохраните конфигурацию, нажав кнопку «Ctrl+x», введите «y», затем нажмите «Enter», чтобы выйти.

Опции, которые вы должны знать:

  • rw: разрешить доступ для чтения и записи к тому/каталогу как для NFS-сервера, так и для клиента.
  • ro : разрешить клиентам доступ только для чтения.
  • синхронизация: отвечайте на запросы только после того, как изменения будут зафиксированы в стабильном хранилище. Эта опция включена по умолчанию.
  • async: позволяет серверу NFS нарушать протокол NFS и отвечать на запросы до того, как любые изменения, внесенные этим запросом, будут зафиксированы в стабильном хранилище.
  • subtree_check: разрешить и включить проверку поддерева. Эта опция включена по умолчанию.
  • no_subtree_check: отключает проверку поддерева, что имеет небольшие последствия для безопасности, но в некоторых случаях может повысить надежность.
  • root_squash: сопоставляет запросы от uid/gid 0 с анонимным uid/gid. Обратите внимание, что это не относится к другим uid или gids, которые могут быть столь же чувствительными, например, к корзине пользователей или персоналу группы.
  • no_root_sqash: отключить сжатие корня. Эта опция в основном полезна для бездисковых клиентов.

4. Затем перезапустите службу nfs-сервера, чтобы применить новую конфигурацию, используя приведенную ниже команду.

systemctl restart nfs-server

Теперь проверьте и проверьте службу nfs-server, используя следующую команду.

systemctl is-enabled nfs-server
systemctl status nfs-server

И вы получите аналогичный результат, как показано ниже.

Как видно, служба nfs-сервера «включена» и автоматически запускается при запуске системы. Текущий статус nfs-service — «активен (выход)», что означает, что служба запущена, но systemd не может найти демон для мониторинга.

Защита NFS-сервера с помощью брандмауэра UFW

На этом этапе вы установите брандмауэр ufw и ограничите доступ к серверу NFS только для определенных хостов и сетей.

1. Выполните приведенную ниже команду apt, чтобы установить пакет ufw.

apt install ufw

Введите «y» и нажмите «Enter», чтобы подтвердить и продолжить установку.

2. Если все установки завершены, добавьте службу SSH в правила брандмауэра ufw, используя команду ниже.

ufw allow ssh

3. Затем выполните приведенные ниже команды ufw, чтобы добавить хосты или сети к вашему брандмауэру ufw.

Разрешите хосту с IP-адресом «192.168.1.30» доступ к серверу NFS.

ufw allow from 192.168.1.30 to any port nfs

Разрешить блокировку сети для доступа к серверу NFS.

ufw allow from 172.16.1.0/24 to any port nfs
ufw allow from 10.11.12.0/24 to any port nfs

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

ufw enable

Введите «y» и нажмите «Enter», чтобы запустить и включить брандмауэр ufw.

Теперь проверьте статус брандмауэра ufw, используя команду ниже.

ufw status

И вы увидите аналогичный результат, как показано ниже.

Как можно видеть, состояние брандмауэра ufw «активно», а служба NFS на порту по умолчанию «2049» доступна в списке правил.

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

На этом этапе вы настроите клиентов для доступа к общему каталогу и разделу на сервере NFS.

1. Сначала установите пакет 'nfs-common', используя приведенную ниже команду apt.

apt install nfs-common

Введите «y» и нажмите «Enter», чтобы подтвердить и продолжить установку.

2. После завершения установки создайте новый каталог для каталога монтирования.

mkdir -p /nfs/shared; mkdir -p /nfs/data

3. Чтобы смонтировать каталог или раздел nfs с сервера NFS, выполните приведенную ниже команду монтирования.

mount 192.168.1.25:/mnt/shared /nfs/shared
mount 192.168.1.25:/srv/data /nfs/data

Основная команда монтирования для доступа к NFS заключается в указании IP-адреса сервера NFS «192.168.1.25» с указанием пути к каталогу монтирования «/mnt/shared» и «/srv/data» и целевого пути на стороне клиента «/nfs». /shared» и «/nfs/data».

4. Затем выполните следующую команду, чтобы убедиться, что монтирование NFS прошло успешно.

df -h

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

cat /nfs/shared/test-file.txt
cat /nfs/data/test-file.txt

Ниже приведен результат, который вы получите.

Как можно видеть, вы успешно подключили сервер NFS к каталогам «/nfs/shared» и «/nfs/data», и вы сможете читать файлы, которые вы только что создали поверх него.

Проверьте доступ на чтение и запись к NFS-серверу

На этом этапе вы проверите доступ на чтение и запись к каталогу сервера NFS.

1. измените рабочий каталог на «/nfs/shared», проверьте доступные файлы в этом каталоге и покажите содержимое этого файла с помощью команды, как показано ниже.

cd /nfs/shared
ls
cat test-file.txt

Затем создайте новый файл, используя приведенную ниже команду echo.

echo "This file from nfs-client" > client.txt
cat client.txt

Если вам удалось создать файл client.txt, доступ на запись к каталогу NFS «/nfs/share» будет успешным, как описано в конфигурации ниже.

/mnt/shared    192.168.1.30(rw,sync,no_subtree_check)

2. Далее, в конфигурации, которую вы создали сверху, у клиента есть доступ только для чтения к каталогу NFS «/nfs/data», как вы можете видеть в конфигурации ниже.

/srv/data        192.168.1.30(ro,no_root_squash)

Измените рабочий каталог на «/nfs/data», проверьте файлы в нем, проверьте доступные файлы в этом каталоге и покажите содержимое этого файла с помощью команды, как показано ниже.

cd /nfs/data
ls
cat test-file.txt

Далее, если вы захотите создать новый файл, вы получите сообщение об ошибке «Файловая система только для чтения». Потому что у вас есть только разрешение «только для чтения», как описано в верхней конфигурации.

echo "This is a file from client to data" > client-data.txt

Ниже приведен аналогичный результат, который вы получите.

Разрешение на чтение и запись соответствует текущей конфигурации сервера NFS.

Монтирование NFS при загрузке

На этом этапе вы узнаете, как монтировать каталог/раздел NFS при загрузке/запуске системы с помощью конфигурации /etc/fstab.

1. Отредактируйте конфигурацию '/etc/fstab' с помощью редактора nano.

nano /etc/fstab

Измените детали IP-адреса, общий каталог и каталог монтирования на свои собственные, затем вставьте конфигурацию.

192.168.1.25:/mnt/shared        /nfs/shared   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.1.25:/srv/data          /nfs/data     nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Сохраните конфигурацию, нажав «Ctrl+x» и введите «y», затем нажмите «Enter», чтобы выйти.

2. Затем проверьте правильность конфигурации «/etc/fstab», используя следующие команды.

Размонтируйте весь каталог монтирования, используя команду ниже.

umount -R /nfs/shared
umount -R /nfs/data

Выполните следующую команду, чтобы смонтировать всю доступную файловую систему в файле конфигурации /etc/fstab.

mount -a

Убедитесь, что у вас нет ошибок.

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

df -h

Если ваша конфигурация правильна, вы увидите, что сервер NFS смонтирован в целевой каталог, как описано в конфигурации «/etc/fstab».

3. Вы можете перезагрузить клиентский компьютер и снова войти в систему, а затем еще раз подтвердить, используя команду, как показано ниже.

df -h

И вы увидите, что сервер NFS автоматически подключается при загрузке системы на клиентском компьютере через файл /etc/fstab.

Заключение

Поздравляем! Вы успешно установили сервер NFS на последнюю версию Debian 11 Bullseye. Кроме того, вы успешно защитили развертывание сервера NFS с помощью брандмауэра ufw, настроили клиентские компьютеры NFS и настроили автоматическое монтирование с помощью конфигурации «/etc/fstab». На следующем этапе вас также может заинтересовать протокол NFSv4, который обеспечивает такие механизмы безопасности, как шифрование и аутентификация через сервер Kerberos.

Статьи по данной тематике: