Solução de problemas avançada do protocolo SMBAdvanced Troubleshooting Server Message Block (SMB)

O SMB é um protocolo de transporte de rede para operações de sistemas de arquivos para permitir que um cliente acesse recursos em um servidor.Server Message Block (SMB) is a network transport protocol for file systems operations to enable a client to access resources on a server. A principal finalidade do protocolo SMB é habilitar o acesso do sistema de arquivos remoto entre dois sistemas em TCP/IP.The primary purpose of the SMB protocol is to enable remote file system access between two systems over TCP/IP.

A solução de problemas de SMB pode ser extremamente complexa.SMB troubleshooting can be extremely complex. Este artigo não é um guia de solução de problemas completo, é uma breve introdução para entender as noções básicas de como solucionar problemas de SMB com eficiência.This article is not an exhaustive troubleshooting guide Instead, it is a short primer to understand the basics of how to effectively troubleshoot SMB.

Ferramentas e coleta de dadosTools and data collection

Um aspecto importante da qualidade da solução de problemas de SMB é comunicar a terminologia correta.One key aspect of quality SMB troubleshooting is communicating the correct terminology. Portanto, este artigo apresenta a terminologia básica do SMB para garantir a precisão da coleta e análise de dados.Therefore, this article introduces basic SMB terminology to ensure accuracy of data collection and analysis.

Observação

O servidor SMB (SRV) refere-se ao sistema que está hospedando o sistema de arquivos, também conhecido como o servidor de arquivos.The SMB Server (SRV) refers to the system that is hosting the file system, also known as the file server. O cliente SMB (CLI) refere-se ao sistema que está tentando acessar o sistema de arquivos, independentemente da versão ou edição do sistema operacional.The SMB Client (CLI) refers to the system that is trying to access the file system, regardless of the OS version or edition.

Por exemplo, se você usar o Windows Server 2016 para alcançar um compartilhamento SMB hospedado no Windows 10, o Windows Server 2016 será o cliente SMB e o Windows 10 o servidor SMB.For example, if you use Windows Server 2016 to reach an SMB share that is hosted on Windows 10, Windows Server 2016 is the SMB Client and Windows 10 the SMB Server.

Coletar dadosCollect data

Antes de solucionar problemas de SMB, recomendamos que você primeiro colete um rastreamento de rede nos lados do cliente e do servidor.Before you troubleshoot SMB issues, we recommend that you first collect a network trace on both the client and server sides. As seguintes diretrizes se aplicam:The following guidelines apply:

  • Em sistemas Windows, você pode usar o NetShell (netsh), Monitor de Rede, o analisador de mensagens ou o Wireshark para coletar um rastreamento de rede.On Windows systems, you can use netshell (netsh), Network Monitor, Message Analyser, or Wireshark to collect a network trace.

  • Dispositivos de terceiros geralmente têm uma ferramenta de captura de pacote in-box, como tcpdump (Linux/FreeBSD/UNIX) ou pktt (NetApp).Third-party devices generally have an in-box packet capture tool, such as tcpdump (Linux/FreeBSD/Unix), or pktt (NetApp). Por exemplo, se o cliente SMB ou o servidor SMB for um host UNIX, você poderá coletar dados executando o seguinte comando:For example, if the SMB client or SMB server is a Unix host, you can collect data by running the following command:

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

    Pare de coletar dados usando Ctrl + C do teclado.Stop collecting data by using Ctrl+C from keyboard.

Para descobrir a origem do problema, você pode verificar os rastreamentos bilaterais: CLI, SRV ou em algum lugar entre eles.To discover the source of the issue, you can check the two-sided traces: CLI, SRV, or somewhere in between.

Usando o NetShell para coletar dadosUsing netshell to collect data

Esta seção fornece as etapas para usar o NetShell para coletar o rastreamento de rede.This section provides the steps for using netshell to collect network trace.

Observação

Um rastreamento netsh cria um arquivo ETL.A Netsh trace creates an ETL file. Os arquivos ETL podem ser abertos somente no analisador de mensagens (MA) e Monitor de Rede 3,4 (defina o analisador para Monitor de Rede analisadores de análise > ).ETL files can be opened only in Message Analyzer (MA) and Network Monitor 3.4 (set the parser to Network Monitor Parsers > Windows).

  1. No servidor SMB e no cliente SMB, crie uma pasta temporária na unidade C. Em seguida, execute o seguinte comando:On both the SMB server and SMB client, create a Temp folder on drive C. Then, run the following command:

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

    Se você estiver usando o PowerShell, execute os seguintes cmdlets:If you are using PowerShell, run the following cmdlets:

    New-NetEventSession -Name trace -LocalFilePath "C:\Temp\$env:computername`_netCap.etl" -MaxFileSize 1024
    
    Add-NetEventPacketCaptureProvider -SessionName trace -TruncationLength 1500
    
    Start-NetEventSession trace
    
  2. Reproduza o problema.Reproduce the issue.

  3. Pare o rastreamento executando o seguinte comando:Stop the trace by running the following command:

    netsh trace stop
    

    Se você estiver usando o PowerShell, execute os seguintes cmdlets:If you are using PowerShell, run the following cmdlets:

    Stop-NetEventSession trace  
    Remove-NetEventSession trace
    

Observação

Você deve rastrear apenas uma quantidade mínima dos dados transferidos.You should trace only a minimum amount of the data that's transferred. Para problemas de desempenho, sempre use um rastreamento bom e ruim, se a situação permitir.For performance issues, always take both a good and bad trace, if the situation allows it.

Analisar o tráfegoAnalyze the traffic

O SMB é um protocolo de nível de aplicativo que usa TCP/IP como o protocolo de transporte de rede.SMB is an application-level protocol that uses TCP/IP as the network transport protocol. Portanto, um problema SMB também pode ser causado por problemas de TCP/IP.Therefore, an SMB issue can also be caused by TCP/IP issues.

Verifique se o TCP/IP apresenta qualquer um desses problemas:Check whether TCP/IP experiences any of these issues:

  1. O handshake de três vias TCP não é concluído.The TCP three-way handshake does not finish. Isso normalmente indica que há um bloqueio de firewall ou que o serviço do servidor não está em execução.This typically indicates that there is a firewall block, or that the Server service is not running.

  2. Retransmissãos estão ocorrendo.Retransmits are occurring. Isso pode causar transferências de arquivos lentas devido à limitação de congestionamento de TCP composta.These can cause slow file transfers because of compound TCP congestion throttling.

  3. Cinco retransmissãos seguidas por uma redefinição de TCP podem significar que a conexão entre os sistemas foi perdida ou que um dos serviços SMB falhou ou parou de responder.Five retransmits followed by a TCP reset could mean that the connection between systems was lost, or that one of the SMB services crashed or stopped responding.

  4. A janela de recepção TCP está diminuindo.The TCP receive window is diminishing. Isso pode ser causado por um armazenamento lento ou por algum outro problema que impede que os dados sejam recuperados do buffer do Winsock do driver de função auxiliar (AFD).This can be caused by slow storage or some other issue that prevents data from being retrieved from the Ancillary Function Driver (AFD) Winsock buffer.

Se não houver problema de TCP/IP perceptível, procure erros de SMB.If there is no noticeable TCP/IP issue, look for SMB errors. Para fazer isso, siga estas etapas:To do this, follow these steps:

  1. Sempre verifique os erros de SMB em relação à especificação do protocolo MS-SMB2.Always check SMB errors against the MS-SMB2 protocol specification. Muitos erros de SMB são benignos (não prejudiciais).Many SMB errors are benign (not harmful). Consulte as informações a seguir para determinar por que o SMB retornou o erro antes de concluir que o erro está relacionado a qualquer um dos seguintes problemas:Refer to the following information to determine why SMB returned the error before you conclude that the error is related to any of the following issues:

  2. Verifique se um comando TCP Reset é enviado imediatamente após um _ comando fsctl Validate _ Negotiate _ info (Validate Negotiate).Check whether a TCP reset command is sent immediately after an FSCTL_VALIDATE_NEGOTIATE_INFO (validate negotiate) command. Nesse caso, consulte as seguintes informações:If so, refer to the following information:

    • A sessão SMB deve ser encerrada (redefinição TCP) quando o processo de negociação de validação falha no cliente ou no servidor.The SMB session must be terminated (TCP reset) when the Validate Negotiate process fails on either the client or the server.

    • Esse processo pode falhar porque um otimizador de WAN está modificando o pacote de negociação SMB.This process might fail because a WAN optimizer is modifying the SMB Negotiate packet.

    • Se a conexão foi encerrada prematuramente, identifique a última comunicação do Exchange entre o cliente e o servidor.If the connection ended prematurely, identify the last exchange communication between the client and server.

Analisar o protocoloAnalyze the protocol

Examine os detalhes reais do protocolo SMB no rastreamento de rede para entender os comandos e as opções exatas que são usadas.Look at the actual SMB protocol details in the network trace to understand the exact commands and options that are used.

Observação

Somente o analisador de mensagem pode analisar os comandos SMBv3 e Version posterior.Only Message Analyzer can parse SMBv3 and later version commands.

  • Lembre-se de que o SMB faz apenas o que é instruído a fazer.Remember that SMB does only what it is told to do.

  • Você pode aprender muito sobre o que o aplicativo está tentando fazer examinando os comandos SMB.You can learn a lot about what the application is trying to do by examining the SMB commands.

Compare os comandos e as operações com a especificação de protocolo para garantir que tudo esteja operando corretamente.Compare the commands and operations to the protocol specification to make sure that everything is operating correctly. Se não estiver, colete dados que estejam mais próximos ou em um nível mais baixo para procurar mais informações sobre a causa raiz.If it is not, collect data that is closer to or at a lower level to look for more information about the root cause. Para fazer isso, siga estas etapas:To do this, follow these steps:

  1. Colete uma captura de pacote padrão.Collect a standard packet capture.

  2. Execute o comando netsh para rastrear e coletar detalhes sobre se há problemas na pilha de rede ou Descartes em aplicativos da Windows Filtering Platform (WFP), como firewall ou programa antivírus.Run the netsh command to trace and gather details about whether there are issues in the network stack or drops in Windows Filtering Platform (WFP) applications, such as firewall or antivirus program.

  3. Se todas as outras opções falharem, colete um t. cmd se você suspeitar que o problema ocorre no próprio SMB ou se nenhum dos outros dados for suficiente para identificar uma causa raiz.If all other options fail, collect a t.cmd if you suspect that the issue occurs within SMB itself, or if none of the other data is sufficient to identify a root cause.

Por exemplo:For example:

  • Você experimenta transferências de arquivos lentas para um único servidor de arquivos.You experience slow file transfers to a single file server.

  • Os rastreamentos em duas laterais mostram que o SRV responde lentamente a uma solicitação de leitura.The two-sided traces show that the SRV responds slowly to a READ request.

  • A remoção de um programa antivírus resolve as transferências de arquivos lentas.Removing an antivirus program resolves the slow file transfers.

  • Você entra em contato com o programa antivírus manufactory para resolver o problema.You contact the antivirus program manufactory to resolve the issue.

Observação

Opcionalmente, você também pode desinstalar temporariamente o programa antivírus durante a solução de problemas.Optionally, you might also temporarily uninstall the antivirus program during troubleshooting.

Logs de eventosEvent logs

Tanto o cliente SMB quanto o servidor SMB têm uma estrutura detalhada do log de eventos, conforme mostrado na captura de tela a seguir.Both SMB Client and SMB Server have a detailed event log structure, as shown in the following screenshot. Colete os logs de eventos para ajudar a encontrar a causa raiz do problema.Collect the event logs to help find the root cause of the issue.

Logs de eventos

Esta seção lista os arquivos do sistema relacionados ao SMB.This section lists the SMB-related system files. Para manter os arquivos do sistema atualizados, verifique se o pacote cumulativo de atualizações mais recente está instalado.To keep the system files updated, make sure that the latest update rollup is installed.

Binários de cliente SMB listados em % windir% \ System32 \ drivers:SMB Client binaries that are listed under %windir%\system32\Drivers:

  • RDBSS.sysRDBSS.sys

  • MRXSMB.sysMRXSMB.sys

  • MRXSMB10.sysMRXSMB10.sys

  • MRXSMB20.sysMRXSMB20.sys

  • MUP.sysMUP.sys

  • SMBdirect.sysSMBdirect.sys

Os binários do servidor SMB listados em % windir% \ System32 \ drivers:SMB Server binaries that are listed under %windir%\system32\Drivers:

  • SRVNET.sysSRVNET.sys

  • SRV.sysSRV.sys

  • SRV2.sysSRV2.sys

  • SMBdirect.sysSMBdirect.sys

  • Em % windir% \ System32Under %windir%\system32

  • srvsvc.dllsrvsvc.dll

Componentes SMB

Sugestões de atualizaçãoUpdate suggestions

Recomendamos que você atualize os seguintes componentes antes de solucionar problemas de SMB:We recommend that you update the following components before you troubleshoot SMB issues:

  • Um servidor de arquivos requer armazenamento de arquivos.A file server requires file storage. Se o seu armazenamento tiver o componente iSCSI, atualize esses componentes.If your storage has iSCSI component, update those components.

  • Atualize os componentes de rede.Update the network components.

  • Para melhorar o desempenho e a estabilidade, atualize o Windows Core.For better performance and stability, update Windows Core.

ReferênciaReference

Cenário de intercâmbio de pacotes do protocolo SMB da MicrosoftMicrosoft SMB Protocol Packet Exchange Scenario