Настройка сервера Debian nfs

Обновлено: 21.11.2024

В этом посте мы познакомим вас с процессом настройки сервера NFS в Debian 10, и этот процесс будет таким же для Debian 11. Ранее на этом сайте мы также рассмотрели другой метод, где мы показали процесс монтирования сетевой общий диск в Linux, но с этим методом мы использовали инструменты cifs-utils (ССЫЛКА). Принцип этого процесса в основном тот же — смонтируйте общую сетевую папку или диск с другого компьютера и получите к нему доступ через локальную сеть.

Сервер и клиент NFS

Инструменты NFS состоят из серверного и клиентского приложений. Серверное приложение, конечно же, вы устанавливаете на машину, папку или диск которой вы хотите расшарить по сети. Клиентское приложение, которое вы устанавливаете на все другие машины, с которых вы используете для доступа к общей сетевой папке/диску на сервере.

Чтобы это работало, ваш сервер должен иметь статический IP-адрес.

Настройка NFS-сервера

Установка NFS-сервера

На вашем сервере выполните эту команду, чтобы установить NFS:

Следующий шаг — настройка сервера NFS. Запустите эту команду, чтобы получить доступ к конфигурации сервера NFS:

Синтаксис конфигурации должен выглядеть примерно так (строка конфигурации будет подробно объяснена). Я объясню синтаксис более подробно ниже:

Сохраните файл и выйдите. Затем выполните команду:

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

И это часть конфигурации сервера NFS. Файл должен выглядеть примерно так:

Примечание для общей папки

Кроме того, для папки, которой вы поделились... если папка была создана пользователем root или пользователем с привилегиями sudo и с клиентского компьютера, вы используете учетную запись, которая не является root - там может быть прочитано и пишут проблемы при доступе к папке из клиента.

В этом случае вам следует изменить права доступа к каталогу и владельца общей папки сервера следующим образом:

Это означает, что общая папка не принадлежит какой-либо учетной записи или локальной группе и имеет разрешения на чтение и запись.

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

IP-адрес должен принадлежать вашему пулу IP-адресов.

Синтаксис конфигурации сервера NFS

Хорошо, давайте рассмотрим настройку сервера NFS. Итак, в предыдущем абзаце я использовал эту команду в качестве примера:

Этот синтаксис конфигурации предназначен для сценария, в котором вы хотите, чтобы ваша общая папка NFS была доступна во всей локальной сети для всех, кто находится под пулом IP-адресов 192.168.100.0.

Мы подробно рассмотрим этот синтаксис:

Установка клиента NFS и подключение общего сетевого ресурса NFS

На клиентском компьютере выполните следующие команды, чтобы установить клиент NFS:

Следующий шаг — создать точку подключения на клиентском компьютере. Команда ниже используется в качестве примера. Это также может быть любое место:

Теперь мы можем смонтировать нашу общую сетевую папку NFS:

Опять же, IP-адрес в приведенной выше команде должен принадлежать вашему серверу, и эта команда должна смонтировать сетевую папку на вашем клиентском компьютере. Общая папка должна сразу же появиться в файловом менеджере… Вот так (пример на картинке ниже):

Тестирование сетевой папки NFS с помощью терминала

Конечно, вы можете протестировать общий сетевой ресурс с помощью файлового менеджера и среды рабочего стола. Но мне также нравится тестировать общий ресурс через терминал. Тестирование метода с помощью терминала также хорошо подходит для сценария, когда у вас нет монитора и вы обращаетесь к удаленному серверу.

Эта команда создаст файл .txt в нашей точке подключения, и этот файл должен сразу появиться на нашем сервере. Как на картинках ниже:

Монтирование сетевого ресурса при загрузке

Команда монтирования, которую мы использовали ранее, — в основном это ручное монтирование, и оно не является постоянным. Это означает, что как только вы перезагрузите или выключите свой клиентский компьютер… монтирование исчезнет, ​​и вам нужно будет снова смонтировать его вручную.

Однако есть способ смонтировать его постоянно, а именно настроить сетевую папку при загрузке. Таким образом, когда ваш клиентский компьютер загружается, он автоматически подключает сетевую папку.

Этот метод является необязательным, и вы можете использовать его, если хотите.

. ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ НА ЭТОТ ШАГ.

Если вы не сделаете это правильно, вы можете заблокировать свой компьютер при следующем перезапуске. Файл Fstab — это файл конфигурации процесса загрузки, в котором также есть ваши жесткие диски. Таким образом, если файл настроен неправильно, вы можете помешать загрузке машины.

На клиентском компьютере выполните эту команду, чтобы получить доступ к файлу fstab:

Затем... В КОНЕЦ ФАЙЛА добавьте эту командную строку:

Это должно выглядеть так:

Сохраните файл и выйдите. И это все.Первые две части команды сообщают клиенту о доступе к серверу и подключении общей сетевой папки к точке подключения клиента. Для этого метода монтирования мы использовали довольно мало опций и свойств монтирования, чтобы сделать монтирование максимально стабильным и избежать проблем с чтением и записью. Вы можете проверить объяснение этой опции на справочной странице NFS на терминале:

или в веб-версиях справочной страницы NFS — manpage1 и manpage2

Обзор

Это был процесс настройки NFS-сервера в Debian 10 и Debian 11. Здесь мы рассмотрели не только процесс установки и настройку клиентской и серверной машины, но также рассмотрели процесс монтирования и доступ к доля NFS, а также некоторые потенциальные риски.

Следующее не указывает NFS версии 2, 3 или 4; приведенные ниже шаги сработали для меня, используя поддержку NFS версии 3, встроенную в ядра сервера и клиента (сервер — это машина Debian Etch, клиент — другой дистрибутив Linux, PLD «спасение».)

Если вы хотите настроить NFSv4 с Kerberos, см. раздел NFS/Kerberos.

Убедитесь, что ядро ​​вашего сервера поддерживает сервер NFS (модуль ядра с именем "knfsd.ko" в вашей структуре каталогов /lib/modules/uname -r/)

или аналогичный (там, где вы спрятали файл конфигурации, например, возможно, в /usr/src/linux/.config.)

Затем обратите внимание, что в настоящее время существует по крайней мере две основные реализации сервера NFS (за исключением реализованных на Python и подобных): одна реализована в пространстве пользователя (медленнее, проще в отладке), а другая реализована в пространстве ядра (быстрее). .) Ниже показана установка пространства ядра. Если вы хотите использовать сервер пользовательского пространства, установите одноименный пакет.

Во-первых, пакеты для начала:

ПРИМЕЧАНИЕ. Пакет portmap требуется только в том случае, если вы хотите запустить сервер NFSv2 или NFSv3. Если все ваши клиенты поддерживают NFSv4, вы можете отключить NFSv2 и NFSv3 (как описано в разделе «Только NFSv4» ниже) и пропустить раздел «Карта порта» ниже.

Карта порта

Обратите внимание, что portmap по умолчанию прослушивает только попытки подключения NFS к 127.0.0.1 (localhost), поэтому, если вы хотите разрешить подключения в вашей локальной сети, вам нужно отредактировать /etc/default/portmap, чтобы закомментировать Строка "ВАРИАНТЫ". Также нам необходимо убедиться, что файл /etc/hosts.allow разрешает подключения к порту portmap. Например:

См. 'man hosts.allow' для примеров синтаксиса. Но в целом указание только части IP-адреса таким образом (без конечной точки) рассматривает указанный фрагмент IP-адреса как подстановочный знак, разрешая все IP-адреса в диапазоне от 192.168.1.0 до 192.168.1.255 (в этом примере). может делать больше «подстановочных знаков», используя DNS-имена, и так далее. Обратите внимание, что «portmap» предоставляется deb-пакетом «rpcbind» (по крайней мере, для Stretch).

Экспорт

Отредактируйте файл /etc/exports, в котором перечислены файловые системы сервера для экспорта по NFS на клиентские машины. И создайте таблицу NFS с помощью «exportfs -a». В следующем примере показано добавление строки, которая добавляет путь «/example» для доступа с любого компьютера в локальной сети (здесь 192.168.1.*).

Это указывает серверу обслуживать этот путь, доступный для чтения/записи, с корневым идентификатором пользователя, соединяющим клиентов, использовать корневой доступ вместо того, чтобы сопоставляться с «никто», и использовать «поддерево_проверки», чтобы отключить предупреждающее сообщение. . Затем перезагружает сервер.

Примечание. Если вы хотите, чтобы файл /etc/exports делил общий ресурс NFS с несколькими отдельными записями, используйте записи, разделенные пробелами. Синтаксис выглядит следующим образом:

Со стороны клиента (например, я использовал «спасательный» диск PLD для загрузки компьютера с Windows для некоторой диагностики и использовал его встроенную поддержку клиента NFS для монтирования пути с другого компьютера), вам нужно чтобы убедиться, что карта портов запущена и поддержка клиента NFS встроена в ядро ​​или загружен соответствующий модуль ("nfs.ko"), а затем смонтируйте путь к серверу следующим образом:

Только NFSv4

Чтобы включить только NFSv4 или выше (и тем самым отключить v2 и v3), установите следующие переменные в /etc/default/nfs-common:

И следующее в /etc/default/nfs-kernel-server. Обратите внимание, что RPCNFSDOPTS отсутствует по умолчанию, и его необходимо добавить.

Кроме того, rpcbind не требуется для NFSv4, но будет запущен в качестве предварительного условия с помощью nfs-server.service. Этого можно избежать, замаскировав rpcbind.service и rpcbind.socket:

NFSv4 требует только одного порта (TCP/UDP 2049) и не требует установки службы portmap.

Прослушивание только определенных IP-адресов

По умолчанию NFS прослушивает соединения на всех портах. Чтобы прослушивать соединения NFS(v4) только с определенного IP-адреса, добавьте параметр -H в RPCNFSDOPTS в /etc/default/nfs-kernel-server. :

В качестве альтернативы вместо IP-адреса может быть указано имя хоста. Параметр -H также может использоваться несколько раз для прослушивания на нескольких разных IP-адресах.

11.4. Файловый сервер NFS

NFS ( Сетевая файловая система ) – это протокол, обеспечивающий удаленный доступ к файловой системе через сеть. Все системы Unix могут работать с этим протоколом.

КОНКРЕТНЫЙ СЛУЧАЙ Общие ресурсы Microsoft Windows и NFS

Когда используются более старые или (так называемые) «домашние» версии Windows, обычно вместо NFS следует использовать Samba (раздел 11.5, «Настройка общих ресурсов Windows с помощью Samba»). Однако современные решения Windows Server и «Pro» или «Enterprise» для настольных компьютеров имеют встроенную поддержку NFS. После установки компонентов «Службы для NFS» общие ресурсы NFS могут быть доступны и временно или постоянно подключены, как и любые другие сетевые ресурсы. Помните о возможных проблемах с кодировкой в ​​именах файлов.

В качестве альтернативы Debian можно установить на Windows 10 Pro и выше. Для этого требуется установка компонента Windows Subsystem for Linux и приложения Debian из магазина Windows.

NFS — очень полезный инструмент, но исторически он страдал от многих ограничений, большинство из которых были устранены в версии 4 протокола. Недостатком является то, что последнюю версию NFS сложнее настроить, когда вы хотите использовать базовые функции безопасности, такие как аутентификация и шифрование, поскольку для этих частей она использует Kerberos. А без них протокол NFS должен быть ограничен доверенной локальной сетью, поскольку данные передаются по сети в незашифрованном виде (их может перехватить сниффер), а права доступа предоставляются на основе IP-адреса клиента (который может быть подделанным).

ДОКУМЕНТАЦИЯ NFS HOWTO

Хорошей документации по развертыванию NFSv4 довольно мало. Вот несколько советов с контентом разного качества, но это должно хотя бы дать некоторые подсказки о том, что следует делать.

11.4.1. Защита NFS

Если вы не используете функции безопасности на основе Kerberos, крайне важно убедиться, что только машины, которым разрешено использовать NFS, могут подключаться к различным требуемым серверам RPC, поскольку базовый протокол доверяет данным, полученным из сети. Брандмауэр также должен блокировать подмену IP-адреса, чтобы внешняя машина не действовала как внутренняя, а доступ к соответствующим портам должен быть ограничен машинами, предназначенными для доступа к общим ресурсам NFS.

НАЗАД К ОСНОВАМ RPC

Службы RPC регистрируются в каталоге, известном как portmapper . Клиент, желающий выполнить запрос NFS, сначала обращается к portmapper (на порту 111, TCP или UDP) и запрашивает сервер NFS; в ответе обычно упоминается порт 2049 (по умолчанию для NFS). Не все службы RPC обязательно используют фиксированный порт.

Для более ранних версий протокола требовались другие службы RPC, использующие динамически назначаемые порты. К счастью, в NFS версии 4 требуются только порты 2049 (для NFS) и 111 (для портмаппера), поэтому их легко защитить брандмауэром.

11.4.2. NFS-сервер

Сервер NFS является частью ядра Linux; в ядрах, предоставляемых Debian, он собран как модуль ядра. Если сервер NFS должен запускаться автоматически при загрузке, необходимо установить пакет nfs-kernel-server; он содержит соответствующие сценарии запуска.

В файле конфигурации сервера NFS /etc/exports перечислены каталоги, доступные по сети (экспортированные). Для каждой общей папки NFS предоставляется доступ только к заданному списку машин. Более детальное управление доступом можно получить с помощью нескольких опций. Синтаксис этого файла довольно прост:

Обратите внимание, что в NFSv4 все экспортируемые каталоги должны быть частью единой иерархии, а корневой каталог этой иерархии должен быть экспортирован и указан параметром fsid=0 или fsid=root .

Каталоги доступны только для чтения по умолчанию (или с опцией ro). Опция rw разрешает доступ для чтения и записи. Клиенты NFS обычно подключаются с порта, ограниченного корневым (другими словами, ниже 1024); это ограничение можно снять с помощью небезопасного параметра (безопасный параметр неявный, но его можно сделать явным, если это необходимо для ясности).

По умолчанию сервер отвечает на запрос NFS только после завершения текущей операции с диском (опция синхронизации); это можно отключить с помощью опции async. Асинхронная запись немного повышает производительность, но снижает надежность, поскольку существует риск потери данных в случае сбоя сервера между подтверждением записи и фактической записью на диск.Поскольку значение по умолчанию недавно изменилось (по сравнению с историческим значением NFS), рекомендуется явно указать значение.

Чтобы не предоставлять root-доступ к файловой системе любому клиенту NFS, все запросы, кажущиеся исходящими от пользователя root, рассматриваются сервером как исходящие от пользователя Nobody. Это поведение соответствует опции root_squash и включено по умолчанию. Опция no_root_squash, отключающая такое поведение, опасна и должна использоваться только в контролируемых средах. Если все пользователи должны быть сопоставлены с пользователем none, используйте all_squash. Параметры anonuid=uid и anongid=gid позволяют указать другого поддельного пользователя, который будет использоваться вместо UID/GID 65534 (что соответствует пользователю none и группе nogroup ).

В NFSv4 вы можете добавить параметр sec, чтобы указать желаемый уровень безопасности: sec=sys — это значение по умолчанию без специальных функций безопасности, sec=krb5 включает только аутентификацию, sec=krb5i добавляет защиту целостности, а sec= krb5p — самый полный уровень, включающий защиту конфиденциальности (с шифрованием данных). Чтобы это работало, вам нужна работающая установка Kerberos (эта услуга не рассматривается в этой книге).

ВНИМАНИЕ Первая установка

Сценарий загрузки /etc/init.d/nfs-kernel-server запускает сервер только в том случае, если в /etc/exports указан один или несколько допустимых общих ресурсов NFS. При первоначальной настройке, после того как этот файл будет отредактирован, чтобы содержать допустимые записи, сервер NFS должен быть запущен с помощью следующей команды:

11.4.3. Клиент NFS

Как и в случае с другими файловыми системами, для интеграции общего ресурса NFS в системную иерархию требуется монтирование (и пакет nfs-common). Так как эта файловая система имеет свои особенности, потребовалось несколько изменений в синтаксисе команды mount и файла /etc/fstab.

Пример 11.19. Установка вручную с помощью команды mount

Пример 11.20. Запись NFS в файле /etc/fstab

Описанная выше запись монтирует при запуске системы каталог NFS /shared/ с сервера arrakis в локальный каталог /srv/shared/. Запрошен доступ для чтения и записи (отсюда и параметр rw). Параметр nosuid — это мера защиты, которая стирает все биты setuid или setgid из программ, хранящихся в общем ресурсе. Если общий ресурс NFS предназначен только для хранения документов, другим рекомендуемым параметром является noexec , который предотвращает выполнение программ, хранящихся в общем ресурсе. Обратите внимание, что на сервере общий каталог находится ниже корневого экспорта NFSv4 (например, /export/shared ), это не каталог верхнего уровня.

NFS (сетевая файловая система) — это протокол файловой системы клиент-сервер, который позволяет нескольким системам или пользователям получать доступ к одной и той же общей папке или файлу. Последней версией является NFS версии 4. Общий файл будет выглядеть так, как если бы он был сохранен локально. Он обеспечивает централизованное управление, которое можно защитить с помощью брандмауэра и проверки подлинности Kerberos.

Эта статья поможет вам установить сервер NFS в Debian 10 и смонтировать его на клиентской машине.

Лабораторная среда

  • Сервер NFS: 192.168.122.126 (Debian 10)
  • Клиент NFS: 192.168.122.173 (любая система Linux)

Установка NFS-сервера

Прежде чем приступить к установке сервера NFS, сначала убедитесь, что ваша система обновлена. Запустите команду ниже

Установите пакет nfs с помощью следующей команды

Создайте каталог для обмена файлами и папками через сервер NFS.

Поскольку общий ресурс NFS будет использоваться любым пользователем в клиенте, разрешение установлено для пользователя «никто» и группы «без группы».

Предоставить общей папке пользователя достаточно прав для чтения и записи файлов внутри нее. Однако вы можете установить его в соответствии с вашими требованиями.

Добавить информацию об экспорте в файл /etc/exports

Добавьте следующую запись в конец файла.

Ваш файл /etc/export должен выглядеть так:

  • rw : операции чтения и записи
  • синхронизация: запись любых изменений на диск перед их применением
  • no_subtree_check : отключает проверку поддерева

Теперь экспортируйте общий каталог.

Это не должно показывать никаких ошибок. Это означает, что ваша конфигурация верна.

Если вы используете брандмауэр в Debian, разрешите клиенту подключаться к NFS с помощью следующей команды:

Подключение клиента NFS

Теперь давайте смонтируем наш общий ресурс NFS на клиентской машине. Установите общий пакет NFS,

Для Ubuntu Debian / Ubuntu

Создайте каталог для доступа к общей папке с сервера.

Для постоянного монтирования добавьте следующую запись в файл /etc/fstab. Откройте файл в любом из ваших любимых редакторов.

Добавить следующую строку в конец файла,

Ваш файл должен выглядеть так,

  • 192.168.122.110:/mnt/nfsshare = общая папка с сервера nfs
  • /mnt/shared_nfs = каталог монтирования на клиентской машине
  • nfs4 = означает версию 4 nfs
  • defaults,user,exec = Разрешить любому пользователю монтировать файловую систему, а также разрешить им запускать двоичные файлы

Смонтируйте файловую систему NFS с помощью команды mount следующим образом.

Вы можете проверить подключение, создав файл в /mnt/shared_nfs на клиентской машине.

Используйте команду «df -h», чтобы увидеть точку подключения, как показано ниже,

Попробуем создать файл с помощью команды touch на общем ресурсе NFS,

Если это не показывает никаких ошибок, ваша конфигурация в порядке, и вы готовы использовать систему общего доступа NFS.

Это все. В этом руководстве вы узнаете, как установить общий ресурс NFS на сервере и подключить его к клиенту. Спасибо за прочтение статьи.

Читайте также: