Compartir a través de


Solución avanzada de problemas del bloque de mensajes del servidor (SMB)

Pruebe nuestro agente virtual: puede ayudarle a identificar y corregir rápidamente problemas comunes del protocolo Bloque de mensajes del servidor.

Bloque de mensajes del servidor (SMB) es un protocolo de transporte de red para las operaciones de sistemas de archivos que permiten que los clientes accedan a los recursos de un servidor. El propósito principal del protocolo SMB es habilitar el acceso remoto al sistema de archivos entre dos sistemas a través de TCP/IP.

La solución de los problemas de SMB puede ser extremadamente compleja. Este artículo no es una guía exhaustiva para la solución de problemas, sino que es un breve manual para conocer los conceptos básicos de cómo solucionar problemas de SMB de forma eficaz.

Herramientas y recopilación de datos

Un aspecto clave de la solución de problemas de calidad de SMB es comunicar la terminología correcta. Por consiguiente, en este artículo se presenta la terminología básica de SMB para garantizar la precisión de la recopilación y el análisis de datos.

Nota

El servidor SMB (SRV) hace referencia al sistema que hospeda el sistema de archivos, también conocido como servidor de archivos. El cliente SMB (CLI) hace referencia al sistema que intenta acceder al sistema de archivos, independientemente de la versión o edición del sistema operativo.

Por ejemplo, si usa Windows Server 2016 para acceder a un recurso compartido de SMB hospedado en Windows 10, Windows Server 2016 es el cliente de SMB y Windows 10 el servidor de SMB.

Recopilación de datos

Antes de solucionar problemas de SMB, se recomienda recopilar primero un seguimiento de la red tanto en el cliente como en el servidor. Se aplican las directrices siguientes:

  • En los sistemas Windows, puede usar netshell (netsh), Network Monitor, Message Analyzer o Wireshark para recopilar un seguimiento de la red.

  • Los dispositivos de terceros suelen tener una herramienta de captura de paquetes integrada, como tcpdump (Linux/FreeBSD/Unix) o pktt (NetApp). Por ejemplo, si el cliente SMB o el servidor SMB son hosts Unix, puede recopilar datos mediante la ejecución del siguiente comando:

    # tcpdump -s0 -n -i any -w /tmp/$(hostname)-smbtrace.pcap
    

    Detenga la recopilación de datos presionando Ctrl+C en el teclado.

Para detectar el origen del problema, puede comprobar los seguimientos en dos lados: CLI, SRV o en algún lugar entre ellos.

Uso de netshell para recopilar datos

En esta sección se proporcionan los pasos necesarios para usar netshell para recopilar el seguimiento de red.

Importante

La herramienta Analizador de mensajes de Microsoft se ha retirado y se recomienda usar Wireshark para analizar los archivos ETL. Para aquellos que hayan descargado la herramienta previamente y busquen más información, consulte Instalación y actualización del Analizador de mensajes.

Nota

Un seguimiento paso a paso de Netsh crea un archivo ETL. Los archivos ETL se pueden abrir en el Analizador de mensajes (MA), Network Monitor 3.4 (establezca el analizador en Analizadores del monitor de red > Windows) y Wireshark.

  1. En el servidor de SMB y el cliente de SMB, cree una carpeta Temp en la unidad C. Luego, ejecute el siguiente comando:

    netsh trace start capture=yes report=yes scenario=NetConnection level=5 maxsize=1024 tracefile=c:\Temp\netTrace.etl
    

    Si usa PowerShell, ejecute los siguientes cmdlets:

    New-NetEventSession -Name trace -LocalFilePath "C:\Temp\netTrace.etl" -MaxFileSize 1024
    
    Add-NetEventPacketCaptureProvider -SessionName trace -TruncationLength 1500
    
    Start-NetEventSession trace
    
  2. Reproduzca el problema.

  3. Detenga el seguimiento paso a paso mediante la ejecución del siguiente comando:

    netsh trace stop
    

    Si usa PowerShell, ejecute los siguientes cmdlets:

    Stop-NetEventSession trace  
    Remove-NetEventSession trace
    

Nota

Debe realizar un seguimiento de solo una cantidad mínima de los datos transferidos. En caso de problemas de rendimiento, tome siempre un seguimiento correcto y uno incorrecto, siempre que la situación lo permita.

Análisis del tráfico

SMB es un protocolo de nivel de aplicación que usa TCP/IP como protocolo de transporte de red. Por consiguiente, un problema de SMB también se puede deber a problemas de TCP/IP.

Compruebe si TCP/IP sufre cualquiera de estos problemas:

  1. El protocolo de enlace tridireccional TCP no finaliza. Esto suele indicar que hay un bloque de firewall o que el Servicio de servidor no se ejecuta.

  2. Se producen retransmisiones. Esto puede provocar transferencias lentas de archivos debido a la limitación de congestión de TCP compuesta.

  3. Cinco retransmisiones seguidas de un restablecimiento de TCP podría significar que se perdió la conexión entre sistemas o que uno de los servicios SMB se bloqueó o dejó de responder.

  4. La ventana de recepción de TCP disminuye. Esto puede deberse a un almacenamiento lento o a algún otro problema que impida la recuperación de los datos del búfer de Ancillary Function Driver (AFD) for Winsock.

Si no hay ningún problema de TCP/IP perceptible, busque errores de SMB. Para ello, realice los pasos siguientes:

  1. Consulte siempre errores de SMB en la especificación del protocolo MS-SMB2. Muchos errores de SMB son benignos (no dañinos). Consulte la siguiente información para determinar el motivo por el que SMB devolvió el error antes de concluir que el error está relacionado con cualquiera de los siguientes problemas:

  2. Compruebe si se envía un comando de restablecimiento de TCP inmediatamente después de un comando FSCTL_VALIDATE_NEGOTIATE_INFO (validar negociación). Si es así, consulte la siguiente información:

    • La sesión de SMB debe terminarse (restablecimiento de TCP) cuando se produce un error en el proceso Validar negociación en el cliente o en el servidor.

    • Este proceso puede generar un error porque un optimizador WAN está modificando el paquete Negotiate de SMB.

    • Si la conexión finalizó de forma prematura, identifique la última comunicación de intercambio entre el cliente y el servidor.

Análisis del protocolo

Examine los detalles reales del protocolo SMB en el seguimiento de red para conocer las opciones y los comandos exactos que se usan.

  • Recuerde que SMB solo hace lo que se le dice que haga.

  • Puede aprender mucho sobre lo que intenta hacer la aplicación examinando los comandos de SMB.

Compare los comandos y las operaciones con la especificación del protocolo para asegurarse de que todo funciona correctamente. Si no es así, recopile los datos más cercanos o los que estén en un nivel inferior para más información sobre la causa principal. Para ello, realice los pasos siguientes:

  1. Recopile una captura de paquetes estándar.

  2. Ejecute el comando netsh para realizar un seguimiento paso a paso y recopilar detalles sobre si hay problemas en la pila de red o caídas en las aplicaciones de la Plataforma de filtrado de Windows (PMA), como el firewall o el programa antivirus.

  3. Si todas las restantes opciones generan un error, recopile un t.cmd si sospecha que el problema se produce en el propio SMB, o si ninguno de los demás datos es suficiente para identificar una causa principal.

Por ejemplo:

  • Sufre transferencias lentas de archivos a un único servidor de archivos.

  • Los seguimientos de dos lados muestran que el SRV responde con lentitud a una solicitud de LECTURA.

  • La eliminación de un programa antivirus resuelve las transferencias lentas de archivos.

  • Para resolver el problema, póngase en contacto con el fabricante del programa antivirus.

Nota

También puede desinstalar temporalmente el programa antivirus durante la solución de problemas.

Registros de eventos

Tanto el cliente de SMB como el servidor de SMB tienen una estructura de registro de eventos detallada, como se muestra en la captura de pantalla siguiente. Recopile los registros de eventos, ya que le ayudará a encontrar la causa principal del problema.

Event logs

En esta sección se enumeran los archivos del sistema relacionados con SMB. Para que los archivos del sistema estén siempre actualizados, asegúrese de que está instalado el paquete acumulativo de actualizaciones más reciente.

Archivos binarios del cliente de SMB que se enumeran en %windir%\system32\Drivers:

  • RDBSS.sys

  • MRXSMB.sys

  • MRXSMB10.sys

  • MRXSMB20.sys

  • MUP.sys

  • SMBdirect.sys

Archivos binarios del servidor de SMB que se enumeran en %windir%\system32\Drivers:

  • SRVNET.sys

  • SRV.sys

  • SRV2.sys

  • SMBdirect.sys

  • En %windir%\system32

  • srvsvc.dll

SMB components

Sugerencias de actualización

Se recomienda actualizar los siguientes componentes antes de solucionar problemas de SMB:

  • Un servidor de archivos requiere almacenamiento de archivos. Si el almacenamiento tiene componentes iSCSI, actualícelos.

  • Actualice los componentes de red.

  • Para mejorar el rendimiento y la estabilidad, actualice el núcleo de Windows.

Referencia

Escenario de intercambio de paquetes del protocolo SMB de Microsoft