Настройка NFS на Centos 7

Решил рассмотреть вопрос с настройкой простого NFS-сервера на Centos 7. Перед началом небольшое вступление. Network File System применяется обычно для шасшаривания файлов между Linux или Unix систем. Протокол разработан компанией Sun.

Для настройки NFS, в ОС должны быть установлены и запущены следующие сервисы:

  • nfs-server – предоставляет доступ для клиентов;
  • nfs-idmap – преобразовывает uid & gid в имена и наоборот;
  • rpcbind – преобразует номера программ RPC в универсальные адреса; работает на 111 порту; необходим для совершения вызовов удаленных процедур (Remote Procedures Calls); Динамически назначает порты;
  • nfs-lock / rpc-stat – служит для восстановления блокировки файлов при сбое сервера с NFS.

Пакеты ставятся со всеми вышеописанными зависимостями и запускаются сразу благодаря тому, что в одном юните /usr/lib/systemd/system/nfs-server.service всё уже прописано из коробки:

yum install nfs-utils nfs-utils-lib

Для Debian: nfs-kernel-server и nfs-common для клиента

После установки запустить и включить автозагрузку:

systemctl enable nfs-server rpcbind --now

Создать будущую шару:

mkdir /home/share

Отредактировать конфигурационный файл NFS /etc/exports:

/home/share 192.168.99.1(rw,sync,no_root_squash)

Небольшие пояснения по конфигурации:

  • первый параметр – путь до шары;
  • вместо IP можеть быть подсеть или звездочка (* – любой хост);
  • rw – разрешения на запись в шару;
  • sync – для немедленной записи всех изменений клиентом на диск;
  • no_root_squash – для того, чтобы root на клиенте имел аналогичные права, что и root на сервере. По дефолту root на клиенте имеет уровень доступа как nobody на сервере.

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

После правки файла, надо применить изменения командой:

exportfs -r

Тут также можно посмотреть доп. флаги, которые ещё существуют.

После этого поправить параметры штатного firewalld, открыв порты для сервисов:

rpc-bind – 111/tcp
nfs – 2049/tcp
mountd – 20048/tcp, 20049/udp

Для служб RPC в конфиге /etc/sysconfig/nfs можно настроить статические порты (которые по дефолту назначаются автоматически):

MOUNTD_PORT=892
STATD_PORT=662
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769

Применить изменения:

systemctl restart nfs-server rpcbind && rpcinfo -p

Для rpc.statd есть отдельный юнит с другим названием – nfs-lock.service /usr/lib/systemd/system/nfs-lock.service, который также надо перезагрузить:

/usr/lib/systemd/system/nfs-lock.service # полный путь

systemctl restart nfs-lock.service

Перед внесением правил для firewall, нужно проверить, что все сервисы слушают на указанных портах в /etc/sysconfig/nfs

И прописать в firewalld:

firewall-cmd --permanent --add-service mountd
firewall-cmd --permanent --add-service rpc-bind
firewall-cmd --permanent --add-service nfs
firewall-cmd --reload

Итоговый список портов и протоколов для работы NFS:

111, 2049, 20048, 20049, 892, 662, 32803, 32769 TCP, UDP

После применения всех настроек, можно проверить на сервере, какая шара нам доступна:

showmount -e

Export list for localhost.localdomain:
/home/share 192.168.10.161

Проверка на клиенте:

showmount -e <client_ip>

И теперь осталось только подмонтировать доступную по NFS директорию:

mount <server_ip>:/home/share /mnt

Для наглядности, можно посмотреть доп. параметры монтирования. Как видно, используется NFS 4 версии:

mount | grep nfs
192.168.10.176:/home/share on /mnt type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.10.161,local_lock=none,addr=192.168.10.176)

Или посмотреть так:

df -hT

192.168.10.176:/home/share nfs4      9.1G  3.9G  5.2G  43% /mnt

Для автоматического монтирования, прописать в /etc/fstab:

<server_ip>:/home/share /mnt    nfs     nosuid,rw,sync,hard,intr  0  0

На этом настойка завершена. В завершении хочу сказать, что нужно помнить о том, что NFS – протокол без шифрования, а потому лучше использовать его как минимум через VPN.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: