Windows сетевая файловая система

Сетевая файловая система NFS является родным для мира Linux способом организации общего доступа к файлам по сети и ее взаимоотношения с Windows долгое время оставались напряженными. Однако последнее время ситуация начала меняться и Windows перешел от конфронтации к сотрудничеству с открытым ПО. Начиная с Windows 10 1607 (14393) в системе появился штатный NFS-клиент, который позволяет прозрачно подключать и использовать NFS-ресурсы. В данной статье мы расскажем, как его установить и использовать, а также разберем некоторые особенности эксплуатации.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Для установки NFS-клиента откройте оснастку Программы и компоненты и перейдите по ссылке Включение или отключение компонентов Windows, найдите там раздел Службы для NFS и включите его содержимое.

nfs-client-windows-001.png

Также можно быстро выполнить установку при помощи PowerShell, для выполнения команды нужно запустить терминал с повышенными правами:

Enable-WindowsOptionalFeature -FeatureName ServicesForNFS-ClientOnly, ClientForNFS-Infrastructure -Online -NoRestart

Графических инструментов для подключения NFS-ресурсов нет, поэтому снова воспользуемся терминалом, только теперь запустим его без повышения прав:

mount -o anon \\192.168.233.184\mnt\nfs\doc Z:

Команда mount поддерживает ряд опций, которые указываются после ключа -o, в данном случае опция одна — anon, что означает подключение анонимным пользователем. Затем указываем сетевой путь к экспортируемому ресурсу, обратите внимание, что NFS-клиент для Windows поддерживает только NFS v3 и поэтому путь нужно указывать не от корня NFS, а от корня файловой системы. И наконец буква диска куда будет примонтирован ресурс. Адрес NFS-сервера в нашем случае 192.168.233.184.

Если нигде не было допущено ошибок, то в проводнике появится новый сетевой диск с указанной буквой.

nfs-client-windows-002.png

Для отключение используйте команду:

umount Z:

У команды mount есть один существенный недостаток, сетевые диски, подключенные таким образом, не восстанавливаются при загрузке системы. Можно, конечно, пойти наиболее простым путем и добавить в автозагрузку пакетный файл с нужными командами, но лучше снова позвать на помощь PowerShell. Данную команду также нужно выполнять без повышения прав:

New-PSdrive -PSProvider FileSystem -Name Z -Root \\192.168.233.184\mnt\nfs\doc -Persist

Обратите внимание, что букву диска для монтирования указываем без двоеточия, а опция -Persist предписывает подключить ресурс на постоянной основе.

Для отключения ресурса воспользуйтесь командой:

Remove-PSdrive -Name Z

Для просмотра всех смонтированных NFS-ресурсов, неважно как они были подключены, используйте команду:

mount

nfs-client-windows-003.png

Как можем увидеть, при анонимном подключении Windows использует UID/GID = -2, если мы используем all_squash со стороны NFS-сервера, то это не имеет особого значения, в иных случаях нам может потребоваться указать иные идентификаторы. Это можно сделать через системный реестр, откройте ветвь:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

И добавьте туда два параметра DWORD (32бит) с именами AnonymousUid и AnonymousGid и укажите в них нужные идентификаторы в десятичном виде. После чего перезагрузите компьютер.

А теперь о проблемах. Для их понимания достаточно посмотреть на следующий скриншот:

nfs-client-windows-004.png

Начнем с самого безобидного, регистра в именах файлов. Как мы помним — Linux система чувствительная к регистру, поэтому там TEST.txt и test.txt разные файлы. И если вы будете работать с ними в пределах NFS-ресурса, то проблем не возникнет, вы можете даже открыть оба файла одновременно, внести изменения и сохранить. Все это возможно потому, что NFS — это не протокол удаленного доступа, а именно сетевая файловая система.

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

А вот следующая проблема куда серьезней и не имеет приемлемого решения на сегодняшний день. Современные Linux системы давно работают с UTF-8, в то время как Windows продолжает использовать региональные кодовые страницы, например, CP-1251 для русского языка. Это приводит к тому, что имена файлов, набранные кириллицей (или любыми иными национальными символами) отображаются «крякозябликами». Сами файлы при этом доступны и могут быть отредактированы.

Если же мы со стороны Windows поместим на NFS-ресурс файл с кириллицей в имени, то со стороны Linux мы увидим веселые ромбики.

nfs-client-windows-005.png

В качестве решения можно найти совет включить поддержку UTF-8 в Windows, которая пока находится в состоянии бета. Эта возможность доступа в языковых настройках панели управления.

nfs-client-windows-006.png

Но это решение из разряда «одно лечим — другое калечим» и покалечено будет гораздо больше, чем вылечено. Дело в том, что достаточно большое количество вполне современных программ ничего не знают об UTF-8 и не умеют с ним работать, в итоге веселые ромбики начнут попадаться вам в самых неожиданных местах вашей системы.

Поэтому, используя NFS-клиент для Windows следует четко понимать все плюсы, минусы и имеющиеся недостатки. Но в целом появление поддержки NFS в Windows — хорошо, так как делает поддержку гетерогенных сред проще.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

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

История и значение

NFS была первоначально разработана компанией Sun Microsystems (ныне Oracle) в начале 1980-х годов, а первая публично выпущенная версия NFSv2 дебютировала в 1984 году. NFSv2 обеспечивала базовые возможности совместного использования файлов и заложила основу для будущих улучшений. В 1995 году была представлена ​​версия NFSv3, улучшающая производительность и поддерживающая файлы большего размера.

NFSv4, выпущенная в 2000 году, принесла значительные улучшения, включая надежную безопасность с использованием Kerberos, операции с отслеживанием состояния и улучшенную блокировку файлов. NFSv4.1, выпущенная в 2010 году, представила параллельную NFS (pNFS) для лучшей масштабируемости и производительности в кластерных средах. В последней версии NFSv4.2, выпущенной в 2016 году, добавлены такие функции, как копирование на стороне сервера, рекомендации по вводу-выводу приложений, а также улучшены pNFS и безопасность.

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

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

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

Компоненты NFS

  • NFS-сервер: машина или устройство, которое предоставляет доступ к своим файлам и каталогам другим системам по сети. Он запускает программное обеспечение сервера NFS и управляет контролем доступа и блокировкой файлов.
  • Клиент NFS: машина или устройство, которое получает доступ к общим файлам и каталогам с сервера NFS. Он монтирует общие ресурсы в свою локальную файловую систему, делая их видимыми как локальные файлы.
  • Удаленный вызов процедур (RPC): протокол без сохранения состояния и установления соединения, который позволяет программе на одном компьютере запускать программу на другом компьютере. Он используется NFS для связи между клиентами и серверами.
  • Протокол NFS: определяет формат и процедуры для операций NFS, таких как чтение, запись файлов и управление метаданными. Он работает поверх RPC.

Процесс обмена файлами с использованием NFS

Процесс включает в себя несколько этапов:

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

Преимущества использования NFS

NFS предлагает несколько преимуществ по сравнению с SMB и FTP, включая более высокую производительность в средах UNIX, упрощенную настройку и более эффективную обработку данных. В отличие от FTP, NFS позволяет пользователям монтировать удаленные каталоги непосредственно в свою файловую систему. NFS может масштабироваться от небольших домашних сетей до крупных корпоративных сред. Его гибкость позволяет адаптироваться к различным конфигурациям сети и потребностям пользователей, что делает его подходящим для организаций разного размера.

NFS снижает накладные расходы, связанные с передачей файлов, что приводит к сокращению времени доступа и повышению общей производительности системы. Он оптимизирован для использования в средах UNIX, что еще больше повышает его эффективность. NFS поддерживает различные операционные системы, включая UNIX, Linux и Windows, обеспечивая беспрепятственный обмен файлами на разных платформах. Такая совместимость гарантирует, что организации смогут интегрировать NFS в различные ИТ-среды.

NFS особенно полезен в средах с большим количеством клиентов, обращающихся к общим ресурсам, таким как корпоративные сети, образовательные учреждения и исследовательские центры, где он обеспечивает эффективный доступ к данным и управление ими. NFS можно интегрировать с многочисленными операционными системами и сетевыми устройствами, что делает его универсальным решением для различных ИТ-инфраструктур. Он поддерживает различные версии UNIX, дистрибутивы Linux и даже Windows посредством дополнительных сервисов.

Варианты использования NFS

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

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

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

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

Настройка НФС

Для настройки NFS требуется надежное серверное оборудование и сетевые интерфейсы, а также серверное и клиентское программное обеспечение NFS. Операционные системы должны быть совместимыми, включая Linux, UNIX, Windows и macOS. Обеспечение выполнения этих основных требований облегчит плавную настройку и работу NFS в вашей сетевой среде.

Линукс

Установите пакет сервера NFS:

  • В терминале обновите списки пакетов: sudo apt-get update (Debian/Ubuntu) или sudo yum update (RHEL/CentOS).
  • Установите сервер NFS: sudo apt-get install nfs-kernel-server (Debian/Ubuntu) или sudo yum install nfs-utils (RHEL/CentOS).

Настройте общие ресурсы в /etc/exports

  • Откройте файл /etc/exports в текстовом редакторе: sudo nano /etc/exports
  • Добавьте записи экспорта: укажите каталоги для общего доступа и разрешения на доступ, по одному общему ресурсу в каждой строке. Пример:
    /shared_directory 192.168.1.0/24(rw,sync,subtree_check)
  • Сохраните и закройте файл.

Запустить службы NFS

  • Включите запуск NFS-сервера при загрузке: sudo systemctl Enable nfs-kernel-server (Debian/Ubuntu) или sudo systemctl Enable nfs (RHEL/CentOS).
  • Перезапустите сервер NFS, чтобы применить изменения: sudo systemctl restart nfs-kernel-server (Debian/Ubuntu) или sudo systemctl restart nfs (RHEL/CentOS).
  • Проверьте состояние сервера NFS: sudo systemctl status nfs-kernel-server (Debian/Ubuntu) или sudo systemctl status nfs (RHEL/CentOS).

Откройте порты брандмауэра (если применимо)

  • Разрешите службу NFS через брандмауэр: sudo ufw разрешить с 192.168.1.0/24 на любой порт nfs (при использовании UFW) или sudo firewall-cmd –permanent –add-service=nfs && sudo firewall-cmd –reload (при использовании брандмауэра).

Подключите общий ресурс NFS на клиенте

  • Создайте точку монтирования: sudo mkdir /mnt/nfs_share.
  • Подключите общий ресурс NFS:
  • Либо смонтируйте с помощью sudo mount 192.168.1.1:/shared_directory /mnt/nfs_share ИЛИ
  • Определите общий ресурс в /etc/fstab с помощью строки типа server_ip:/shared_directory /local_mount_point nfs auto,nofail,defaults 0 0 – он будет автоматически смонтирован при загрузке или если вы запустите sudo mount -a (предпримет попытку смонтировать все /etc/ монтирование, определенное fstab, за исключением тех, у которых в параметрах монтирования указано noauto).
  • Проверьте монтирование: df -h

Windows (10/11/Сервер)

Включить функцию сервера NFS

  • Windows-сервер
  • Откройте панель управления.
  • Перейдите в «Программы» > «Включить или отключить функции Windows».
  • Прокрутите вниз и проверьте «Службы для NFS».
  • Нажмите «ОК» и дождитесь завершения установки.
  • Windows 10/11
  • Откройте приложение «Настройки».
  • Откройте «Приложения» > «Дополнительные функции».
  • Нажмите «Просмотреть функции» рядом с надписью «Добавить дополнительную функцию».
  • Найдите службы для NFS.
  • Установите флажок и нажмите «Далее», затем «Установить».
  • Подождите завершения установки.
  • Настройка параметров общего доступа
  • Windows-сервер
  • Откройте Диспетчер серверов.
  • Перейдите в раздел «Файловые службы и службы хранения данных» > «Общие ресурсы».
  • Нажмите «Задачи» и выберите «Новый общий ресурс».
  • Выберите «Общий ресурс NFS — Быстрый» и нажмите «Далее».
  • Выберите сервер и том, на котором будет создан общий ресурс, затем нажмите «Далее».
  • Укажите имя и путь общего ресурса, затем нажмите «Далее».
  • Настройте разрешения общего доступа, добавив разрешенных клиентов и указав права доступа (например, чтение/запись).
  • Проверьте настройки и нажмите «Создать».
  • Windows 11
  • Откройте проводник и перейдите к папке, которой вы хотите поделиться.
  • Щелкните папку правой кнопкой мыши и выберите «Свойства».
  • Перейдите на вкладку «Общий доступ» и нажмите «Расширенный общий доступ».
  • Установите флажок «Поделиться этой папкой».
  • Нажмите «Разрешения» и добавьте соответствующие разрешения (чтение/запись) для пользователей, которые будут иметь доступ к общему ресурсу.
  • Нажмите ОК, чтобы сохранить настройки.

Запустить службы NFS

  • Откройте командную строку от имени администратора.
  • Запустите клиент NFS: запуск клиента nfsadmin.
  • Запустите сервер NFS: запуск сервера nfsadmin.
  • Проверьте состояние служб NFS: nfsstat.

Откройте порты брандмауэра (если применимо)

  • Откройте панель управления и выберите «Система и безопасность» > «Брандмауэр Защитника Windows».
  • Нажмите на Дополнительные настройки.
  • Создайте входящие правила для портов NFS (обычно TCP/UDP 2049).

Подключите общий ресурс NFS на клиенте

  • Откройте командную строку от имени администратора.
  • Создайте точку монтирования: mkdir Z:\nfs_share.
  • Подключите общий ресурс NFS: mount \\<server_ip>\shared_directory Z:\nfs_share.
  • Проверьте монтирование: каталог Z:\nfs_share.

macOS

Создать точку монтирования

  • Откройте приложение «Терминал».
  • Создайте каталог, который будет служить точкой монтирования: sudo mkdir/Volumes/nfs_share.

Отредактируйте /etc/auto_master

  • Откройте /etc/auto_master в текстовом редакторе с повышенными привилегиями: sudo nano /etc/auto_master
  • Добавьте новую строку в конец файла, чтобы включить монтирование NFS. Например: /- auto_nfs
  • Сохраните и закройте файл.

Создайте /etc/auto_nfs

  • Создайте и откройте /etc/auto_nfs в текстовом редакторе: sudo nano /etc/auto_nfs.
  • Добавьте конфигурацию монтирования NFS. Например:
    /Volumes/nfs_share -fstype=nfs,rw,nosuid 192.168.1.100:/srv/nfs
  • Замените 192.168.1.100:/srv/nfs на IP-адрес вашего сервера NFS и общий каталог.
  • Сохраните и закройте файл.

Перезагрузите конфигурацию автомонтирования.

  • Перезагрузите конфигурацию автомонтирования, чтобы применить изменения: sudo automount -vc.

Проверьте крепление

  • Убедитесь, что общий ресурс NFS смонтирован: ls /Volumes/nfs_share.
  • Готово: если в списке каталогов отображается содержимое общего ресурса NFS, настройка прошла успешно.

Вопросы безопасности и лучшие практики

При рассмотрении вопроса о безопасности NFS важно использовать безопасные методы аутентификации, такие как Kerberos, реализовать шифрование данных для защиты конфиденциальной информации и следовать передовым практикам. Эти передовые методы включают регулярное обновление программного обеспечения, мониторинг журналов доступа и ограничение разрешений для повышения безопасности и защиты от потенциальных угроз. Поскольку в NFSv3 параметры /etc/exports root_squash и no_subtree_check используются по умолчанию, вам может потребоваться указать параметры no_root_squash и subtree_check, чтобы противодействовать такому поведению.

Устранение неполадок NFS

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

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

Советы и методы решения проблемы

  • Используйте инструменты диагностики: такие инструменты, как showmount и nfsstat. может дать представление о поведении NFS.
  • Проверьте системные журналы на наличие сообщений об ошибках: Например. sudo Journalctl -xe.
  • Безопасность прежде всего: тестируйте конфигурации с минимальными настройками перед масштабированием.

Инструменты и ресурсы

  • Инструменты мониторинга: nfswatch, Nagios, sysstat (ss).
  • Утилиты управления: nfs-utils, rpcinfo.

Инструменты и методы мониторинга

  • Проактивное управление. Регулярно отслеживайте производительность и журналы NFS.
  • Автоматические оповещения: настройте уведомления о потенциальных проблемах.
  • Настройка производительности: настройка параметров NFS для достижения оптимальной производительности.

NFS: улучшение обмена данными и совместной работы

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

Поскольку технологии продолжают развиваться, NFS будет играть еще более важную роль в ИТ-инфраструктуре, адаптируясь к новым вызовам и возможностям. Его постоянное развитие обеспечит его актуальность и полезность. Читателям предлагается глубже углубиться в NFS, поэкспериментировать с ее функциями и рассмотреть возможность внедрения ее в свои собственные сетевые настройки, чтобы воспользоваться ее многочисленными преимуществами.

При правильном понимании и управлении NFS может значительно улучшить обмен данными и совместную работу.

Просмотров: 2 016

SMB (сокр. от англ. Server Message Block) — сетевой протокол прикладного уровня для удалённого доступа к файлам, принтерам и другим сетевым ресурсам, а также для межпроцессного взаимодействия. Первая версия протокола, также известная как Common Internet File System (CIFS) (Единая файловая система Интернета), была разработана компаниями IBM, Microsoft, Intel и 3Com в 1980-х годах; вторая (SMB 2.0) была создана Microsoft и появилась в Windows Vista. В настоящее время SMB связан главным образом с операционными системами Microsoft Windows, где используется для реализации «Сети Microsoft Windows» (англ. Microsoft Windows Network) и «Совместного использования файлов и принтеров» (англ. File and Printer Sharing).

Первая версия протокола была разработана сотрудником IBM Бэрри Файгенбаумом (англ. Barry Feigenbaum) в 1983 году[1][2]. Изначально SMB был реализован через NetBIOS (поверх NBF, IPX/SPX или NetBIOS over TCP/IP) и использовался в сетях MS-NET и LAN Manager для DOS, а также в Windows for Workgroups. Microsoft регулярно дополняла протокол новыми возможностями; так, вторая версия Microsoft Networks SMB File Sharing Protocol Extensions появилась в 1988 году, 3-я версия — в 1989 году, версия 3.4 — в 1992[3].

В 1992 году появилась Samba — свободная реализация протокола SMB для UNIX-подобных операционных систем (изначально для SunOS). Поскольку Microsoft не опубликовала документацию значительной части своих дополнений к SMB, разработчикам Samba пришлось провести обратную разработку протокола.

В 1996 году Microsoft стала использовать новое название для дополненной версии протокола, которая использовалась в Windows NT 4.0 — CIFS (англ. Common Internet File System); новое имя прижилось, SMB и CIFS фактически стали синонимами[2]. Microsoft некоторое время пыталась превратить CIFS в международный стандарт через IETF, но после 2000 года прекратила работу по стандартизации.

В Windows 2000 впервые появился SMB непосредственно поверх TCP (без NetBIOS); для этого используется порт 445 (SMB через NBT использовал порт 139).

В Windows Vista появилась новая версия протокола — SMB 2.0. Протокол был значительно упрощён (в SMB было более 100 команд, а в SMB 2 — всего 19); при этом была повышена производительность (благодаря механизму кэширования возможно совмещать несколько команд SMB 2 в одном сетевом запросе и увеличенным буферам чтения и записи), особенно в сетях с высокой латентностью, улучшена масштабируемость и добавлена возможность автоматического продолжения сеанса в случае временного отсоединения от сервера[4]. SMB 2 использует тот же порт (445) как и SMB, но другой заголовок пакетов (0xFF 'S' 'M' 'B' в SMB, 0xFE 'S' 'M' 'B' в SMB 2)[5].

В Windows 8 появилась новая версия протокола — SMB 3.0. Новые возможности изложены на сайте разработчиков.

В 2008 году под давлением Еврокомиссии Microsoft опубликовала описание своих частных протоколов, в том числе и SMB, на сайте MSDN[6].

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

Клиенты соединяются с сервером, используя протоколы TCP/IP (а, точнее, NetBIOS через TCP/IP), NetBEUI или IPX/SPX. После того, как соединение установлено, клиенты могут посылать команды серверу (эти команды называются SMB-команды или SMBs), который даёт им доступ к ресурсам, позволяет открывать, читать файлы, писать в файлы и вообще выполнять весь перечень действий, которые можно выполнять с файловой системой. Однако в случае использования SMB эти действия совершаются через сеть.

Как было сказано выше, SMB работает, используя различные протоколы. В сетевой модели OSI протокол SMB используется как протокол Application/Presentation уровня и зависит от низкоуровневых транспортных протоколов. SMB может использоваться через TCP/IP, NetBEUI и IPX/SPX. Если TCP/IP или NetBEUI будут заняты, то будет использоваться NetBIOS API. SMB также может посылаться через протокол DECnet. Digital (ныне Compaq) сделала это специально для своего продукта PATHWORKS. NetBIOS в случае использования через TCP/IP имеет различные названия. Microsoft называет его в некоторых случаях NBT, а в некоторых NetBT. Также встречается название RFCNB.

С начала существования SMB было разработано множество различных вариантов протокола для обработки всё возрастающей сложности компьютерной среды, в которой он использовался. Договорились, что реальный вариант протокола, который будет использоваться клиентом и сервером, будет определяться командой negprot (negotiate protocol). Этот SMB обязан посылаться первым до установления соединения. Первым вариантом протокола был Core Protocol, известный как SMB-реализация PC NETWORK PROGRAM 1.0. Он должным образом поддерживает весь набор основных операций, который включает в себя:

  • присоединение к файловым и принтерным ресурсам и отсоединение от них;
  • открытие и закрытие файлов;
  • открытие и закрытие принтерных файлов;
  • чтение и запись файлов;
  • создание и удаление файлов и каталогов;
  • поиск каталогов;
  • получение и установление атрибутов файла;
  • блокировка и разблокировка файлов.
8 16 24 32 bits
IDF
Command RCLS Reserved ERR
ERR (cont) REB/FLG Reserved
Reserved
Reserved
Reserved
Tree ID Process ID
User ID Multiplex ID
WCT VWV
BCC BUF
SMB header structure

Основные элементы структуры заголовка SMB:
   • IDF (Identifier) — Идентификатор протокола: 0xff, 0x53(‘S’), 0x4d(‘M’), 0x42(‘B’).
   • Command — команда протокола.
   • RCLS — код класса ошибки.
   • ERR — код ошибки.
   • Tree ID (TID) — идентификатор соединения с сетевым ресурсом.
   • Process ID (PID) — идентификатор клиентского процесса фактического соединения.
   • User ID (UID) — идентификатор пользователя; используется сервером для проверки прав доступа пользователя.
   • Multiplex ID (MID) — идентификатор группы пользователя; используется сервером для проверки прав доступа группы пользователя.
   • WCT — количество параметров, следующих за заголовком.
   • BCC — количество байт данных, следующих за параметрами.

Аутентификация Microsoft SMB Protocol


править

Модель механизма защиты, которая используется в Microsoft SMB Protocol, в основном идентична модели любого другого варианта SMB-протокола. Она состоит из двух уровней защиты: user-level (пользовательский уровень) и share-level (уровень совместно используемого ресурса). Под share (опубликованный ресурс) понимается файл, каталог, принтер, любая услуга, которая может быть доступна клиентам по сети.

Аутентификация на уровне user-level означает, что клиент, который пытается получить доступ к ресурсу на сервере, должен иметь username (имя пользователя) и password (пароль). Если данная аутентификация прошла успешно, клиент имеет доступ ко всем доступным ресурсам сервера, кроме тех, что с share-level-защитой. Этот уровень защиты даёт возможность системным администраторам конкретно указывать, какие пользователи и группы пользователей имеют доступ к определённым данным. Он используется в Windows NT, Windows 2000, Windows XP.

Аутентификация на уровне share-level означает, что доступ к ресурсу контролируется паролем, установленным конкретно на этот ресурс. В отличие от user-level, этот уровень защиты не требует имя пользователя для аутентификации и не устанавливается никакая уникальность текущего пользователя. Этот уровень используется в Windows NT, Windows 2000 и Windows XP для обеспечения дополнительного уровня контроля защиты сверх user-level. Операционные системы Windows 95, Windows 98 и Windows ME реализуют защиту только этого уровня.

В обоих этих уровнях защиты используется шифрование. Пароль зашифровывается, прежде чем отправляется на сервер. Типы шифрования NTLM, NTLMv2 и старые версии LAN Manager (LM) поддерживаются протоколом. Оба метода шифрования используют аутентификацию типа отклик-отзыв, в которой сервер посылает клиенту случайную сгенерированную строку, а клиент возвращает в качестве отзыва обработанную строку, которая доказывает, что клиент имеет достаточный мандат для доступа к данным.

На протяжении всего срока эксплуатации эталонной реализации протокола от Microsoft специалистами по информационной безопасности выявлялись уязвимости, позволяющие успешно провести сетевую атаку на удалённый узел.[7][8][9] Организация атаки на незащищённые серверы SMB является одной из наиболее привлекательных среди злоумышленников[10]. Так, например, с помощью использования уязвимостей протокола SMB были осуществлены взлом серверов Sony Pictures Entertainment[11] и распространение вредоносного ПО DoublePulsar, WannaCry[12] (уязвимость EternalBlue) и Petya[13].

  • Samba
  • NetBIOS
  • Network File System
  • Badlock
  • EternalBlue
  1. Christopher R. Hertel. SMB Filesharing URL Scheme (англ.) (8 января 2003). Дата обращения: 21 октября 2009. Архивировано из оригинала 3 июня 2012 года.
  2. 1 2 Andrew Tridgell. Myths About Samba (англ.). Дата обращения: 2 июня 2011. Архивировано из оригинала 3 июня 2012 года.
  3. Dan Shearer. History of SMB (англ.) (16 ноября 1996). Дата обращения: 21 октября 2009. Архивировано из оригинала 3 июня 2012 года.
  4. Joseph Barreto. SMB2, a complete redesign of the main remote file protocol for Windows (англ.) (9 декабря 2008). Дата обращения: 22 октября 2009. Архивировано из оригинала 3 июня 2012 года.
  5. SMB2. Wireshark. Дата обращения: 22 октября 2009. Архивировано из оригинала 3 июня 2012 года.
  6. [MS-CIFS]: Common Internet File System (CIFS) Protocol (англ.). Дата обращения: 11 августа 2015. Архивировано 5 ноября 2015 года.
  7. MS02-070: Flaw in SMB Signing May Permit Group Policy to Be Modified. Microsoft (1 декабря 2007). Дата обращения: 1 ноября 2009. Архивировано 25 июля 2017 года.
  8. MS09-001: Vulnerabilities in SMB could allow remote code execution. Microsoft (13 января 2009). Дата обращения: 1 ноября 2009. Архивировано 5 октября 2009 года.
  9. Microsoft Security Bulletin MS17-010 – Critical. technet.microsoft.com. Дата обращения: 13 мая 2017. Архивировано 21 мая 2017 года.
  10. Alert (TA14-353A) Targeted Destructive Malware. US-CERT. Дата обращения: 16 мая 2017. Архивировано 20 декабря 2014 года.
  11. Sony Hackers Used Server Message Block (SMB) Worm Tool. Дата обращения: 16 мая 2017. Архивировано 20 декабря 2014 года.
  12. WannaCry Ransomware Attack Hits Victims With Microsoft SMB Exploit. eWeek. Дата обращения: 13 мая 2017.
  13. Petya ransomware virus is back amid cyber attack: Swiss agency. Reuters. Tue Jun 27 14:50:10 UTC 2017. Архивировано 2017-06-27. Дата обращения: 2017-06-27.
  • A Common Internet File System (CIFS/1.0) Protocol — Preliminary Draft  (англ.)
  • [MS-SMB]: Server Message Block (SMB) Protocol  (англ.)
  • [MS-SMB2]: Server Message Block (SMB) Protocol Versions 2 and 3  (англ.)
  • Just what is SMB?  (англ.)
  • IBM Protocols: SMB  (англ.)
  • IBM SMB: Server Message Block protocol  (англ.)

Для совместного доступа к файлам или принтерам на компьютере Windows их можно опубликовать в виде общих сетевых ресурсов и предоставить доступ по протоколу SMB. В этой статье мы рассмотрим, как открыть общий сетевой доступ к папке, файлам и принтерам на Windows компьютере в домашней или небольшой офисной локальной сети (LAN).

Содержание:

  • Настройка служб общего доступа в Windows
  • Создать общую сетевую папку в Windows 10/11
  • Открыть общий сетевой доступ к принтеру в Windows

Настройка служб общего доступа в Windows

Прежде чем создавать общие сетевые ресурсы на Windows компьютере, который будет использоваться в качестве сервера, нужно настроить некоторые сетевые службы.

Проверьте что на всех компьютерах в локальной сети выбран сетевой профиль Частная или Домашняя сеть (Private).

  1. Перейдите в раздел Settings -> Network and Internet -> выберите ваша сетевое подключение (в моем случае это Ethernet).
  2. По умолчанию в Windows 11 устанавливается профиль Открытая сеть (Public), который не подходит для совместного доступа. Измените его на Private.
    Windows: изменить тип сети в Windows на частная private

Включите общий сетевой доступ к компьютеру в панели управления.

  1. Перейдите в раздел Settings -> Network and Internet -> Advanced network settings -> Advanced sharing settings (для быстрого перехода в этот раздел панели управления выполните команду:
    control.exe /name Microsoft.NetworkAndSharingCenter /page Advanced
    )
  2. Для профиля Private networks включите сетевое обнаружение/Network Discovery (нужно чтобы компьютеры отображались в сетевом окружении)
  3. Включите общий доступ к файлам и папкам (File and printer sharing) )
    windows: включить общий доступ к файлам и принтерам

Также должны быть выполнены следующие условия:

  • Все компьютеры должны быть подключены к общей сети LAN (общий коммутатор/ роутер) или связанность сетей обеспечена маршрутизаторами
  • На всех компьютерах в локальной сети заданы уникальные имена (
    hostname
    ) и IP адреса (как правило они выдаются динамически через DHCP сервер на роутере/Wi-Fi точке доступа)
  • Если в вашей сети есть старые версии Windows (XP, Vista) или старые модели сетевых NAS, для их корректной работы с устройствами с Windows 10 и 11, вам придется включить поддержку протокола SMBv1, а также разрешить сетевой доступ под гостевой учётной записью (смотри статью);
  • Переведите службы «Публикация ресурсов обнаружения функции» (Function Discovery Resource Publication) и «Хост поставщика функции обнаружения» (Function Discovery Provider Host) в автоматический запуск. Иначе при доступе к сетевым ресурсам вы можете получить ошибку 0x80070035.
  • Вопреки распространённому заблуждению, компьютеры не должны обязательно состоять в одной рабочей группе (Workgroup).

Создать общую сетевую папку в Windows 10/11

В Windows вы можете расшарить любой из каталогов на диске, предоставив к нему общий доступ по сети. Это позволит другим компьютерам в локальной сети открывать файлы из этой сетевой папки. Рассмотрим, как открыть сетевой общий доступ к папке.

  1. Запустите проводник Windows (
    File Explorer
    ), найдите папку, доступ к которой вы хотите открыть
  2. Щелкните по каталогу правой кнопкой и выберите Предоставить доступ к -> Отдельные люди (Give access to -> Specific people);
    Предоставить доступ к каталогу по сети - Отдельные люди

  3. Вы можете предоставить доступ конкретной учетной записи (при включенном парольном доступе при доступе к данной сетевой папке у пользователя будет запрашиваться пароль). Либо вы можете включить доступ для всех пользователей, в том числе анонимных (группа Everyone). В этом случае при доступе к файлам в данном сетевом каталоге пароль запрашиваться не будет.
  4. Задайте для пользователей права дать доступа к сетевой папке. Можно открыть доступ на чтение (Read), чтение и запись (Read/Write) или запретить доступ.
  5. Нажмите кнопку Поделиться (Share)
    уровень доступа к сетевой папке чтение и запись

  6. Если вы были ранее не включили сетевое обнаружение, появится запрос на включение сетевого обнаружения и общего доступа к файлам.
  7. Появится сообщение, что данная папка открыта для доступа и указан ее сетевой адрес в формате UNC: \\Desktop-JOPF9\Distr. В UNC пути сначала указывается имя компьютера (hostname) или IP адрес, а затем имя сетевой папки. Вы можете скопировать этот адрес или отправить его на электронную почту
    сетевая папка открыта для общего доступа

Совет. Чтобы увидеть полный список опубликованных сетевых папок на вашем компьютере, перейдите в адресной строке проводника на
\\localhost
.

Можно использовать другой интерфейс для настройки общего сетевого доступа к папке или диску.

  1. Откройте свойства папки в проводнике Windows
  2. Перейдите на вкладку Доступ (Share)
  3. Нажмите кнопку Advanced Sharing (расширенная настройка)
  4. Включите опцию Открыть общий доступ к этой папке (Share this folder)
  5. Чтобы назначить права доступа, щелкните Permissions
  6. Предоставьте права доступа Change+Read для группы Everyone (Все).
    Создать общую сетевую папку в windows

  7. Такие права доступа к сетевой папке указывают на то, что фактически при доступе к файлам в этой папке используются локальные NTFS разрешения, назначенные на объекты файловой системы.

Системные администраторы для централизованного управления общими сетевыми папками на компьютере и разрешениями используют консоль
fsmgmt.msc
(Общие папки/Shared Folder).

  1. Откройте консоль Shared Folders и выберите раздел Shared;
  2. Здесь указан список всех сетевых папок, опубликованных на компьютере, включая административные папки (Admin$, C$, IPC$).
    управление общими сетевыми папками в windows

  3. Чтобы создать новую сетевую папку, выберите пункт меню Action -> New Share
  4. Выберите локальную папку на компьютере, которую вы хотите расшарить и задайте ее сетевое имя (Share Name). Можно разрешить использовать эту папку в автономном режиме, и задать права доступа
    создать новую сетевую папку в windows

  5. В этой консоли можно посмотреть или изменить права доступа к сетевой папке. Напомню, на сетевую папку действуют два списка доступа: Share Permissions (разрешения сетевой папки) и Security (NTFS разрешения файловой системы). Если на уровне сетевой папки вы предоставляете доступ для Everyone, значит эффективные разрешения доступа к файлам и папкам в сетевой папке будут регулироваться NTFS разрешениями локального каталога (на вкладке Security)..
    настройка прав доступа к сетевой папке windows

Чтобы открыть общую сетевую папку по сети с другого компьютера по сети, перейдите по UNC пути в окне проводника. вставьте . Для этого в окне проводника просто перейдите по UNC пути вашей сетевой папки, например
\\Desktop-JOPF9\Distr
.

При первом подключении к папке появится запрос на ввод имени пользователя и пароля. Введите имя и пароль пользователя удаленного компьютера с правами доступа (пароль можно сохранить в диспетчер учетных данных Windows).

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

Если на локальном и удаленном компьютере созданы одинаковые учетные записи с одинаковыми паролями, то при сетевом доступе пароль пользователя запрашиваться не будет (для аутентификации на удаленном компьютере будут использоваться учётные данные пользователя, выполнившего локальный вход в Windows).

Для удобства вы можете создать на рабочем столе ярлык на эту папку или подключить ее как сетевой диск через команду
net use
.

доступ к сетевой папке с другого компьютера

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

  1. Выполните команду:
    control firewall.cpl
  2. Нажмите в левой панели кнопку Allow an app or feature through Windows Defender Firewall
    windows firewall панель настройки

  3. Проверьте, что правило File and Printer Sharing включено для Private сетей
    Правило File and Printer Sharing в файерволе Windows

Также попробуйте получить доступ не по имени компьютера, а по его IP адресу, например:
\\192.168.1.20\Distr
.

Открыть общий сетевой доступ к принтеру в Windows

В Windows 10 и 11 вы можете предоставить общий доступ к принтеру, подключенному к вашему компьютеру, другим компьютерам в сети (расшарить принтер). Предполагаем, что вы уже подключили и настроили локальный принтер (через USB, LPT или беспроводное подключение) на своем компьютере.

Затем на компьютере, на котором вы хотите расшарить принтер:

  1. Перейдите в раздел Параметры -> Устройства -> Принтеры и сканеры (Settings -> Bluetooth and Devices -> Printers and scanners);
  2. Выберите принтер, к которому вы хотите открыть общий доступ и нажмите кнопку «Свойства принтера» (Printer properties);
  3. Перейдите на вкладку «Доступ» (Sharing).
  4. Нажмите на кнопку Change Sharing Options, затем включите опцию «Общий доступ к данному принтеру» (Share this printer) и укажите сетевое имя принтера.
    опубликовать общий сетевой доступ к принтеру по сети в windows 11

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

Теперь вы можете подключить данный сетевой принтер на другом компьютере с Windows:

  1. Проще всего подключить принтер через сетевое окружение;
  2. Щелкните правой кнопкой по меню Пуск и выберите Run или нажмите комбинацию клавиш
    Win+R
    ;
  3. Подключитесь к удаленному компьютеру с расшареным принтером по его имени или IP адресу (имя компьютера можно узнать с помощью команды
    hostname
    , а IP адрес с помощью
    ipconfig
    ). Укажите имя удаленного компьютера в формате UNC пути
    \\ComputerName
    или
    \\IPадрес
    , например
    \\192.168.13.202
    и нажмите OK;
  4. Если на удаленном компьютере включена парольная защита, появится окно, в котором нужно ввести имя и пароль пользователя для подключения. После этого откроется окно, в котором отображены список сетевых папок и опубликованных принтеров;
  5. Выберите принтер, который вы хотите подключить себе и нажмите Connect. Windows скачает с удаленного компьютера необходимый драйвер печати и подключит сетевой принтер;
    подключить сетевой принтер с другого компьютера с windows

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

При подключении принтера может появится ошибка Operation failed with error 0x0000011b.

ошибка 0x0000011b при подключении сетевого принтера

Последние обновления безопасности Windows блокируют установку драйверов принтеров по сети. Чтобы обойти это ограничение, выполните следующие команды на компьютере с принтером и перезагрузите его:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print" /v RpcAuthnLevelPrivacyEnabled /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 1 /f

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

Также вы можете подключить сетевой принтер с удаленного компьютера с помощью PowerShell команды:

Add-Printer -ConnectionName \\192.168.13.202\HPLaserJetM1536

В этой статье мы рассмотрели, как создать простейший файловый сервер с общими сетевыми папками на десктопной версии Windows 11 или 10. Однако нужно иметь в виду, что максимальное количество одновременных сетевых подключений (сессий) к такому компьютеру ограничено 20. Если в вашей сети большее количество клиентов, Microsoft предполагает использование Windows Server в качестве файл-сервера.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows xp game icons
  • Как на windows 7 обновить видеодрайвер на windows
  • Временные файлы очистка обновлений windows
  • Windows server 2019 установить графический интерфейс
  • Hp deskjet 3940 драйвер для windows 10