Server Message Block (SMB) es un protocolo fundamental para compartir archivos en red que permite a los usuarios y a las aplicaciones acceder a archivos, impresoras y otros recursos compartidos a través de una red. Utilizado habitualmente en entornos Windows, SMB facilita una comunicación fluida entre los sistemas cliente y servidor. En este artículo, exploraremos cómo funciona SMB, sus componentes, los pasos habituales de solución de problemas y las mejores prácticas para resolver problemas relacionados con SMB.
Tabla de contenido
¿Qué es SMB?
Server Message Block (SMB) es un protocolo de red que permite a los usuarios leer, escribir y gestionar archivos en servidores remotos como si fueran locales. SMB se usa ampliamente en redes Windows para permitir el acceso compartido a archivos, impresoras y puertos serie. También es compatible con sistemas Linux y macOS, lo que lo convierte en un protocolo versátil para la comunicación multiplataforma.
Cómo funciona SMB
- Solicitud del cliente: El cliente SMB (por ejemplo, Windows, Linux o macOS) envía una solicitud al servidor SMB para acceder a un recurso compartido.
- Respuesta del servidor: El servidor SMB valida la solicitud según la autenticación y los permisos.
- Acceso a recursos: Una vez concedido el acceso, el cliente puede leer, escribir o modificar archivos como si estuvieran en una unidad local.
Terminología clave de SMB
- Servidor SMB (SRV): El sistema que aloja el sistema de archivos compartido.
- Cliente SMB (CLI): El sistema que accede al sistema de archivos compartido.
Por ejemplo, si una máquina con Windows Server 2016 accede al recurso compartido SMB \\MyWorkstation\Data en un equipo con Windows 10, el servidor actúa como cliente SMB, y la estación de trabajo es el servidor SMB.
Versiones de SMB
1. SMB 1.0 (antiguo)
- Vulnerable a ataques como WannaCry y EternalBlue.
- Carece de funciones de seguridad modernas.
2. SMB 2.0 / 2.1
- Mejor rendimiento y seguridad.
- Admite tamaños de búfer mayores para lograr mejores tasas de transferencia de datos.
3. SMB 3.0+
- Introdujo el cifrado para mayor seguridad.
- Entre sus funciones se incluyen SMB Multichannel y SMB Direct para transferencias de archivos de alta velocidad.
Componentes de SMB
1. Binarios
- Binarios del cliente SMB: Ubicados en
%windir%\system32\Drivers:RDBSS.sysMRXSMB.sysMRXSMB10.sysMRXSMB20.sysMUP.sysSMBdirect.sys
- Binarios del servidor SMB:
%windir%\system32:Srvsvc.dll%windir%\system32\Drivers:SRVNET.sys,SRV.sys,SRV2.sys,SMBdirect.sys
2. Enlaces
- Enlace del cliente SMB:
Client for Microsoft Networks - Enlace del servidor SMB:
File and Printer Sharing for Microsoft Networks

Puertos y comunicación de SMB
SMB puede funcionar por distintos puertos según el protocolo utilizado:
| Protocolo | Puerto | Descripción |
|---|---|---|
| NetBIOS over TCP/IP | UDP 137 | Resolución de nombres |
| NetBIOS over TCP/IP | UDP 138 | Servicios de datagramas |
| NetBIOS over TCP/IP | TCP 139 | Servicios de sesión |
| SMB directo sobre TCP | TCP 445 | Comunicación SMB predeterminada |
Las redes modernas usan principalmente TCP 445, mientras que los sistemas más antiguos pueden depender de NetBIOS.
Cómo solucionar problemas de SMB
1. Verifica la conectividad
- Asegúrate de que el cliente pueda conectarse al servidor a través de TCP 445:
Test-NetConnection <server_IP_or_hostname> -Port 445
- Si falla, comprueba si Azure Firewall, los NSG o los cortafuegos locales están bloqueando el tráfico SMB.
2. Comprueba la resolución de nombres
- Prueba el acceso al servidor mediante el nombre de host y la IP:
nslookup <server_hostname>
- Si el nombre de host falla, verifica la configuración de DNS.
3. Verifica los servicios SMB
- Asegúrate de que los servicios necesarios estén en ejecución:
Get-Service -Name LanmanServer, LanmanWorkstation
- Inicia los servicios si están detenidos:
Start-Service -Name LanmanServer, LanmanWorkstation

4. Comprueba las reglas del cortafuegos
- Confirma que las reglas de SMB están habilitadas:
netsh advfirewall firewall show rule name="File and Printer Sharing (SMB-In)"

5. Verifica los permisos
- Comprueba los permisos de recurso compartido y NTFS desde las propiedades de la carpeta o con CMD:
net share <sharename>
icacls <folder_path>


6. Prueba el acceso con una ruta UNC
- Abre
Run(Win + R) y escribe:
\\<server_IP_or_hostname>\sharename
Solución avanzada de problemas y recopilación de datos
1. Comprueba las sesiones SMB
- Muestra las sesiones SMB activas:
Get-SmbSession
2. Restablece la configuración de SMB
- Deshabilita y vuelve a habilitar SMB 2 y 3:
Set-SmbServerConfiguration -EnableSMB2Protocol $true -Force
3. Trazas de red
- Usa Wireshark para recopilar paquetes de red relacionados con SMB:
- Empieza a capturar tráfico tanto en el cliente como en el servidor SMB.
- Reproduce el problema.
- Analiza los paquetes en busca de errores o tiempos de espera de SMB.
4. Recopila los registros de eventos
- Exporta los registros de eventos relacionados con SMB para un análisis más detallado:
- Registros del cliente SMB.
- Registros del servidor SMB.

Documentación de referencia:
Solución avanzada de problemas de Server Message Block (SMB) | Microsoft Learn
Problemas conocidos de SMB | Microsoft Learn
Guía para solucionar problemas de SMB – Windows Server | Microsoft Learn
Detectar, habilitar y deshabilitar SMBv1, SMBv2 y SMBv3 en Windows | Microsoft Learn
Información general sobre la firma de Server Message Block – Windows Server | Microsoft Learn
Mejoras de seguridad de SMB | Microsoft Learn
Conclusión
SMB es un protocolo potente para compartir archivos y acceder a recursos, pero puede presentar problemas debido a configuraciones incorrectas, restricciones de red o componentes obsoletos. Si sigues los pasos de solución de problemas descritos anteriormente, podrás identificar y resolver eficazmente los problemas relacionados con SMB. Para problemas complejos, los diagnósticos avanzados, como las trazas de red y los registros de eventos, pueden ofrecer información más detallada.