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

Установка и настройка 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 установка пакета nfs-util

В текущей версии 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 правила

Для тех, кто использует 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-сервера, который вы настроили ранее.

подключение nfs каталога через mount в fstab

Теперь Теперь в списке перемонтированных разделов диска отображается подключенный 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 образов и т.д.

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