Существует масса разных реализаций раздачи «сетевых шар» в локальной сети, но удалось получить, что-то средне-бюджетное и защищенное.
Подключили и убрали… ну, например, в шкаф.
Конфигурация
Для начала нужно создать массив.Создадим не сложными манипуляциями RAID на CFI B8253-JDGG с установленными 4ТВ дисками.
На задней части устройства расположены DIP-переключатели и внятная схема аппаратного RAID-контроллера. Я выставил RAID5 на дисках 4 TB. Инициализируем диски просто подключив накопитель к ПК на Win 7. На этом этапе конфигурация DASа закончена. Получили GPT NTFS размером 16ТВ.
Теперь перейдем к конфигурации роутера Zyxel Keenetic
Переходим на WebUI и ставим несколько галок.
Включаем CIFSна роутере, автоматическое монтирование, дабы не отваливалось наше устройство и разрешим доступ без авторизации (дальше докачаем и установим пакет для роутера, который позволит разграничить права доступа по уч. Записям)
Маршрутизатор предоставляет нам возможность настраивать права доступа сетевого диска. Мы можем создавать свои учетные записи сетевого протокола доступа к файлам, принтерам и другим сетевым ресурсам в сетях Windows. Можно настроить права доступа на каждого пользователя и папку. Возможны следующие виды прав доступа:
При подключении DAS’a к роутеру видим наш раздел:
Теперь разграничим права доступа, для этого я установил несколько компонентов:
Данные компоненты позволили попасть во вкладку «Права доступа»
Создание пользователей тоже предусмотрено и управление доступом.
Раздача прав доступа
Для чего нам вообще подключать DAS к роутеру?
Все просто, в роутере есть встроенный bittorrent клиент, благодаря которому можно сразу качать на DAS фильмы/музыку и т.п. и раздавать все это по сети.
Даем админу права на torrent
Включим файл подкачки, для чего он описано на скриншоте.
Transmission уже установлен в моем роутере, перейдем в браузере 192.168.1.1 :8090/ и авторизуемся под admin
«Скормим» torrent-файл.
Как мы можем наблюдать система работает и установленный на роутер Transmission с успехом смог воспользоваться предоставленной ему внешней емкости для складирования получаемого контента.
И теперь к самому главному, все работает, но какая же скорость чтения/записи при доступе к DAS по сети?
Попробуем записать/загрузить файлик по SAMBA
Результат:
Надо понимать, что полученный скоростной результат обмена по сети прямо зависит от производительности процессора и интерфейса роутера. То есть в данном случае мы видим не скорость DAS CFI, а скорость которую способен «переварить и выдать» Zyxel Keenetic через USB в сеть по SAMBA. Показатели не большие, но для домашнего и бюджетного решения этого достаточно. Не смотря на то, что скорость прямого доступа невелика, хотя тоже приемлема – для получения с DASа потока видео на TV или медиаплеер, или, планшет по квартире через wi-fi - более чем достаточна.
Подключим DAS к ПК по USB3.0 и убедимся в том, что скорость ограничивается пропускной способностью USB интерфейса Zyxel Keenetic.
Результат:
Сам по себе DAS при прямом подключении к ПК у выдает у меня более 200МБ/с при RAID5. Соответственно, с ростом производительности роутеров или просто выборе другого роутера (по мере возможности конечно же проверю и прикреплю UPD), скорость может изменяться и хочется надеяться в лучшую сторону.
Ну и коммерческая сторона собранной системы на момент написания:
CFI-B8253JDGG - от 10 756 рублей, ZyxelKeenetic– 990 рублей. В сумме менее 12 000 рублей. И если сравнить с 4-х дисковым NAS (цена начинается от 18 000 рублей) экономическая выгода налицо.
Решение задачи не единственное, но очень даже работоспособное и занимательное.
Одним из способов доступа с STB к файлам, расположенным на сетевых компьютерах, является протокол общего доступа SMB , который является стандартным протоколом Microsoft Windows и обеспечивает функции «Сети Microsoft Windows»
и «Совместного использования файлов и принтеров»
.
Samba - свободная реализация протокола SMB для UNIX-подобных и других операционных систем.
Применение протоколов SMB / Samba позволяет осуществлять доступ с STB (работает под управлением ОС Linux) к папкам и файлам, расположенных на сетевых компьютерах (работающих под управлением ОС Linux, Windows и др.). Таким образом, пользователи STB получают возможность проигрывать на STB медиа-файлы (видео, аудио, изображения), которые расположены на сетевых компьютерах, работающих под управлением одного из типов ОС, поддерживающей протоколы SMB или SAMBA.
Протокол
SMB / Samba является прикладным протоколом (в терминах сетевой модели OSI). Для обмена данными использует транспортный протокол TCP/IP.
Протокол SMB / Samba
использует архитектуру клиент – сервер: в качестве сервера выступает ПК, на котором размещаются определенные сетевые ресурсы (папки) с медиа-файлами, в качестве клиента – STB, с которого медиа-файлы проигрываются.
Сетевые ресурсы отображаются в STB, в меню , в соответствии со стандартной сетевой LAN-архитектурой ОС Windows: Сеть / Рабочая группа / Компьютер / Папка.
По умолчанию, доступ к ресурсам компьютера закрыт настройками на стороне компьютера. При необходимости получить доступ со стороны к определенной сетевой папке, пользователь необходимого компьютера открывает доступ к этой папке. Для управления доступом к папкам используется процедура ОС Windows "Общий доступ к файлам ".
Предусмотрены два типа сетевого доступа к папкам (тип доступа определяется на стороне компьютера):
- по паролю - для доступа к сетевой папке со стороны STB используется процедуры Авторизации (необходимо ввести имя (login) определенного пользователя компьютера и его пароль (password);
- без пароля - доступ к сетевой папке открыт для всех пользователей, без необходимости вводить пароль.
Обнаружение общих сетевых ресурсов на стороне STB происходит автоматически (если это не запрещено на стороне компьютера или кроме случаев, связанных с некорректной работой сети). Соединение с сетевой папкой устанавливается, когда пользователь STB открывает сетевую папку. Если используется доступ к папке по паролю, пользователю выдается запрос, указать login и password .
Также предусмотрена возможность ручного подключения сетевых папок (если они не были обнаружены автоматически). Настройка и доступ к ресурсам сети по протоколу SMB / Samba на STB проводится в меню Home media .
Ниже рассмотрен пример, как подключить сетевую папку ПК с ОС Windows 10для воспроизведения медиа-файлов с STB.
Примечание.
Поддержка протокола
SMB
операционной системой Windows 10 включена по умолчанию.
Пример настройки соединения между STB и ПК с Windows 10
Основные параметры, используемые в примере
Компьютер (файловый сервер):
- Операционная система - Windows 10 64-bit;
- Имя компьютера – My _ computer (выбрано для примера);
- Рабочая группа – WORKGROUP (имя рабочей группы “по умолчанию” в ОС « Windows »);
- IP- адрес ПК: 192.168.1.186 .
- Ресурс для «расшаривания» (папка с медиа-файлами) - папка Video _ E 1.
- Имя пользователя - Usr.
STB (клиент )
- IP- адрес STB : 192.168.1.230
Проверка доступности сетевого соединения между ПК и STB
Перед настройкой соединения убедитесь в доступности сетевого соединения между ПК и STB – «пропингуйте» STB со стороны ПК.
Настройка на стороне ПК (открытие доступа к папке)
- Откройте доступ к папке Video_E1 : Свойства ⇒ Доступ ⇒ Общий доступ .
- Если необходимо предоставлять доступ к папке только для текущего пользователя ПК, оставьте в списке пользователей только текущего пользователя (Usr ). В этом случае доступ к папке будет предоставляться по паролю - для соединения с папкой на STB будут запрошены логин (имя пользователя компьютера) и пароль (пароль пользователя компьютера).
Учтите! Если доступ открыт только текущему пользователю, необходимо использовать определенное значение пароля для учетной записи пользователя. Отсутствие пароля приведет к невозможности доступа к папке!
Ниже на рисунке приведен вариант настройки предоставления беспарольного доступа к папке Video_E1 для всех сетевых пользователей.
5. На ПК открыть «Центр управления сетями и общим доступом» и настроить параметры общего доступа для трех профилей (Частная, Гостевая или общедоступная и Все сети ):
Частная
Гостевая или общедоступная
Все сети
Соединение с сетевой папкой на стороне STB
- Во встроенном портале зайти в Главное окно ⇒ Home Media ⇒ Network ⇒ WORKGROUP
2. В папке WORKGROUP
отображаются сетевые компьютеры рабочей группы.
Откройте ярлык необходимого сетевого компьютера - My
_
Computer
(в папке My
_
Computer
отображаются папки, для которых установлен общий доступ).
3. Для контроля автоматического определения сетевого ресурса и типа протокола необходимо выделить папку и воспользоваться кнопкой «i» (INFO) на ПДУ:
4. Открыть папку Video_E1 . Внутри папки пройти по пути, по которому находится медиа-файл, который необходимо воспроизвести.
5. Если для папки установлен доступ по паролю, либо по каким-либо причинам STB не может «примонтировать» папку (то есть получить к ней доступ - см. раздел ), то при попытке открыть данную папку открывается окно «Network connection» .
6. Запустить медиа-файл.
Принудительное установление соединения к сетевой папке
В некоторых случаях (при проблемах автоматического соединения) предусмотрена ручная настройка доступа к сетевой папке:- Войти Главное окно ⇒ Home Media ⇒ Network ⇒ WORKGROUP
- Вызвать окно Operations (Операции ) - кнопка Меню на ПДУ.
- Нажать Mount Share (Подключить ресурс ).
- В окне "Подключение сетевой папки"
("Connect network folder"
) ввести параметры подключения
- Адрес сервера (Server Address) – IP-адрес ПК (файлового сервера), на котором размещена требуемая сетевая папки;
- Папка на сервере (Server folder) – имя «расшаренной» на ПК папки;
- Локальная папка (Local folder) – имя папки на STB (как правило, совпадает с именем папки на сервере);
- Тип подключения (Connection type) – SMB.
- Логин (Login) – совпадает с именем пользователя ПК - вводится, если для папки используется доступ по паролю;
- Пароль (Password) – пароль доступа к папке - вводится, если для папки используется доступ с паролем.
Отключение сетевой папки, изменение настроек соединения на STB
Для принудительного отключения определенной сетевой папки используйте для этой папки команду Отключить NFS/SMB .
В случае необходимости внести изменения в настройку соединения на стороне, используйте для этой папки команду Редактировать (англ. Edit share) .
Монтирование папки
Установление соединения к определенной папке, описанное в подразделах и , сопровождается автоматическим монтированием папки на STB. Если определенная папка "примонтирована" на STB, ее ярлык появляется на верхнем уровне меню Home media .
Пользователь также может монтировать необходимую папку вручную (это также ведет к соединению с папкой
), для этой цели используется команда Подключить ресурс (англ. Mount share)
.
Для "размонтирования" папки в STB (это также ведет к разъединению папки от STB) используется команда Отключить ресурс (англ. Unmount share)
.
Проблемы получения доступа к сетевым ресурсам
- В окне «
Home media»
не открываются закладки «Network»
, «WorkGroup»:
- Проверить сетевые настройки и состояние сети на стороне STB и компьютера;
- Убедиться в том, что на сервере (ПК, с которого настраивается доступ) включена поддержка протокола SMB версии 1 и 2.
- Перезагрузить STB и ПК.
2. Если разделы «Network» , «WorkGroup» отображаются, но не отображается ярлык необходимого сетевого компьютера:
- Проверьте, что компьютер отображается в разделе «Сеть» на компьютере;
- Пропинговать STB со стороны ПК (убедиться, что оба устройства могут взаимодействовать по сети).
- Перезагрузить компьютер.
3. Если на STB не отображаются доступные папки или доступ к папке закрыт:
- Проверьте, что папки, к которым открыт доступ, отображаются в разделе «Сеть» на компьютере;
- Если есть возможность, проверить наличие доступа к папке с других сетевых компьютеров;
- На компьютере проверить настройки общего доступа в свойствах папки и «Дополнительные параметры общего доступа. Профили» .
- Перезагрузить STB.
4. Если при открытии сетевой папки на STB предлагается выполнить авторизацию, но для папки доступ по паролю не назначался:
- Проверить, чтобы в свойствах папки был открыт доступ для пользователя «Все» ;
5. Если при открытии папки на STB предлагается выполнить авторизацию (ввести логин, пароль), но значение пароля не задано (пустой пароль):
- Установить определенное значение пароля пользователя компьютера;
- Если доступ не возобновился, перезагрузить STB.
6. Если файл не открывается:
- проверить, проигрывается ли файл локально на ПК;
- попытаться запустить с STB другие файлы с той же сетевой папки, с других сетевых папок;
- попытаться проиграть файл другого формата (желательно, проверить файл, который на STB ранее воспроизводился, например, с USB-носителя). Возможно, данный формат файла не поддерживается плеером STB.
В связи с недавной эпидемией шифровальщика WannaCry, эксплуатирующим уязвимость SMB v1, в сети снова появились советы по отключению этого протокола. Более того, Microsoft настоятельно рекомендовала отключить первую версию SMB еще в сентябре 2016 года. Но такое отключение может привести к неожиданным последствиям, вплоть до курьезов: лично сталкивался с компанией, где после борьбы с SMB перестали играть беспроводные колонки Sonos.
Специально для минимизации вероятности «выстрела в ногу» я хочу напомнить об особенностях SMB и подробно рассмотреть, чем грозит непродуманное отключение его старых версий.
SMB (Server Message Block) – сетевой протокол для удаленного доступа к файлам и принтерам. Именно он используется при подключении ресурсов через \servername\sharename. Протокол изначально работал поверх NetBIOS, используя порты UDP 137, 138 и TCP 137, 139. С выходом Windows 2000 стал работать напрямую, используя порт TCP 445. SMB используется также для входа в домен Active Directory и работы в нем.
Помимо удаленного доступа к ресурсам протокол используется еще и для межпроцессорного взаимодействия через «именованные потоки» – named pipes . Обращение к процессу производится по пути \.\pipe\name.
Первая версия протокола, также известная как CIFS (Common Internet File System), была создана еще в 1980-х годах, а вот вторая версия появилась только с Windows Vista, в 2006. Третья версия протокола вышла с Windows 8. Параллельно с Microsoft протокол создавался и обновлялся в его открытой имплементации Samba .
В каждой новой версии протокола добавлялись разного рода улучшения, направленные на увеличение быстродействия, безопасности и поддержки новых функций. Но при этом оставалась поддержка старых протоколов для совместимости. Разумеется, в старых версиях было и есть достаточно уязвимостей, одной из которых и пользуется WannaCry .
Под спойлером вы найдете сводную таблицу изменений в версиях SMB.
Версия | Операционная система | Добавлено, по сравнению с предыдущей версией |
SMB 2.0 | Windows Vista/2008 | Изменилось количество команд протокола со 100+ до 19 |
Возможность «конвейерной» работы – отправки дополнительных запросов до получения ответа на предыдущий | ||
Поддержка символьных ссылок | ||
Подпись сообщений HMAC SHA256 вместо MD5 | ||
Увеличение кэша и блоков записи\чтения | ||
SMB 2.1 | Windows 7/2008R2 | Улучшение производительности |
Поддержка большего значения MTU | ||
Поддержка службы BranchCache – механизм, кэширующий запросы в глобальную сеть в локальной сети | ||
SMB 3.0 | Windows 8/2012 | Возможность построения прозрачного отказоустойчивого кластера с распределением нагрузки |
Поддержка прямого доступа к памяти (RDMA) | ||
Управление посредством командлетов Powershell | ||
Поддержка VSS | ||
Подпись AES–CMAC | ||
Шифрование AES–CCM | ||
Возможность использовать сетевые папки для хранения виртуальных машин HyperV | ||
Возможность использовать сетевые папки для хранения баз Microsoft SQL | ||
SMB 3.02 | Windows 8.1/2012R2 | Улучшения безопасности и быстродействия |
Автоматическая балансировка в кластере | ||
SMB 3.1.1 | Windows 10/2016 | Поддержка шифрования AES–GCM |
Проверка целостности до аутентификации с использованием хеша SHA512 | ||
Обязательные безопасные «переговоры» при работе с клиентами SMB 2.x и выше |
Считаем условно пострадавших
Посмотреть используемую в текущий момент версию протокола довольно просто, используем для этого командлет Get–SmbConnection :
Вывод командлета при открытых сетевых ресурсах на серверах с разной версией Windows.
Из вывода видно, что клиент, поддерживающий все версии протокола, использует для подключения максимально возможную версию из поддерживаемых сервером. Разумеется, если клиент поддерживает только старую версию протокола, а на сервере она будет отключена – соединение установлено не будет. Включить или выключить поддержку старых версий в современных системах Windows можно при помощи командлета Set–SmbServerConfiguration , а посмотреть состояние так:
Get–SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
Выключаем SMBv1 на сервере с Windows 2012 R2.
Результат при подключении с Windows 2003.
Таким образом, при отключении старого, уязвимого протокола можно лишиться работоспособности сети со старыми клиентами. При этом помимо Windows XP и 2003 SMB v1 используется и в ряде программных и аппаратных решений (например NAS на GNU\Linux, использующий старую версию samba).
Под спойлером приведу список производителей и продуктов, которые полностью или частично перестанут работать при отключении SMB v1.
Производитель | Продукт | Комментарий |
Barracuda | SSL VPN | |
Web Security Gateway backups | ||
Canon | Сканирование на сетевой ресурс | |
Cisco | WSA/WSAv | |
WAAS | Версии 5.0 и старше | |
F5 | RDP client gateway | |
Microsoft Exchange Proxy | ||
Forcepoint (Raytheon) | «Некоторые продукты» | |
HPE | ArcSight Legacy Unified Connector | Старые версии |
IBM | NetServer | Версия V7R2 и старше |
QRadar Vulnerability Manager | Версии 7.2.x и старше | |
Lexmark | Прошивки Firmware eSF 2.x и eSF 3.x | |
Linux Kernel | Клиент CIFS | С 2.5.42 до 3.5.x |
McAfee | Web Gateway | |
Microsoft | Windows | XP/2003 и старше |
MYOB | Accountants | |
NetApp | ONTAP | Версии до 9.1 |
NetGear | ReadyNAS | |
Oracle | Solaris | 11.3 и старше |
Pulse Secure | PCS | 8.1R9/8.2R4 и старше |
PPS | 5.1R9/5.3R4 и старше | |
QNAP | Все устройства хранения | Прошивка старше 4.1 |
RedHat | RHEL | Версии до 7.2 |
Ricoh | МФУ, сканирование на сетевой ресурс | Кроме ряда моделей |
RSA | Authentication Manager Server | |
Samba | Samba | Старше 3.5 |
Sonos | Беспроводные колонки | |
Sophos | Sophos UTM | |
Sophos XG firewall | ||
Sophos Web Appliance | ||
SUSE | SLES | 11 и старше |
Synology | Diskstation Manager | Только управление |
Thomson Reuters | CS Professional Suite | |
Tintri | Tintri OS, Tintri Global Center | |
VMware | Vcenter | |
ESXi | Старше 6.0 | |
Worldox | GX3 DMS | |
Xerox | МФУ, сканирование на сетевой ресурс | Прошивки без ConnectKey Firmware |
Список взят с сайта Microsoft , где он регулярно пополняется.
Перечень продуктов, использующих старую версию протокола, достаточно велик – перед отключением SMB v1 обязательно нужно подумать о последствиях.
Все-таки отключаем
Если программ и устройств, использующих SMB v1 в сети нет, то, конечно, старый протокол лучше отключить. При этом если выключение на SMB сервере Windows 8/2012 производится при помощи командлета Powershell, то для Windows 7/2008 понадобится правка реестра. Это можно сделать тоже при помощи Powershell:
Set–ItemProperty –Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 –Type DWORD –Value 0 –Force
Или любым другим удобным способом. При этом для применения изменений понадобится перезагрузка.
Для отключения поддержки SMB v1 на клиенте достаточно остановить отвечающую за его работу службу и поправить зависимости службы lanmanworkstation. Это можно сделать следующими командами:
sc.exe config lanmanworkstation depend=bowser/mrxsmb20/nsi sc.exe config mrxsmb10 start=disabled
Для удобства отключения протокола по всей сети удобно использовать групповые политики, в частности Group Policy Preferences. С помощью них можно удобно работать с реестром.
Создание элемента реестра через групповые политики.
Чтобы отключить протокол на сервере, достаточно создать следующий параметр:
- значение: 0.
путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters;
новый параметр: REG_DWORD c именем SMB1;
Создание параметра реестра для отключения SMB v1 на сервере через групповые политики.
Для отключения поддержки SMB v1 на клиентах понадобится изменить значение двух параметров.
Сначала отключим службу протокола SMB v1:
- значение: 4.
путь: HKLM:\SYSTEM\CurrentControlSet\services\mrxsmb10;
параметр: REG_DWORD c именем Start;
Обновляем один из параметров.
Потом поправим зависимость службы LanmanWorkstation, чтоб она не зависела от SMB v1:
- значение: три строки – Bowser, MRxSmb20 и NSI.
путь: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation;
параметр: REG_MULTI_SZ с именем DependOnService;
И заменяем другой.
После применения групповой политики необходимо перезагрузить компьютеры организации. После перезагрузки SMB v1 перестанет использоваться.
Работает – не трогай
Как ни странно, эта старая заповедь не всегда полезна – в редко обновляемой инфраструктуре могут завестись и трояны. Тем не менее, неаккуратное отключение и обновление служб могут парализовать работу организации не хуже вирусов.
Расскажите, а вы уже отключили у себя SMB первой версии? Много было жертв?
Компьютерная сеть по определению представляет собой распределенную систему. Ее предназначение — совместная работа пользователей. Такая работа подразумевает доступ к сетевым ресурсам , как то файлы и каталоги, принтеры и т.д. Для пользователя обращение к сетевым ресурсам должно быть прозрачным, т.е.:
- Удаленные ресурсы должны выглядеть так, словно они являются локальными и обращение к ним из приложений происходит единообразно.
- Клиенту должно быть безразлично, какая платформа используется в качестве сервера общего доступа.
При этом нужно учитывать и то, что не всякий пользователь должен иметь доступ к конкретному ресурсу, и не всякий ресурс олжен быть доступен всем. Т.е. необходимо обеспечить возможности управления общим доступом как на уровне пользователей, так и на уровне отдельных ресурсов.
Указанные возможности предоставляют специальные протоколы общего доступа. Наиболее распространенными из них являются SMB/CIFS для ОС Windows и NFS, используемый в UNIX-подобных системах.
Протоколы общего доступа
SMB/CIFS
SMB (Server Message Block) — это протокол, предложенный IBM для организации общего доступа к файлам, принтерам, последовательным портам, почтовым ячейкам (mail slots), именованным каналам (named pipes) и API сетевых компьютеров. Протокол SMB может быть использован поверх сетевых протоколов стека TCP/IP, а также поверх ряда других сетевых протоколов.
SMB — это типичный клиент-серверный протокол, который позволяет клиентскому приложению выполнять операции доступа к общему ресурсу (чтение, запись и т.п.) через запросы к серверу. SMB требует установления и поддержания соединения, но может работать и в датаграммном режиме.
В 1992 году появилась Samba - свободная реализация протокола SMB для UNIX-подобных операционных систем. Поскольку Microsoft не публиковала спецификации SMB и дополнений к нему, создателю Samba Эндрю Триджеллу (Andrew Tridgell) пришлось провести обратную разработку протокола на основе анализа пакетов.
Продвижение протокола SMB обеспечила корпорация Microsoft, включив его поддержку в свои продукты. В сетевой среде Microsoft Windows SMB являлся основным протоколом прикладного уровня для работы с ресурсами ЛВС. Он предназначен для выполнения функций общего доступа к файлам и принтерам, авторизации пользователей и обмена сообщениями.
Протокол SMB представляет четыре вида севисов:
- Управление сессиями . Создание, поддержание и разрыв логического канала между рабочей станцией и сетевыми ресурсами файлового сервера.
- Файловый доступ . Рабочая станция может обратиться к файл-серверу с запросами на выполнение типовых файловых операций (открытие файла, чтение данных и т.п.).
- Сервис печати . Рабочая станция может ставить файлы в очередь для печати на сервере и получать информацию об очереди печати.
- Сервис сообщений . SMB поддерживает простую передачу адресных и широковещательных сообщений по локальной сети.
Если режим управления сеансами в SMB прозрачен для пользователя, то остальными сервисами пользователь может управлять непосредственно с помощью команды net (см. net /? в консоли ОС Windows).
Рис. 1. NetBIOS/SMB
Для управления сессиями протокол SMB изначально использовал NetBIOS в реализации NetBEUI (NetBIOS Extended User Interface) - расширенный пользовательский интерфейс дейтаграммной передачи NetBIOS, рассчитанный на сети порядка 20-200 рабочих станций. Сети, основанные на протоколе NetBEUI, легко реализуются, но их трудно расширять, так как протокол NetBEUI не маршрутизируемый.
Для использования SMB в сетях с более сложной топологией в NetBIOS была добавлена поддержка транспортных протоколов TCP (NBT, NetBIOS over TCP), IPX, DECNet и Xerox Networking (XNS) ()
Сервисы SMB, работающие в среде TCP/IP, используют различные порты (стандартные названия портов подчеркивают тесную связь SMB с NetBIOS):
Netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp
В SMB первых версий отсутствовала аутентификация - то есть любой пользователь мог использовать любые ресурсы, что, конечно, ограничивало область применения малыми локальными сетями. Современные версии SMB поддерживают два уровня доступа:
- Доступ на уровне ресурсов . Ограничения накладываются серверной стороной на каталоги общего доступа. Каждый сетевой каталог может быть защищен паролем и клиент должен указать этот пароль для получения доступа к файлам из общего каталога.
- Доступ на уровне пользователей . Ограничения налагаются на каждый файл в каждом общем каталоге и они основаны на пользовательских правах. Каждый пользователь (клиент) должен войти на сервер под своей учетной записью и пройти аутентификацию. После завершения проверки подлинности клиент получает соответствующий идентификатор пользователя (user ID), который он должен предъявлять для получения доступа к ресурсам сервера.
Привязка к NetBIOS ограничивало использование SMB небольшими локальными сетями. Первая причина — отсутствие в NetBIOS понятия сети как такового и средств перенаправления трафика (маршрутизации). Вторая — в принятой схеме адресации: имя ресурса, по сути, строка из 15 символов, плюс байт типа ресурса: сервер, контроллер домена и т.д. Естественно, такая одноранговая система именования не годится для интернета.
Для устранения этих ограничений в последних версиях SMB использовался протокол NBT (NetBIOS over TCP), работавший поверх стека TCP/IP.
CIFS создавался совместно разра-бот-чика-ми Samba Team, неза-виси-мым сооб-щест-вом и Microsoft. После того как про-то-кол CIFS был пред-став-лен как откры-тый стан-дарт, Microsoft прекратила финан-сирова-ние про-екта и сотрудничество с Samba Team, а поддержка CIFS в переработке Microsoft для совместимости с прежними версиями SMB была включена в ОС Windows 2000.
CIFS (Common Internet File System) - это открытый стандартный протокол (см. CIFS) на основе SMB, который обеспечивает доступ к файлам и сервисам на удаленных компьютерах в сетях TCP/IP. В отличие от SMB, основным транспортом для CIFS является протокол TCP. Для серверов CIFS зарегистрированы порты 445/TCP и 445/UDP (microsoft-ds # Microsoft Naked CIFS , см. /etc/services)
CIFS обеспечивает функциональность похожую на FTP (File Transfer Protocol), но предоставляет клиентам улучшенный (похожий на прямой) контроль над файлами. Основные возможности CIFS приведены в .
Табл. 1. Возможности протокола CIFS
Возможность | Описание |
---|---|
Доступ к файловой системе | Поддержка файловых операций, таких как открытие, чтение, запись, поиск и закрытие файла или каталога |
Блокировка файлов и записей | Неблокирующие приложения не имеют доступа к заблокированному файлу или записи. |
Безопасное кэширование (опережающее чтение (read-ahead) и отложенная запись (write-behind)) | Поддерживается одновременный доступ на чтение/запись файла множеством клиентов |
Уведомления об изменении файла | Приложения могут регистрироваться на сервере для получения уведомлений об изменениях в файлах или директориях |
"Переговоры" о версии протокола | Когда клиент и сервер устанавливают первый сетевой контакт, они обмениваются информацией о версии протокола (диалекте), который будет использоваться. Разные диалекты могут включать новые типы сообщений, а также отличия в форматах от других диалектов. |
Расширенные атрибуты | Поддерживаются атрибуты, не относящиеся к атрибутам файловой системы. Такие, например, атрибуты как имя автора, могут быть добавлены к встроенным системным атрибутам файла (дата создания, дата модификации и проч.) |
Распределенные реплицируемые виртуальные тома | Протокол поддерживает многотомную виртуальную файловую систему, в которой все "поддеревья" файловой иерархии для клиента выглядят как одно целое. CIFS прозрачно для пользователя обрабатывает доступ к физически перемещенным или реплицированным элементам такой файловой системы. |
Независимость от серверов распознавания имен | Клиенты могут использовать любой механизм распознавания имен. К примеру, серверы DNS могут использоваться для получения доступа к файловым ресурсам сервера через Internet. |
Пакетные запросы | Множественные файловые запросы могут быть "упакованы" в одно сообщение, что сокращает время ожидания ответа сервера. Пакетная обработка возможна даже тогда, когда последующие запросы зависят от результатов выполнения предыдущих. |
Поддержка символов Unicode | Строки в формате Unicode могут использоваться в именах файлов, ресурсов и учетных записях пользователей. |
Сетевая файловая система NFS
NFS (Network File System, сетевая файловая система) - это стандарт, который включает описание распределенной файловой системы и сетевого протокола для работы с ней. Первая спецификация NFS была разработана компанией Sun в 1989 году и предназначалась для использования только в UNIX. Позже реализации клиентской и серверной частей стали распространенными и в других системах. Текущая версия (на момент написания этого материала) имеет название NFS v4 и является открытым стандартом (RFC 3010).
Эта система позволяет пользователю работать с удаленными данными так же, как с локальными - то есть абсолютно прозрачно. Не считая, естественно, временных задержек.
Протокол NFS, как и SMB/CIFS, использует клиент-серверную модель взаимодействия. В ранних версиях NFS для транспортирования данных использовался UDP-протокол, в современных - используется TCP. Сервис NFS работает на следующих зарегистрированных портах:
Nfs 2049/tcp # Network File System - Sun Microsystems nfs 2049/udp # Network File System - Sun Microsystems
Применение протокола TCP в качестве транспорта позволило решить вопросы совместного доступа прямолинейно, без обходных маневров, однако ценой этому является некоторое снижение производительности по сравнению с UDP.
NFS является «родной» файловой системой для UNIX и соответствует логике файловых операций этой операционной системы. Это относится как к пространству имен файлов, так и к поддерживаемым файловым атрибутам. Поддержка NFS имеется у всех популярных систем на основе UNIX.
Структура NFS включает три компонента разного уровня:
- Прикладной уровень (собственно NFS) - это вызовы удаленных процедур (rpc), которые и выполняют необходимые операции с файлами и каталогами на стороне сервера.
- Функции презентационного уровня выполняет протокол XDR (eXternal Data Representation), который является межплатформенным стандартом абстракции данных. Протокол XDR описывает унифицированную, каноническую , форму представления данных, не зависящую от архитектуры вычислительной системы. При передаче пакетов RPC-клиент переводит локальные данные в каноническую форму, а сервер проделывает обратную операцию.
- Сервис RPC (Remote Procedure Call), обеспечивающий запрос удаленных процедур клиентом и их выполнение на сервере, представляет функции сеансового уровня.
Процедура подключения сетевого ресурса средствами NFS называется «экспортированием». Клиент может запросить у сервера список представляемых им экспортируемых ресурсов. Сам сервер NFS, в отличие от, например, сервера SMB, не занимается широковещательной рассылкой списка своих экспортируемых ресурсов.
В зависимости от заданных опций, экспортируемый ресурс может быть смонтирован «только для чтения», можно определить список хостов, которым разрешено монтирование, указать использование защищенного RPC (secureRPC) и пр. Одна из опций определяет способ монтирования: «жесткое» (hard) или «мягкое» (soft).
- При «жестком» монтировании клиент будет пытаться смонтировать файловую систему во что бы то ни стало. Если сервер не работает, это приведет к тому, что весь сервис NFS как бы зависнет: процессы, обращающиеся к файловой системе, перейдут в состояние ожидания окончания выполнения запросов RPC. С точки зрения пользовательских процессов файловая система будет выглядеть как очень медленный локальный диск. При возврате сервера в рабочее состояние сервис NFS продолжит функционирование.
- При «мягком» монтировании клиент NFS сделает несколько попыток подключиться к серверу. Если сервер не откликается, то система выдает сообщение об ошибке и прекращает попытки произвести монтирование. С точки зрения логики файловых операций при отказе сервера «мягкое» монтирование эмулирует сбой локального диска.
На вопрос, какой из режимов, «мягкий» или «жесткий», лучше, однозначно ответить невозможно. Если данные на клиенте и сервере должны быть синхронизированы при временном отказе сервиса, то «жесткое» монтирование оказывается предпочтительнее. Этот режим незаменим также в случаях, когда монтируемые файловые системы содержат в своем составе программы и файлы, жизненно важные для работы клиента, в частности для бездисковых машин. В других случаях, особенно когда речь идет о системах «только для чтения», режим «мягкого» монтирования представляется более удобным.
С точки зрения безопасности первые реализации NFS были крайне слабы: аутентификация выполнялась, по сути, только по ip-адресу клиента. Использование NIS не намного увеличивало защищенность системы. В версиях NFS 3 и 4 эти вопросы были переработаны путем добавления поддержки списков доступа (ACL), защищенного rpc и ряда других решений, которые позволили сертифицировать NFS в минобороны США.
Общий доступ в смешанной сети
Сервис NFS идеально подходит для сетей на основе UNIX, так как поставляется практически со всеми версиями этой операционной системы. Более того, поддержка NFS реализована на уровне ядра UNIX. К сожалению, использование NFS на клиентских компьютерах с Windows создает определенные проблемы, связанные с необходимостью установки специализированного и довольно дорогого клиентского ПО. В таких сетях использование средств разделения ресурсов на основе протокола SMB/CIFS, в частности ПО Samba, выглядит более предпочтительным.
Низкоуровневые средства общего доступа. Протокол DAFS
Архитектура виртуального интерфейса
Архитектура виртуального интерфейса (VIA) - это совместная разработка Microsoft, Intel и Compaq, которая определяет абстрактную модель низкоуровневой технологии ввода/вывода. VIA используется для организации высокоскоростного обмена данными между двумя процессами, которые работают на разных серверах или системах хранения в центрах обработки данных (ЦОД).
Virtual Interface (VI) — это протокол связи в архитектуре Virtual Interface Architecture
DAFS (Direct Access File System) - это стандартный протокол файлового доступа, который базируется на NFS v4. Он позволяет прикладным задачам передавать данные в обход операционной системы и ее буферного пространства напрямую к транспортным ресурсам, сохраняя семантику, свойственную файловым системам. DAFS использует преимущества новейших технологий передачи данных по схеме память-память. Его использование обеспечивает высокие скорости файлового ввода-вывода, минимальную загрузку CPU и всей системы, благодаря значительному уменьшению количества операций и прерываний, которые обычно необходимы при обработке сетевых протоколов. Особенно эффективным является использование аппаратных средств поддержки .
Кратко описать алгоритм работы DAFS можно следующим образом: пусть имеются два приложения, осуществляющие доступ к сети при помощи сетевого интерфейса пользовательского уровня (VI, ), тогда:
- Драйвер устройств операционной системы управляет аппаратными средствами интерфейса традиционным способом, осуществляя контроль за доступом приложений к оборудованию.
- Приложения выделяют буферы сообщений в собственном адресном пространстве и обращаются к драйверу устройств для получения доступа к сетевому интерфейсу. После соответствующей настройки они автоматически инициируют процесс передачи и приема, а интерфейс пересылает информацию в буферы приложений и в обратном направлении, используя обычный механизм прямого доступа к памяти (direct memory access, DMA)
Рис. 3. Общий принцип работы DAFS
Приложения имеют доступ к сети с использованием виртуального интерфейса. Драйвер NIC ОС управляет сетевым контроллером и обеспечивает прямой доступ приложений к интерфейсу. Приложения выделяют буферы в собственном адресном пространстве, куда принимают и откуда отправляют сообщения, используя DMA.
Архитектура сетевого интерфейса пользовательского уровня варьируется в зависимости от особенностей конкретных приложений и сетей - от способа определения приложениями местоположения пересылаемых сообщений, от местонахождения выделяемых для приема информации буферов, от порядка уведомления приложений о поступивших сообщениях. В некоторых сетевых интерфейсах (например, в интерфейсах Active Message или Fast Message) операции передачи и приема реализованы в виде функций, помещенных в пользовательскую библиотеку, которая загружается при инициализации каждого процесса. В других (например, в U-NET и VIA) для каждого процесса создаются очереди, которыми манипулируют сами приложения. Эти очереди обслуживаются аппаратными средствами интерфейса.
DAFS спроектирован для сетей хранения данных (NAS) и используется в кластерном и серверном окружении баз данных и разнообразных Интернет-приложений, ориентированных на непрерывную работу. Он обеспечивает наименьшие задержки доступа к общим файловым ресурсам и данным, а также поддерживает интеллектуальные механизмы восстановления работоспособности системы и данных.
Контрольные вопросы
- Какой протокол используется для организации общего доступа к ресурсам в сетях Windows?
- Какие ресурсы можно выделить в общий доступ при помощи протокола SMB?
- Зачем в NFS выделен специальный протокол презентационного уровня?
- Чем отличается «жесткое» монтирование томов NFS от «мягкого»?
Постоянный адрес этой страницы: