Сетевая служба SMB/CIFS

Служба W:[CIFS] (common internet file system), заимствованная из семейства операционных систем Windows, предназначена (аналогично «родной» NFS) для совместного использования файлов. Основным протоколом службы CIFS является протокол SMB (server message blocks), который аналогично NFS ретранслирует системные вызовы к файлам.

Имена NetBIOS

Отличительной особенностью протокола SMB, доставшейся ему в наследство от транспорта ,W:[NetBIOS], является возможность использования еще одного вида имен узлов (в дополнение к DNS- и mDNS-именам) — так называемых «имен NetBIOS», и собственной службы NBNS1 (netbios name service), отображающей имена NetBIOS на IP-адреса. Служба NBNS похожа на DNS и mDNS одновременно, но несовместима с ними.

Имена узлов NetBIOS и их IP-адреса

lumpy@ubuntu:~$ mblookup WINXP

querying WINXP on 192.168.100.255

192.168.100.3 WINXP<00>

В листинге выше иллюстрируется использование утилиты nmblookup, предназначенной для диагностики службы NBNS, при помощи которой «плоское» имя NetBIOS winxp отображается на Соответствующий ему IP-адрес.

Именно при помощи службы NBNS и широковещательного поиска специальных «групповых» имен NetBIOS реализуется основной способ обнаружения CIFS-серверов локальной сети, что выполняет утилита smbtree, иллюстрируемая в листинге ниже.

В редких отдельных случаях серверы CIFS обнаруживаются зарегистрированными в службе mDNS/DNS-SD, что характерно (как и в случае серверов NFS) для сетевых устройств хранения данных W: [NAS] или сетевых видеорегистраторов W:[NVR].

Обнаружение CIFS-серверов

lumpy@ubuntu:~$ smbtree -N

WORKGROUP

\\WINXP
\\WINXP\C$                        Стандартный общий ресурс
\\WINXP\ADMIN$            Удаленный Admin
\\WINXP\media                Фото, видео и т. д.
\\WINXP\D$                       Стандартный общий ресурс
\\WINXP\IPC$                  Удаленный IPC
\\NVR
\\NVR\Qrecordings
\\NVR\Qmultimedia
\\NVR\Qdownload
\\NVR\IPC$

lumpy@ubuntu:~$ avahi-browse -rcl _smb._tcp

+ eth0 IPv4 NVR(SMB)                                                                 Microsoft Windows Network    local

+ eth0 IPv4 NVR(SMB)                                                                 Microsoft Windows Network    local

hostname = [NVR.local]

address = [192.168.17.90]

port = [445]

txt = []

CIFS-клиенты

Различают две разных реализации клиента CIFS— внеядерную smbclient (аналогичную «интерактивным» FTP-клиентам) и ядерную (аналогичную NFS-клиенту), реализующуюся модулем ядра cifs.

Использование ядерного модуля позволяет монтировать общие файловые ресурсы (share) серверов CIFS непосредственно в дерево каталогов клиента, что дает возможность любым его программам использовать серверные файлы.

В примерах из листинга ниже показано использование CIFS-клиента smbciient для получения списка (-L, list) разделяемых ресурсов (share) узла WINXP, равно как и для подключения к его публичному (-N, no password) разделяемому ресурсу media с последующим скачиванием файлов целиком.

Клиент SMB/CIFS

lumpy@ubuntu:~$ smbcllent -NL //WINXP

Domain=[WINXP] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

Sharename         Type             Content
C$                        Disk              Стандартный общий ресурс
D$                       Disk              Стандартный общий ресурс
ADMIN$             Disk              Удаленный Admin
IPC$                    IRC               IPC Service
media                  Disk              Фото, видео и т. д.

lunpy@ubuntu:~$ smbclient -N //WINXP/media

Domain=[WINXP] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

smb: \> cd DCIM\↵

smb: \DCIM\> dir↵
.                                                                                D                    0          Thu Jan 7 20:57:36 2018

. .                                                                              D                    0          Thu Jan 7 20:57:36 2018

Dd595.jpg                                                              A       4494092          Sun Feb 13 16:24:04 2017

Dd596.jpg                                                              А       3842680          Sun Feb 13 16:14:56 2017

Dd680.jpg                                                              A        4087313          Sun Feb 13 03:10:45 2017

Dd681.jpg                                                              A         4108278          Sun Feb 13 15:58:38 2017
61192 blocks of size 1048576. 10915 blocks available

smb: \DCIM\> get Dd680.jpg ↵
getting file \DCIM\Dd680.jpg of size 4087313 as Dd680.jpg (72572,9 KiloBytes/sec)
(average 72573,0 KiloBytes/sec)
snb: \DCIM\> quit ↵

Листинг ниже иллюстрирует использование ядерного модуля cifs для монтирования публичного (-о guest) ресурса media с узла WINXP в каталог /nnt/network/winxp/media.

Клиент smbclient имеет встроенный механизм NBNS, поэтому без проблем подключается к узлу winxp, а при монтировании cifs механизм NBNS недоступен, что требует подсказки в виде IP-адреса сервера.

Монтирование ресурса SMB/CIFS

lumpy@ubuntu:~$ sudo mkdir -p /mnt/network/winxp/media

lumpy@ubuntu:~$ sudo mount -t cifs -o guest //WINXP/media /mnt/network/winxp/media

mount error: could not resolve address for WINXP: Unknown error

lumpy@ubuntu:~$ rmblookup WINXP

querying WINXP on 192.168.100.255

192.168.100.3 WINXP<00>

lumpy@ubuntu: ~$ sudo mount -t cifs -o guest,ip=192.168.100.3 //WINWP/media /mnt/network/winxp/media

lumpy@ubuntu:~$ findmnt -t cifs

TARGET                                           SOURCE                FSTYPE   OPTIONS
/mnt/network/winxp/media      //WINXP/media   cifs           rw,relatime,vers=1.0,cache=strict,…

lumpy@ubuntu:~$ ls -l /mnt/network/winxp/media/DCIM/

итого 346228
-rwxr-xr-x 1  root  root    4494092 февр. 13 2018 Dd595.jpg

-rwxr-xr-x 1  root  root    4108278 февр. 13 2018 Dd681.jpg

 

 

 

Добавить комментарий