Linux nfs server настройка
Сервер: 192.168.1.5
Клиент: 192.168.1.100
Требуется подключить существующую папку /home и специально созданную папку /var/nfs с сервера к клиенту.
Установка пакетов
Прежде всего, требуется установить необходимые компоненты как на сервере, так и на клиентских компьютерах. На сервере вам потребуется установить пакет nfs-kernel-server , который позволит использовать совместный доступ к вашим каталогам.
На клиентском компьютере вам потребуется установить пакет nfs-common.
Создание общего каталога на сервере
Мы будем монтировать специально созданный на сервере каталог на клиентский компьютер. Создадим каталог nfs.
Теперь отредактируем файл, отвечающий за совместное использование ресурсов NFS
В случае если нужно раздать каталог на все компьютеры подсети вместо 192.168.1.100 нужно указать 192.168.1.0/24
Давайте разберем, что здесь написано.
rw: эта опция позволяет клиентскому компьютеру как читать, так и записывать в данный каталог.
sync: заставляет NFS записывать изменения на диск перед ответом, что приводит к более стабильной и согласованной среде. Это связано прежде всего с тем, что ответ повторяет фактическое состояние удаленного тома.
no_subtree_check: эта опция предотвращает проверку поддеревьев. Сервер при каждом запросе проверяет, действительно ли файл все еще доступен в экспортируемом дереве. Отключение проверки уменьшает безопасность, но увеличивает скорость передачи данных.
no_root_squash: по умолчанию NFS переводит запросы от пользователя root на клиентском компьютере в непривилегированного на сервере. Это параметр безопасности который не позволяет учетной записи root на клиенте использовать файловую систему сервера в качестве root.
После того, как необходимые изменения внесены и сохранены, выполним команду:
и запустим службу NFS
Данная команда сделает ваши ресурсы доступными для клиентов, которых вы настроили. Теперь перейдем к следующему шагу.
Создание точек монтирования и монтирование удаленных общих ресурсов на клиентском компьютере
Сперва создадим точки монтирования удаленных ресурсов.
Автоматическое монтирование производится через fstab
Допишем в конец файла
Если вам больше не требуется монтировать удаленный каталог в вашей системе, вы можете легко размонтировать его используя следующие команды:
NFS предлагает простой и быстрый механизм доступа к удаленным системам по сети. Однако протокол является не зашифрованным. Если вы намерены использовать это в производственной среде, рекомендуется рассмотреть возможность запуска NFS через SSH или VPN-соединение.
и добавляем в конец файла строки вида (строк может быть произвольное количество):
/data –путь к папке, для которой раздается доступ;
192.168.1.1 –IP-адрес, которому раздается доступ к папке(можно указать всю сеть, тогда запись примет вид 192.168.1.0/24)
(rw,no_root_squash,sync) –набор опций, опции могут быть:
rw –чтение запись(может принимать значение ro-только чтение);
no_root_squash –по умолчанию пользователь root на клиентской машине не будет иметь доступа к разделяемой директории сервера. Этой опцией мы снимаем это ограничение. В целях безопасности этого лучше не делать;
nohide - NFS автоматически не показывает нелокальные ресурсы (например, примонтированые с помощью mount –bind), эта опция включает отображение таких ресурсов;
sync – синхронный режим доступа(может принимать обратное значение- async). sync (async) - указывает, что сервер должен отвечать на запросы только после записи на диск изменений, выполненных этими запросами. Опция async указывает серверу не ждать записи информации на диск, что повышает производительность, но понижает надежность, т.к. в случае обрыва соединения или отказа оборудования возможна потеря данных;
noaccess – запрещает доступ к указанной директории. Может быть полезной, если перед этим вы задали доступ всем пользователям сети к определенной директории, и теперь хотите ограничить доступ в поддиректории лишь некоторым пользователям.
Необходимо добавить описание опций.
all_squash– подразумевает, что все подключения будут выполнятся от анонимного пользователя
subtree_check (no_subtree_check)- в некоторых случаях приходится экспортировать не весь раздел, а лишь его часть. При этом сервер NFS должен выполнять дополнительную проверку обращений клиентов, чтобы убедиться в том, что они предпринимают попытку доступа лишь к файлам, находящимся в соответствующих подкаталогах. Такой контроль поддерева (subtree checks) несколько замедляет взаимодействие с клиентами, но если отказаться от него, могут возникнуть проблемы с безопасностью системы. Отменить контроль поддерева можно с помощью опции no_subtree_check. Опция subtree_check, включающая такой контроль, предполагается по умолчанию. Контроль поддерева можно не выполнять в том случае, если экспортируемый каталог совпадает с разделом диска;
anonuid=1000– привязывает анонимного пользователя к «местному» пользователю;
anongid=1000– привязывает анонимного пользователя к группе «местного» пользователя.
Под «местным» пользователем понимается пользователь, который будет осуществлять запись в файлы (запускать приложения, скачивающие файлы и т.д.), поэтому значение 1000 может отличаться от вашего. Для определения uid пользователя воспользуйтесь командойВ последствии после внесения изменений в файл /etc/exports не обязательно перезапускать сервер, достаточно выполнить:
Для монтирования сетевой папки необходимо создать папку на локальном компьютере:
Для монтирования папки вручную необходимо выполнить в терминале команду:
Следует помнить, что, как в настройках сервера, так и в настройках клиента при монтировании, путь к общему каталогу указывается полный. Данный пример показывает, что каталог /data находится в корне файловой системы.Монтирование с записью в fstab
Для большего удобства можно добавить запись с сетевой папкой в fstab. Целесообразно создать точку монтирования сетевой папки в /media, потому что каталоги, созданные там, будут отображаться в Nautilus в левой колонке, монтировать их можно будет одним кликом.
В файл /etc/fstab добавляем подобную запись:
опция «noauto» запрещает автоматическое монтирование сетевого диска при старте системы.
Проблемы
Использование на ноутбуке
Монтирование с помощью autofs
Данный способ монтирования позволяет автоматически монтировать папку после обращения к ней в наутилусе (к примеру, через закладки) или в терминале:
и автоматически отмонтировать при отсутствии активности.
Установка
Для реализации данного способа необходимо доустановить пакет autofs :
Настройка
Для настройки autofs в файле /etc/auto.master необходимо добавить строку
Здесь –timeout=60 указывает отмонтировать раздел при отсутствии активности на нём более чем 60 секунд. Создаем в корне файловой системы папку /nfs :
В файле /etc/auto.nfs добавляем строку
-rw,soft,intr,rsize=8192,wsize=8192 – параметры монтирования;
server – папка, которая будет создаваться в каталоге /nfs при монтировании удаленных папок;
192.168.1.2:/path_to_share– IP-адрес и общая папка сервера.
Перезапускаем службу autofs :
Проблемы
Недоступность удаленного сервера
Если сеть с сервером NFS недоступна, возможна большая задержка (по умолчанию 3 минуты) при открытии nautilus, в закладках которого находится примонтированная удаленная папка NFS.
Для решения этой проблемы необходимо уменьшить время ожидания монтирования autofs, для этого в файле /etc/default/autofs необходимо раскомментировать или добавить следующие строки:
После этого autofs будет пытаться примонтировать удаленную папку только 10 секунд.
Проблемы с гибернацией или выключением
Для диагностирования смотрим лог dmesg, возможный вывод:
Причина №1: пакет NFS
Причиной данной проблемы является скрипт прерывания работы NetworkManager, необходимо запретить его выполнение переименовав его:
Причина №2: пакет updatedb.mloc
Протокол NFS по умолчанию не зашифрован и, в отличие от Samba , не обеспечивает аутентификацию пользователя. Доступ к серверу ограничен IP-адресами клиентов или именами хостов.
В этом руководстве мы рассмотрим, как настроить сервер NFSv4 в Ubuntu 18.04. Мы также покажем вам, как смонтировать файловую систему NFS на клиенте.
Подготовка
Машины в этом примере имеют следующие IP-адреса:
Настройте сервер NFS
Начнем с установки и настройки сервера NFS.
Установка сервера NFS
Обновите индекс пакетов и установите пакет сервера NFS:
После завершения установки службы NFS запустятся автоматически.
По умолчанию в Ubuntu 18.04 NFS версии 2 отключена. Версии 3 и 4 включены. Вы можете убедиться в этом, выполнив следующую команду cat :
NFSv2 сейчас довольно старый, и нет причин для его включения.
Параметры конфигурации сервера NFS задаются в /etc/default/nfs-kernel-server и /etc/default/nfs-common . В нашем случае достаточно настроек по умолчанию.
Создание файловых систем
При настройке сервера NFSv4 рекомендуется использовать глобальный корневой каталог NFS и привязать монтирование фактических каталогов к точке монтирования общего ресурса. В этом примере мы будем использовать директор /srv/nfs4 качестве корня NFS.
Мы собираемся поделиться двумя каталогами ( /var/www и /opt/backups ) с разными параметрами конфигурации, чтобы лучше объяснить, как можно настроить монтирование NFS.
/var/www/ принадлежит пользователю, а группа www-data и /opt/backups принадлежит пользователю root .
Создайте файловую систему экспорта с помощью команды mkdir :
Смонтируйте актуальные каталоги:
Чтобы сделать монтирование привязки постоянным, откройте файл /etc/fstab :
и добавьте следующие строки:
Экспорт файловых систем
Следующим шагом является определение файловых систем, которые будут экспортированы сервером NFS, параметров общих ресурсов и клиентов, которым разрешен доступ к этим файловым системам. Для этого откройте файл /etc/exports :
Файл /etc/exports также содержит комментарии, описывающие, как экспортировать каталог.В нашем случае нам нужно экспортировать каталоги www и backups и разрешить доступ только для клиентов в сети 192.168.33.0/24 :
Первая строка содержит fsid=0 который определяет корневой каталог NFS /srv/nfs . Доступ к этому тому NFS разрешен только клиентам из подсети 192.168.33.0/24 . Параметр crossmnt требуется для совместного использования каталогов, которые являются подкаталогами экспортированного каталога.
Во второй строке показано, как указать несколько правил экспорта для одной файловой системы. Он экспортирует /srv/nfs4/backups и разрешает доступ только для чтения ко всему диапазону 192.168.33.0/24 а также доступ для чтения и записи к 192.168.33.3 . Параметр sync указывает NFS записывать изменения на диск перед ответом.
Последняя строка не требует пояснений. Для получения дополнительной информации обо всех доступных параметрах введите в терминале команду man exports .
Сохраните файл и экспортируйте акции:
Вам нужно запускать указанную выше команду каждый раз, когда вы изменяете файл /etc/exports . Если есть какие-либо ошибки или предупреждения, они будут показаны на терминале.
Чтобы просмотреть текущий активный экспорт и его состояние, используйте:
Вывод будет включать все акции с их опционами. Как видите, есть также параметры, которые мы не определили в /etc/exports . Это параметры по умолчанию, и если вы хотите их изменить, вам необходимо явно установить эти параметры.
В Ubuntu root_squash включен по умолчанию. Это один из наиболее важных параметров безопасности NFS. Это не позволяет пользователям root, подключенным с клиентов, иметь привилегии root на подключенных общих ресурсах. Он будет отображать корень UID и GID , чтобы nobody / nogroup UID / GID .
Вот и все. На этом этапе вы настроили сервер NFS на своем сервере Ubuntu. Теперь вы можете перейти к следующему шагу и настроить клиентов и подключиться к серверу NFS.
Конфигурация межсетевого экрана
Если вы используете брандмауэр в своей сети, вам нужно будет добавить правило, которое будет разрешать трафик через порт NFS.
Предполагая, что вы используете UFW для управления своим брандмауэром, чтобы разрешить доступ из подсети 192.168.33.0/24 вам необходимо выполнить следующую команду:
Чтобы проверить запуск изменений:
Вывод должен показать, что трафик через порт 2049 разрешен:
Настройка клиентов NFS
Теперь, когда сервер NFS настроен и общие ресурсы экспортированы, следующим шагом настройте клиентов и смонтируйте удаленные файловые системы.
Вы также можете смонтировать общий ресурс NFS на компьютерах с macOS и Windows, но мы сосредоточимся на системах Linux.
Установка клиента NFS
На клиентских машинах нам нужно установить только инструменты, необходимые для монтирования удаленных файловых систем NFS.
Установите клиент NFS в Debian и Ubuntu
Установите клиент NFS на CentOS и Fedora
В Red Hat и ее производных установите пакет nfs-utils :
Монтирование файловых систем
Мы будем работать на клиентской машине с IP 192.168.33.110 которая имеет доступ для чтения и записи к файловой системе /srv/nfs4/www и доступ только для чтения к файловой системе /srv/nfs4/backups .
Создайте два новых каталога для точек монтирования. Вы можете создавать эти каталоги в любом месте.
Смонтируйте экспортированные файловые системы с помощью команды mount :
При монтировании файловой системы NFSv4 вам необходимо опустить корневой каталог NFS, поэтому вместо /srv/nfs4/backups вам нужно использовать /backups .
Убедитесь, что удаленные файловые системы успешно смонтированы, используя команду mount или df :
Чтобы сделать монтирование постоянным при перезагрузке, откройте файл /etc/fstab :
и добавьте следующие строки:
Чтобы получить дополнительную информацию о доступных параметрах монтирования файловой системы NFS, введите в терминале man nfs .
Тестирование доступа по NFS
Проверим доступ к общим ресурсам, создав для каждой из них новый файл .
Сначала попробуйте создать тестовый файл в каталоге /backups с помощью touch команды:
Затем попробуйте создать тестовый файл в каталоге /srv/www в качестве корневого с помощью команды sudo :
Если вспомнить /var/www каталог принадлежат к www-data пользователя и эта доля имеет root_squash вариант набор , который отображает суперпользователь к nobody пользователю и nogroup группе , которая не имеет права на запись на удаленный ресурс.
Предполагая, что у вас есть использование www-data на клиентском компьютере с тем же UID и GID что и на удаленном сервере (что должно быть, если, например, вы установили nginx на обеих машинах), вы можете протестировать создание файла как пользователь www-data с:
Команда не покажет никаких выходных данных, что означает, что файл был успешно создан.
Чтобы проверить это, перечислите файлы в каталоге /srv/www :
На выходе должен отобразиться только что созданный файл:
Размонтирование файловой системы NFS
Если вам больше не нужен удаленный общий ресурс NFS, вы можете размонтировать его, как любую другую подключенную файловую систему, с помощью команды umount. Например, чтобы отключить общий ресурс /backup , выполните:
Выводы
В этом руководстве мы показали вам, как настроить сервер NFS и как смонтировать удаленные файловые системы на клиентских машинах. Если вы внедряете NFS в производство и обмениваетесь разумными данными, рекомендуется включить аутентификацию Kerberos.
В качестве альтернативы NFS вы можете использовать SSHFS для монтирования удаленных каталогов через SSH-соединение. SSHFS по умолчанию зашифрован, и его гораздо проще настроить и использовать.
Для запуска nfs требуется, чтобы в системе были установлены следующие пакеты:
- nfs-server или unfs3 (в OpenVZ VE ядерный NFS-сервер не работает)
- rpcbind (с шестой платформы; ранее нужен был portmap)
- nfs-clients (содержит в себе nfslock)
(в некоторых системах вместо nfs-server и nfs-clients имеется пакет nfs-utils)
1. В файле /etc/exports указываются каталоги, которые мы экспортируем (разрешаем монтировать с других машин) (см. man exports).
По соображениям безопасности не рекомендуется экспортировать каталоги по протоколу NFS 3. Рекомендуется использовать NFS 4.
В скобочках указываются дополнительные параметры:
По умолчанию пользователь root имеет на смонтированных ресурсах права пользователя nobody.
Можно указывать разрешение экспорта сразу для подсети. Например разрешение для машин из подсети 192.168.0.X строка будет выглядеть так:
Подробную информацию о формате файла можно посмотреть командой man exports
экспортируемые по NFS 4 каталоги имеют тот же синтаксис, что и через NFS3, за исключением того, что все они должны быть в одном подкаталоге (chroot для безопасности). Пусть это каталог /exports. Тогда необходимо подмонтировать остальные экспортированные каталоги внутрь /exports с помощью mount --bind ( mount --bind /mysharedir /exports/mysharedir ), прописать в fstab:
и прописать в /etc/exports: отличие от NFS3 в том, что нужно будет добавить nohide к mysharedir и явно обьявить корневой каталог экспорта с fsid=0.
Для работы nfs необходим сервис portmap . По умолчанию, сервис portmap запущен только на loopback (lo) интерфейсе в целях безопасности. Этого достаточно для раздачи сетевых ресурсов через nfs4.
Однако при этом не будет работать монтирование каталогов по nfs3. Если это действительно нужно, то нехотя коментируем в файле /etc/sysconfig/portmap строку PORTMAP_ARGS="-l", прописываем в /etc/hosts.allow сеть, в которую раздаем:
и в /etc/hosts.deny :
после этого еще раз вдумчиво читаем http://tldp.org/HOWTO/NFS-HOWTO/security.html. и глубоко размышляем над глубокой небезопасностью запуска portmap без PORTMAP_ARGS="-l" и использования nfs3.
Начиная с шестой платформы portmap заменен на rpcbind. Настраивается аналогично portmap. Конфигурационный файл /etc/sysconfig/rpcbind, для использования nfs 3, закомментировать:
control rpcbind server
Для rw каталогов желательно настроить kerberos.
Для read-only можно просто закоментировать в файле /etc/sysconfig/nfs строку
Если все команды прошли успешно и не выдавали ошибок, то сервер можно считать работающим. Дополнительно можно запустить команду exportfs, которая выведет текущие настройки на данный момент. В случае нормальной работы она должна вывести на экран записи из файла /etc/exports
Для запуска сервисов при старте системы:
1. После настройки файла необходимо запустить сервис rpcbind (для p6,portmap для p5) командой:
2. Запустить непосредственно nfs-server командой:
3. Запустить сервис блокировок командой:
Если все команды прошли успешно и не выдавали ошибок, то сервер можно считать работающим. Дополнительно можно запустить команду exportfs, которая выведет текущие настройки на данный момент. В случае нормальной работы она должна вывести на экран записи из файла /etc/exports
Для запуска сервисов при старте системы:
отлаживаем rpc.nfsd (опция -d):
Оказывается, включен ipv6 и включен протокол v.3 (см. version string to kernel: -2 +3 +4) который не получается повесить на ipv6 адрес.
- Решение1 (если nfs3 не нужен): выключить v.3 (опция -N3) в $NFSD_OPTIONS: прописываем в /etc/sysconfig/nfs
после чего nfs нормально запускается.
в /etc/netconfig закомментировать
Подключение к nfs-серверу можно производить вручную, а можно настроить автоматическое подключение при загрузке.
Допустим машина где запущен nfs-server называется server, и нам необходимо смонтировать с сервера каталог /myshare Тогда, для ручного способа достаточно (из под пользователя root) выполнить команду:
Для автоматического монтирования к nfs-серверу при загрузке необходимо добавить следующую строку в файл /etc/fstab:
Кроме того, стоит убедиться, что сервис netfs запускается при старте системы.
Прежде чем изменять /etc/fstab, попробуйте смонтировать вручную и убедитесь, что всё работает.
Осуществляется при помощи automount, autofs или subfs.
Использование avahi. Установите пакет avahi-service-nfs или вручную создайте на сервере файл /etc/avahi/services/nfs.service , используется nfs4:
и запустите на сервере nfs сервис avahi-daemon. Проверьте с машин-клиентов, что сервер nfs виден с этих машин с помощью команды
Установите на машины-клиенты autofs. С настройками по умолчанию, ресурсы nfs будут монтироваться как /mnt/net/servername/netshare.
Для домашней локальной сети, когда nfs раздается не с сервера, а с другой рабочей станции, которую могут выключить в любой момент, рекомендуется прописывать у клиентов в /etc/sysconfig/autofs timeout поменьше (например, 5 сек):
при включенном ipv6 команда avahi-browse -tkrp _nfs._tcp кроме IPv4 _nfs сервиса
выдаст и IPv6 _nfs сервис
который не поддерживается autofs-5.1.5-alt1 из p9, что приведет к неработоспособности автомонтирования NFS. До исправления autofs можно отключить ipv6
Читайте также: