Как установить и настроить 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.