Share via


Résolution avancée des problèmes liés au protocole SMB (Server Message Block)

Essayez notre agent virtuel : il peut vous aider à identifier et à résoudre rapidement les problèmes courants liés au protocole SMB (Server Message Block).

Server Message Block (SMB) est un protocole de transport réseau pour les opérations de systèmes de fichiers, qui permet à un client d’accéder à des ressources sur un serveur. L’objectif principal du protocole SMB est d’activer l’accès au système de fichiers distant entre deux systèmes via TCP/IP.

La résolution des problèmes liés au protocole SMB peut être extrêmement complexe. Cet article ne constitue pas un guide de résolution des problèmes exhaustif. Il s’agit en fait d’une brève introduction permettant de comprendre les principes de base de la résolution efficace des problèmes liés au protocole SMB.

Outils et collecte de données

Pour résoudre correctement les problèmes liés au protocole SMB, l’un des aspects clés consiste à communiquer la terminologie correcte. Pour cette raison, cet article présente la terminologie de base liée au protocole SMB afin de garantir l’exactitude de la collecte et de l’analyse des données.

Notes

Le serveur SMB (SRV) fait référence au système qui héberge le système de fichiers, également appelé serveur de fichiers. Le client SMB (CLI) fait référence au système qui tente d’accéder au système de fichiers, quelle que soit la version ou l’édition du système d’exploitation.

Par exemple, si vous utilisez Windows Server 2016 pour accéder à un partage SMB hébergé sous Windows 10, Windows Server 2016 est le client SMB et Windows 10 le serveur SMB.

Collecter les données

Avant de résoudre les problèmes liés au protocole SMB, nous vous recommandons de collecter d’abord une trace réseau côté client et côté serveur. Les consignes suivantes s'appliquent :

  • Sur les systèmes Windows, vous pouvez utiliser netshell (netsh), Moniteur réseau, Message Analyzer ou Wireshark pour collecter une trace réseau.

  • Les appareils tiers disposent généralement d’un outil de capture de paquets intégré, tel que tcpdump (Linux/FreeBSD/Unix) ou pktt (NetApp). Par exemple, si le client SMB ou le serveur SMB est un hôte Unix, vous pouvez collecter des données en exécutant la commande suivante :

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

    Arrêtez la collecte de données en appuyant sur Ctrl+C sur le clavier.

Pour découvrir la source du problème, vous pouvez vérifier les traces recueillies des deux côtés : CLI, SRV ou quelque part entre les deux.

Collecte de données à l’aide de netshell

Cette section décrit la collecte de la trace réseau à l’aide de netshell.

Important

L’outil Microsoft Message Analyzer a été mis hors service et nous vous recommandons d’utiliser Wireshark pour analyser les fichiers ETL. Pour ceux qui ont déjà téléchargé l’outil et qui recherchent plus d’informations, consultez l’article Installation et mise à niveau de Message Analyzer.

Notes

Une trace Netsh crée un fichier ETL. Les fichiers ETL peuvent être ouverts dans Message Analyzer (MA), Moniteur réseau 3.4 (régler l'analyseur sur Network Monitor Parsers > Windows) et Wireshark.

  1. Sur le serveur SMB et le client SMB, créez un dossier Temp sur le lecteur C, puis exécutez la commande suivante :

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

    Si vous utilisez PowerShell, exécutez les applets de commande suivantes :

    New-NetEventSession -Name trace -LocalFilePath "C:\Temp\netTrace.etl" -MaxFileSize 1024
    
    Add-NetEventPacketCaptureProvider -SessionName trace -TruncationLength 1500
    
    Start-NetEventSession trace
    
  2. Reproduisez le problème.

  3. Arrêtez la trace en exécutant la commande suivante :

    netsh trace stop
    

    Si vous utilisez PowerShell, exécutez les applets de commande suivantes :

    Stop-NetEventSession trace  
    Remove-NetEventSession trace
    

Notes

Vous ne devez suivre qu’une quantité minimale des données transférées. Pour les problèmes de performances, capturez toujours une bonne et une mauvaise trace, si la situation le permet.

Analyser le trafic

SMB est un protocole de niveau application, qui utilise le protocole TCP/IP comme protocole de transport réseau. Par conséquent, un problème de protocole SMB peut en fait être provoqué par des problèmes de protocole TCP/IP.

Vérifiez si le protocole TCP/IP rencontre l’un des problèmes suivants :

  1. L’établissement d’une liaison TCP en trois temps ne se termine pas. Cela indique généralement qu’il existe un blocage par le pare-feu ou que le service Server n’est pas en cours d’exécution.

  2. Des retransmissions se produisent. Celles-ci peuvent entraîner un ralentissement des transferts de fichiers en raison de limitations dues à une congestion Compound TCP.

  3. Cinq retransmissions suivies d’une réinitialisation TCP peuvent indiquer que la connexion entre les systèmes a été perdue, ou que l’un des services SMB s’est bloqué ou a cessé de répondre.

  4. La fenêtre de réception TCP diminue. Cela peut être dû à un stockage lent ou à un autre problème qui empêche la récupération des données à partir de la mémoire tampon Winsock du pilote de fonction connexe (AFD).

S’il n’existe aucun problème TCP/IP notable, recherchez les erreurs SMB. Pour ce faire, effectuez les étapes suivantes :

  1. Vérifiez toujours les erreurs SMB en vous référant à la spécification du protocole MS-SMB2. De nombreuses erreurs SMB sont inoffensives (non dangereuses). Reportez-vous aux informations suivantes pour déterminer pourquoi SMB a retourné l’erreur, avant de conclure que l’erreur est liée à l’un des problèmes suivants :

  2. Vérifiez si une commande de réinitialisation TCP est envoyée immédiatement après une commande FSCTL_VALIDATE_NEGOTIATE_INFO (validation de négociation). Si c’est le cas, reportez-vous aux informations suivantes :

    • La session SMB doit être arrêtée (réinitialisation TCP) lorsque le processus de validation de négociation échoue sur le client ou sur le serveur.

    • Ce processus peut échouer, car un optimiseur WAN modifie le paquet de négociation SMB.

    • Si la connexion s’est terminée prématurément, identifiez la dernière communication d’échange entre le client et le serveur.

Analyser le protocole

Examinez les détails du protocole SMB réel dans la trace réseau pour comprendre les commandes et les options qui sont utilisées.

  • N’oubliez pas que le protocole SMB ne fait que ce qu’on lui dit de faire.

  • Vous pouvez en apprendre beaucoup sur ce que l’application tente de faire en examinant les commandes SMB.

Comparez les commandes et les opérations aux spécifications du protocole afin de vous assurer que tout fonctionne correctement. Si ce n’est pas le cas, collectez des données plus proches ou à un niveau inférieur pour rechercher plus d’informations sur la cause racine. Pour ce faire, effectuez les étapes suivantes :

  1. Collectez une capture de paquets standard.

  2. Exécutez la commande netsh pour suivre et collecter des informations sur la présence éventuelle de problèmes dans la pile réseau ou de chutes d’activité dans les applications de la plateforme de filtrage Windows (WFP), telles que le pare-feu ou le programme antivirus.

  3. Si toutes les autres options échouent, collectez un t.cmd si vous pensez que le problème se produit dans SMB lui-même, ou si aucune des autres données n’est suffisante pour identifier une cause racine.

Exemple :

  • Vous rencontrez des transferts de fichiers lents vers un serveur de fichiers unique.

  • Les traces recueillies des deux côtés montrent que le SRV répond lentement à une requête READ.

  • La suppression d’un programme antivirus résout le problème de transferts de fichiers lents.

  • Vous contactez le développeur du programme antivirus pour résoudre le problème.

Notes

Si vous le souhaitez, vous pouvez également désinstaller temporairement le programme antivirus le temps de procéder à la résolution des problèmes.

Journaux d’événements

Le client SMB et le serveur SMB ont une structure de journal des événements détaillée, comme illustré dans la capture d’écran suivante. La collecte des journaux des événements peut vous aider à trouver la cause racine du problème.

Event logs

Cette section répertorie les fichiers système liés au protocole SMB. Pour conserver les fichiers système à jour, assurez-vous que le dernier correctif cumulatif est installé.

Fichiers binaires du client SMB qui se trouvent sous %windir%system32\Drivers :

  • RDBSS.sys

  • MRXSMB.sys

  • MRXSMB10.sys

  • MRXSMB20.sys

  • MUP.sys

  • SMBdirect.sys

Fichiers binaires du serveur SMB qui se trouvent sous %windir%system32\Drivers :

  • SRVNET.sys

  • SRV.sys

  • SRV2.sys

  • SMBdirect.sys

  • Sous %windir%\system32

  • srvsvc.dll

SMB components

Suggestions de mise à jour

Nous vous recommandons de mettre à jour les composants suivants avant de résoudre les problèmes liés à SMB :

  • Un serveur de fichiers nécessite un stockage de fichiers. Si votre stockage possède des composants iSCSI, mettez-les à jour.

  • Mettez à jour les composants réseau.

  • Pour améliorer les performances et la stabilité, mettez à jour Windows Core.

Référence

Scénario d’échange de paquets du protocole Microsoft SMB