Настройка сервера NFS на Linux Ubuntu
Используемые термины: NFS, Ubuntu.
В инструкции мы кратко пробежим по процессу установки и настройки сервера NFS на Ubuntu Server. Также мы рассмотрим пример подключения клиентом к шаре сервера.
Настройка сервера
На сервере устанавливаем компонент для серверной части NFS:
apt update
apt install nfs-kernel-server
Открываем на редактирование файл:
vi /etc/exports
Добавим в него такую строку:
/data/nfs 192.168.0.0/24(rw,no_root_squash,no_subtree_check)
* предполагается, что мы создадим нашу первую шару из каталога /data/nfs, которая будет доступна для всех узлов сети 192.168.0.0/24. Также нам доступны для настройки следующие опции, которые мы перечисляем через запятую в скобках:
- rw / ro — разрешить чтение и запись или только чтение.
- sync / async — отвечать на запросы только когда данные будут сохранены на диск или не блокировать подключения пока данные записываются на диск.
- secure / insecure — использовать для соединения только порты ниже 1024 или любые порты.
- root_squash / no_root_squash — подменять запросы от root на анонимные или не делать этого.
- subtree_check / no_subtree_check — проверять попытки пользователя выйти за пределы экспортированной папки или отключить данную проверку.
- nohide — не скрывать поддиректории, если открыт доступ к нескольким каталогам.
- crossmnt — эта опция аналогична nohide, но позволяет клиентам перемещаться с файловой системы, помеченной crossmnt, на смонтированные на ней экспортированные файловые системы. Таким образом, когда дочерняя файловая система «B» монтируется в родительской «A», установка crossmnt для «A» имеет тот же эффект, что и установка «nohide» для B.
- all_squash — делать все запросы анонимными.
- anonuid — указывает uid анонимного пользователя.
- anongid — указывает gid анонимного пользователя.
Создадим каталог на сервере для нашей шары:
mkdir -p /data/nfs
Выполним экспорт данных (перечитаем наш конфигурационный файл /etc/exports, чтобы сервер начал отдавать настроенные шары):
exportfs -a
Сервер готов к работе. Состояние службы можно посмотреть командой:
systemctl status nfs-server
Если в нашей системе на сервере используется брандмауэр, нам нужно добавить порты 111 (udp, tcp) и 2049 (udp,tcp):
iptables -I INPUT -p udp --dport 111 -j ACCEPT
iptables -I INPUT -p tcp --dport 111 -j ACCEPT
iptables -I INPUT -p tcp --dport 2049 -j ACCEPT
iptables -I INPUT -p udp --dport 2049 -j ACCEPT
Для сохранения правил используем утилиту netfilter-persistent:
apt install netfilter-persistent
netfilter-persistent save
Настройка клиента
На стороне клиента может понадобиться поставить или обновить клиента NFS. В зависимости от используемого дистририбутива Linux, действия будут немного отличаться:
а) для систем на базе Deb (Ubuntu, Debian, Mint):
apt update
apt install nfs-common
б) для систем на базе RPM (Rocky Linux, CentOS):
yum install nfs-utils
Клиент будет установлен или обновлен.
Теперь можно попробовать примонтировать нашу шару:
mount -t nfs 192.168.0.15:/data/nfs /mnt
* в нашем примере мы подключимся к серверу с IP-адресом 192.168.0.15; каталог, который мы монтируем /data/nfs (тот, который настроили в файле exports; монтирование будет выполнено в каталог /mnt.
Для того, чтобы монтирование осталось после перезагрузки, открываем файл fstab:
vi /etc/fstab
И добавляем строку:
192.168.0.15:/data/nfs /mnt nfs auto 0 0
* где 192.168.0.15 — адрес сервера NFS; /mnt — каталог, куда будет примонтирована шара.