Réaliser une capture réseau à l’aide de Netsh et Network Monitor

Envoyer

Sommaire

 

 

Introduction

Par défaut, Windows 2008 R2 et Windows 7 sont dotés d’une fonctionnalité de capture réseau intégrée à l’utilitaire netsh. Cette nouveauté offre de nombreux avantages que nous  vous proposons de découvrir dans notre article.

 


Les points forts

netsh intègre donc désormais une fonctionnalité de capture de trames réseau dont voici les points forts :

  • Aucun prérequis d’installation: la fonctionnalité « trace » de netsh est disponible par défaut sur tout système Windows 7 ou Windows 2008 R2. Il devient plus confortable et plus simple d’initier une capture sur ces systèmes. Ci-dessous, vous avez un exemple d’une capture de base exécutée à l’aide de la commande « netsh trace start capture=yes » depuis l’invite de commande.

 

 

 

 

Remarque: Le fichier de traces, au format ETL, devra être exploité par un outil tel que Network Monitor que nous présentons un peu plus loin.

  • Un mode persistant pour capturer dès le démarrage du système : il dispose d’un mode persistant qui permet de réaliser une capture au démarrage du poste. Cela peut s’avérer particulièrement intéressant lorsqu’il est nécessaire de capturer les communications initiées au démarrage (exemple: Active Directory, DHCP,…). La commande à saisir sera « netsh trace start capture=yes persistent=yes ».
  • Surveillance des processus et du trafic réseau : il ne se contente pas de la capture du trafic réseau. Il est également capable de tracer les évènements système et applicatifs. Pour cela, il s’appuie sur les évènements ETW (Event tracing for Windows). Du coup, il n’est plus nécessaire de collecter indépendamment les données de type système et réseau. De plus, en les couplant, cela simplifie le diagnostic et, de ce fait, d’accélérer la résolution des incidents.
  • Génération de rapports : il permet également de collecter toute une somme de rapports permettant d’identifier plus aisément le système cible. Entre autres, nous retrouvons le rapport d’application des stratégies de groupes (gpresult), les informations générales du système d’exploitation, l’ensemble des dossiers partagés... le tout consultable aisément via une page HTML et compilé dans un fichier CAB. Pour activer la génération des rapports, il faudra saisir la commande « netsh trace start capture=yes report=yes ».

 

 

 

 

 

 

 

 


Réaliser une capture réseau

La capture réseau avec netsh trace se réalise simplement à l’aide de l’option « capture=yes » et, si nécessaire, avec l’option « report=yes » pour la génération de rapports. En clair, il suffit d’exécuter la commande « netsh trace start capture=yes report=yes » (précisez l’option « persistent=yes » si vous voulez que la capture ne s’interrompe pas durant le redémarrage du système).

 

 

 

 

Notez que l’exécution de la capture se réalise en tâche de fond et que la commande se termine avec un récapitulatif de la configuration. A tout moment, Il est possible d’interroger à l’aide de la commande « netsh trace show status » l’état de la capture.

 

 

 

 

 

 

 

Finalement, pour arrêter la capture, il faudra saisir la commande « netsh trace stop » qui lancera la compilation des données collectées dans un fichier ETL et la génération des différents rapports annexes dans un fichier CAB (contenant également le fichier ETL).

 

 

 

 

 

 

Le fichier ETL devra être exploité directement via le logiciel Network Monitor de Microsoft.

 

 

 

Visualiser la capture depuis Network Monitor

La seconde étape consiste donc à installer Network Monitor de Microsoft afin de pouvoir visualiser le contenu de notre capture. Il est disponible depuis ce lien. L’idéal étant de l’installer directement sur votre poste et de rapatrier les fichiers de capture.

Une fois Network Monitor installé, il suffit d’ouvrir votre fichier ETL.

Lors de la première ouverture d’une des captures réalisées, vous obtiendrez le message d’erreur « NDIS_MicrosofWindowsNDISPacketCapture : Windows stub parser : Requires full Common parsers… » au sein de chaque trame et depuis le champ Description. Pour pallier à cela, sélectionnez  le menu « Options » depuis le menu « Tools » de la barre d’outils, allez dans l’onglet « Parser Profiles » et activez le profile « Windows ».

 

 

 

 

 

 

 

 

 

 

Vous avez deux autres très bons exemples disponibles depuis Microsoft MSDN : http://msdn.microsoft.com/en-us/library/dd569140.aspx et http://msdn.microsoft.com/en-us/library/dd569141.aspx.

 

 

 

Filtrer les évènements système à l'aide des « providers »

Afin de limiter la capture des évènements système,  netsh exploite les fournisseurs (ou provider en anglais) de l’Event Tracing for Windows (voir notre section Annexe: Utilisation de « ETW » pour le filtrage des évènements système pour plus de détail). Il en existe des centaines à notre disposition, couvrant de manière exhaustive l’ensemble des composants du système.

Pour vous aider à trouver le bon fournisseur, vous pouvez utiliser la commande « netsh trace show providers | find "filtre" ». Par exemple, pour les fournisseurs associés à Active Directory, nous utiliserons la commande « netsh trace show providers | find "Active Directory" ».

 

 

 

De ce fait, si vous désirez gérer un ou plusieurs fournisseurs dans une capture, vous pourrez utiliser l’option « provider={GUID} »  ou « provider=[NAME] » pour chaque fournisseur voulu. Par exemple, la commande « netsh trace start provider={BBA3ADD2-C229-4CDB-AE2B-57EB6966B0C4} provider={8E598056-8993-11D2-819E-0000F875A064} provider={F33959B4-DBEC-11D2-895B-00C04F79AB69} capture=yes » va nous permettre de capturer les fournisseurs relatifs à Active Directory.

 

 

 

 

Chaque fournisseur peut disposer également de ses propres filtres (Keywords) et d’un niveau de verbosité (Levels). Il vous est possible de consulter les options possibles pour chaque fournisseur à l’aide de la commande « netsh trace show provider {Provider GUID | Name} ».

 

 

 

 

 

 

Les niveaux de verbosité et certains filtres sont communs à la plus part des fournisseurs. Pour les consulter, il suffit de saisir la commande « netsh trace show globalKeywordsAndLevels ». Alors que les mots clés sont propres à chaque fournisseur donc nécessite d’être consulter spécifiquement pour chacun d’entre eux, les valeurs relatives pour le niveau de verbosité est le même pour tous. Cela permettra de limiter la taille des fichiers de capture et de cibler mieux l’information à capturer.

 

 

 

 

 

 

Dans l’exemple ci-dessous, nous capturons le fournisseur « Windows Firewall Service » (provider={5EEFEBDB-E90C-423A-8ABF-0241E7C5B87D}) avec un niveau verbosité critique (level=1) et un filtre sur TL_ERROR et TL_WARN (keywords=0x1,0x2).

 

 

 

 

 

 

 

Filtrer les évènements système et diagnostiquer à l'aide des scénarios

En complément des providers, nous avons également tout un ensemble de scénario afin de pouvoir capturer ou même diagnostiquer divers problèmes. Vous pouvez les lister à l’aide de la commande « netsh trace show scenarios ».

 

 

 

 

 

 

 

 

Un  scénario regroupe un ensemble de fournisseurs que vous pouvez consulter à l’aide de la commande « netsh trace show scenario [NAME] ». Cette commande permet également d’obtenir des informations complémentaires sur le scénario concerné.

 

 

 

 

 

 

 

L’utilisation des scénarios va nous permettre de capturer le trafic réseau plus simplement. Il suffit de saisir la commande suivante « netsh trace start scenario=FileSharing capture=yes » pour capturer les évènements relatifs au partage de fichiers plutôt que de rechercher les fournisseurs et les saisir.

 

 

 

 

Les scénarios ont une autre utilité. Ils permettent le diagnostic.  Pour cela, nous passons dès lors par l’option « diagnose » de « netsh trace ». Par exemple, le scénario « FileSharing » va nous permettre d’évaluer les problèmes de partages réseau. Il suffit de saisir la commande suivante «  netsh trace diagnose scenario=FileSharing UNCPath=\\chemin capture=yes ».

 

 

 

 

 

 

 

 

Réduire le nombre de trames à collecter à l'aide des filtres de capture

Pour compléter la panoplie de fournisseurs et de scénarios déjà à notre disposition, la fonctionnalité de capture dispose également de ses propres filtres. Par exemple, cela permettra de focaliser les captures de trames réseau sur un protocole particulier ou une adresse ip spécifique.

Pour en obtenir une liste exhaustive, il vous suffit de saisir la commande « netsh trace show capturefilterhelp ».

 

 

 

 

 

 

En plus de fournir la liste de tous les paramètres, la commande capturefilterhelp fournir quelques exemples et vous guide dans l’usage des filtres de capture. Nous n’allons pas tous les détailler mais les filtres sont assez communs comme le filtre « ipv4.address » pour la capture d’une adresse ip spécifique ou « CaptureInterface » pour spécifier une interface réseau spécifique.

Dans l’exemple ci-dessous, nous réalisons une capture avec, comme interlocuteur spécifique, l’équipement disposant de l’adresse ip « 192.168.10.1 » depuis l’interface réseau « Connexion au réseau local ».

 

 

 

 

 

 

Annexe: récapitulatif des options de « netsh trace »

Comme tout outil, « netsh trace » dispose de tout un ensemble de paramètres et comme ils ne sont pas si nombreux, nous allons vous les présenter.

Dans un premier temps, il est important de noter qu’il ne propose pas uniquement de la capture (option « start »). Vous pouvez obtenir la liste de ses fonctionnalités à l’aide de la commande « netsh trace help ». Nous trouvons entre autres, la fonction de diagnostic (option « diagnose ») ou  la fonction de conversion (option « convert ») permettant de convertir le fichier de capture en un format spécifique.

Bien entendu et dans le cadre de notre article, l’option la plus intéressante de « netsh trace » reste la capture dont voici les paramètres (tous optionnels) :

  • Scenario: préciser un ou plusieurs scénarios
  • globalKeywords: préciser un filtre global (liste des filtres disponibles à l’aide de la commande « netsh trace show globalKeywordsandLevel »)
  • globalLevel: préciser un niveau de verbosité global à tous les fournisseurs spécifiés
  • capture: activer la capture des trames réseau en plus des traces systèmes. Il faut donc impérativement le préciser!
  • report: activer la génération d’un rapport à la fin de la capture.
  • persistent: résumer une session de capture dans le cadre d’un redémarrage. Particulièrement intéressant si vous désirez réaliser une capture durant le démarrage de votre machine.
  • traceFile: préciser le chemin et le nom du fichier de capture.
  • maxSize: préciser la taille maximale du fichier de capture (250 Mo par défaut). La valeur 0 permet de ne pas fixer de limite.
  • fileMode: paramètre optionnel pour définir le type de rotation.
  • overwrite: préciser si le précédent fichier de capture est écrasé.
  • Correlation: préciser si les évènements de capture seront regroupés.
  • provider: préciser un ou plusieurs fournisseurs.
  • keywords: préciser un filtre spécifique à un fournisseur.
  • levels: préciser un niveau de verbosité spécifique à un fournisseur.

 

 

 

Annexe: Utilisation de « ETW » pour le filtrage des évènements système

Introduit depuis Windows 2000,  ETW (Event Tracing for Windows) est un ensemble de composants permettant de tracer toutes les opérations liées au système d’exploitation ou aux applications (pour plus de détail sur ETW, vous pouvez consulter l’article Event Tracing for Windows: Vu de l'intérieur.

ETW fonctionne sur un modèle de fournisseurs et d’abonnés. Les applications et les composants du système enregistrent leurs données sous la forme d’un « provider » qui pourront être récupérer par un « subscriber ». L’outil de souscription de prédilection était logman mais, depuis Windows 7 et Windows 2008 R2, il est supplanté par netsh. D’ailleurs, depuis une invite de commandes, les commandes « logman providers » ou « netsh trace show providers » vous retourneront exactement la même liste de fournisseurs.

Si vous désirez obtenir des sources complémentaires sur Netsh et ETW, nous vous conseillons de lire l’article Event Tracing for Windows and Network Monitor depuis le blog Technet dédié à Network Monitor. Vous pouvez également consulter un autre très bon article en français sur ETW extrait de MSDN Magazine Améliorez le débogage et l'optimisation des performances avec ETW.

Mise à jour le Lundi, 06 Août 2012 10:54