Страница 1 из 1

Установка и настройка NFS-сервера и клиента в CentOS/RHEL

Добавлено: 24 янв 2024, 22:30
xor

Источник: https://winitpro.ru/index.php/2020/06/0 ... nta-linux/

Установка и настройка NFS-сервера и клиента в CentOS/RHEL
Network File System (NFS) – протокол распределенной файловой системы для организации общего доступа к файлам и папками. За основу в NFS взят протокол удаленных процедур (ONC RPC). NFS позволяет монтировать удаленные файловые системы по сети сеть. В отличии от FTP, NFS позволяет получить доступ только к тем частям файла, к которым обратился процесс. Имейте в виду, что данные в протоколе NFS по умолчанию не шифруются, и аутентификация клиентов не выполняется (доступ ограничивается по IP).

NFS очень прост в настройке, как со стороны сервера, так и со стороны клиента. В данной статье мы рассмотрим установку и настройку NFS-сервера и после чего, подключим NFS ресурс на клиенте. В этой статье для примера использования технологии NFS мы используем CentOS 8. В других Linux дистрибутивах (RHEL, Fedora и т.д.) все действия аналогичны.

Установка и настройка NFS-сервера в Linux CentOS
По умолчанию nfs уже установлен в CentOS 8 с пакетом Standard. Если вы удалили компоненты NFS, или ставили сервер в режиме Minimal Install, можно установить пакет NFS с помощью пакетного менеджера yum (dnf):

Для CentOS 7

Код: Выделить всё

# yum install nfs-utils -y

Для CentOS 8

Код: Выделить всё

# dnf install nfs-utils -y

У меня пакет уже был установлен:

centos-ustanovka-paketa-nfs-util.png
centos-ustanovka-paketa-nfs-util.png (4.91 КБ) 1503 просмотра

В текущей версии NFS сервера поддерживаются версии протокола NFSv3 и NFSv4. Версия NFS2 по умолчанию отключена. Список поддерживаемых версия NFS можно получить командой:

Код: Выделить всё

cat /proc/fs/nfsd/versions

После установки нужных пакетов, нужно запустить службы nfs-server и rpcbind, добавьте их в автозагрузку:

Код: Выделить всё

# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server

Если вам нужен только NFSv4.1/4.2, служба rpcbind не нужна.

Если у вас в системе установлен firewalld откройте необходимые порты:

Код: Выделить всё

# firewall-cmd --permanent --add-port=111/tcp
# firewall-cmd --permanent --add-port=20048/tcp
# firewall-cmd --permanent --zone=public --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=mountd
# firewall-cmd --permanent --zone=public --add-service=rpc-bind
# firewall-cmd --reload
firewall-cmd-nfs-pravila.png
firewall-cmd-nfs-pravila.png (8.64 КБ) 1503 просмотра

Для тех, кто использует iptables:

Код: Выделить всё

# iptables -t filter -A INPUT -p tcp --dport 111 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 2049 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 20048 -j ACCEPT
# service iptables save
# service iptables restart

Теперь создадим директорию, которая будет раздаваться вашим NFS сервером:

Код: Выделить всё

# mkdir -p /backup/nfs
# chmod -R 777 /backup/nfs

Теперь в конфигурационном файле с настройками NFS сервера (/etc/exports) нужно опубликовать данный каталог и назначить права доступа.

Код: Выделить всё

# nano /etc/exports

Добавьте в файл следующую строку для предоставления доступа к NFS всем хостам в указанной IP подсети:

Код: Выделить всё

/backup/nfs 192.168.1.0/24 (rw,sync,no_root_squash,no_all_squash)

Или можно ограничить доступ для конкретного IP:

Код: Выделить всё

/backup/nfs 192.168.2.24 (rw,sync,no_root_squash,no_all_squash, anonuid=1000,anongid=1000) 192.168.3.100 (ro,async,no_subtree_check)

Рассмотрим более подробно формат предоставления прав к NFS каталогу:

  • rw – права на запись в каталоге, ro – доступ только на чтение;

  • sync – синхронный режим доступа. async – подразумевает, что не нужно ожидать подтверждения записи на диск (повышает производительность NFS, но уменьшает надежность);

  • no_root_squash – разрешает root пользователю с клиента получать доступ к NFS каталогу (обычно не рекомендуется);

  • no_all_squash — включение авторизации пользователя. all_squash – доступ к ресурсам от анонимного пользователя;

  • no_subtree_check – отключить проверку, что пользователь обращается в файлу в определенном каталоге (subtree_check – используется по умолчанию);

  • anonuid, anongid – сопоставить NFS пользователю/группу указанному локальному пользователю/группе(UID и GID).

Чтобы применить новые настройки NFS каталогов, выполните:

Код: Выделить всё

# exportfs -a

И перезапустите nfs-сервер:

Код: Выделить всё

# systemctl restart nfs-server

На этом установка и настройка nfs-сервера закончена и можно приступить к настройке клиента.

Настройка клиента NFS в CentOS
Для настройки NFS клиента, нужно также установить пакет nfs-utils. Для CentOS 7:

Код: Выделить всё

# yum install nfs-utils -y

Для CentOS 8:

Код: Выделить всё

# dnf install nfs-utils -y

Добавляем сервисы в автозагрузку и включаем:

Код: Выделить всё

# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server

Теперь на клиенте, нужно создать директорию, в которую мы смонтируем nfs-каталог:

Код: Выделить всё

# mkdir /backup

Теперь можно смонтировать удаленное NFS-хранилище командой:

Код: Выделить всё

# mount -t nfs 192.168.0.100:/backup/nfs/ /backup

можно принудительно указать версию NFS протокола, которую нужно использовать

Код: Выделить всё

# mount -t nfs -o vers=4 192.168.0.100:/backup/nfs/ /backup

Где IP — это адрес NFS-сервера, который вы настроили ранее.

podklyuchenie-nfs-kataloga-cherez-mount-v-fstab.png
podklyuchenie-nfs-kataloga-cherez-mount-v-fstab.png (8.28 КБ) 1503 просмотра

Теперь Теперь в списке перемонтированных разделов диска отображается подключенный NFS ресурс с удаленного сервере. Вы можете читать данные из этого каталога, или записывать в него (в зависимости от прав, которые назначены для вашего IP на NFS сервере). Чтобы NFS каталог автоматически монтировался при перезагрузке, нужно открыть файл fstab:

Код: Выделить всё

# nano /etc/fstab

И добавьте строку:

Код: Выделить всё

192.168.0.100:/backup/nfs/ /backup/ nfs rw,sync,hard,intr 0 0

После сохранения файла fstab, можно применить его командой:

Код: Выделить всё

# mount -a

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