¿Cómo puedo saber qué versión de SMB se negocia cuando me conecto a un recurso compartido desde macOS?

Tengo bastantes servidores de archivos en el trabajo que sirven archivos a través de SMB/CIFS.

¿Cómo puedo saber qué versión se negocia cuando alguien dice que necesito estar seguro de que me estoy conectando a través de la versión 3 de SMB para obtener el mejor rendimiento?

Respuestas (3)

El smbutilcomando puede volcar los atributos de todos los recursos compartidos o puede apuntar a un recurso compartido en particular y analizar la cadena de versión:

smbutil statshares -a

En el caso del siguiente listado:

site-test-mbp01:~ me$ df
Filesystem                                           512-blocks       Used  Available Capacity  iused               ifree %iused  Mounted on
/dev/disk1s1                                          975210568  368841648  602865928    38%  1808606 9223372036852967201    0%   /
devfs                                                       706        706          0   100%     1222                   0  100%   /dev
/dev/disk1s4                                          975210568    2097200  602865928     1%        2 9223372036854775805    0%   /private/var/vm
map -hosts                                                    0          0          0   100%        0                   0  100%   /net
map auto_home                                                 0          0          0   100%        0                   0  100%   /home
/dev/disk3s1                                         7813365344 1387760392 6424657392    18%    28307 9223372036854747500    0%   /Volumes/apfs
com.apple.TimeMachine.2018-03-29-120539@/dev/disk1s1  975210568  367917520  602865928    38%  1809465 9223372036852966342    0%   /Volumes/com.apple.TimeMachine.localsnapshots/Backups.backupdb/site-test-mbp01/2018-03-29-120539/Macintosh HD
com.apple.TimeMachine.2018-03-23-083810@/dev/disk1s1  975210568  348612592  602865928    37%  1755978 9223372036853019829    0%   /Volumes/com.apple.TimeMachine.localsnapshots/Backups.backupdb/site-test-mbp01/2018-03-23-083810/Macintosh HD
//me@file-nasuni/abc                              2147409920     227552 2147182368     1%   113774          1073591184    0%   /Volumes/abc

Para apuntar a la parte de Nasuni "abc"

smbutil statshares -m /Volumes/abc/|grep VERSION|awk '{print $2}

El comando muestra que negocié una conexión SMB_3.02 a ese dispositivo de almacenamiento compartido.

Este es un ejemplo de cómo smbutil statshares -ase ve en MacOS 10.15.4:

~ $ smbutil statshares -a

==================================================================================================
SHARE                         ATTRIBUTE TYPE                VALUE
==================================================================================================
SomeShareName
                              SERVER_NAME                   MYSERVER._smb._tcp.local
                              USER_ID                       502
                              SMB_NEGOTIATE                 SMBV_NEG_SMB1_ENABLED
                              SMB_NEGOTIATE                 SMBV_NEG_SMB2_ENABLED
                              SMB_NEGOTIATE                 SMBV_NEG_SMB3_ENABLED
                              SMB_VERSION                   SMB_3.02
                              SMB_SHARE_TYPE                DISK
                              SIGNING_SUPPORTED             TRUE
                              EXTENDED_SECURITY_SUPPORTED   TRUE
                              LARGE_FILE_SUPPORTED          TRUE
                              OS_X_SERVER                   TRUE
                              DFS_SUPPORTED                 TRUE
                              FILE_LEASING_SUPPORTED        TRUE
                              MULTI_CREDIT_SUPPORTED        TRUE
                              ENCRYPTION_SUPPORTED          TRUE
                              ENCRYPTION_REQUIRED           TRUE

--------------------------------------------------------------------------------------------------
¡Gracias! SMB_3.02 es una versión popular para las personas en este hilo :)

Simplemente puede usar un sniffer de red como Wireshark, filtrar como smb||smb2y ver en negotiate responseel dialecto que eligió el servidor.