Utiliser NetSH pour prendre des traces réseau
Souvent il est difficile d’avoir à installer un outil de capture réseau comme Microsoft Network Monitor 3.4 ou WireShark (pour les plus connus), surtout sur des machines en production.
Depuis Windows 7 et Windows Server 2008 R2 (et les versions plus récentes), il est possible de faire une capture réseau avec netsh.exe
Voici comment prendre cette trace et comment l’analyser.
1. Prendre une capture réseau avec NETSH.exe
Tout d’abord, cette fonctionnalité n’existe que depuis Windows 7 et 2008 R2. Donc il est inutile d’essayer avec Vista, 2008, XP et 2003.
Pour prendre la capture il faut :
- Ouvrir une invite de commande avec privilèges élevés (exécuter en tant qu’administrateur)
- Lancer la commande suivante “netsh trace start capture=yes [persistent=yes]”
Dans cette commande, nous précisons capture=yes (sans espace dans la commande) pour capturer le trafic réseau sur l’ensemble des interfaces de la machine.
Le commutateur persistent=yes permet de prendre une trace au redémarrage d’une machine ce qui peut être très pratique.
Par défaut les captures sont sauvegardées dans C:\Users\ <compte admin> \AppData\Local\Temp\NetTraces\NetTrace.etl
- Pour arrêter la capture, il suffit d’entrer la commande “netsh trace stop”
Penser à attendre que les traces soient corrélées, puis récupérer le fichier netTrace.etl
2. Comment lire une trace netTrace.etl ?
Par défaut Microsoft Network Monitor 3.4 est capable de lire les traces *.etl.
Cela nécessite quelques paramétrages pour que la lecture soit intelligible.
En effet, si la trace est directement ouverte, voici le type d’affichage :
Les descriptions apparaissent avec le commentaire “Windows stub parser: Requires full Common parsers. See the "How Do I Change Parser Set Options(Version 3.3 or before) or Configure Parser Profile (Version 3.4) "
Pour lire le contenu de manière correcte il faut aller dans OPTIONS :
Puis sélectionner l’onglet PARSER PROFILES et sélectionner dans la liste WINDOWS, et enfin, très important, cliquer sur SET AS ACTIVE pour activer l’affichage
Ensuite la vue est correcte pour la colonne description de l’outil Netmon
Ensuite, il est possible d’utiliser les filtres de Netmon pour maquer les vues et avoir ainsi une lecture plus facile.
Note: les traces réseau *.etl prises avec netsh.exe peuvent aussi être lues avec l’outil Microsoft Message Analyzer.
3. Autres options des captures avec NetSH.exe
- Utilisation des scenarii :
Il est possible d’ajouter à la capture des “providers WMI” qui vont collecter des informations sur les état des composants Windows, comme le pare-feu Windows, l’état du Wi-Fi, IPSec, etc. Pour cela il est intéressant de sélectionner un scenario pour la capture :
“netsh trace show scenarios” affiche la liste des scenarii disponibles et leur description :
Pour capture une trace réseau avec les ‘providers’ WMI (par exemple pour les scenarii NetConnection et WFP-IPSec), il faut alors utiliser la commande “netsh trace start scenario=NetConnection,WFP-IPSec capture=yes”.
Note : pour chainer les scenarii, il faut utiliser “,” (une virgule) comme séparateur, sans espace entre les scenarii et la virgule.
- Options de capture :
Il est possible de modifier le comportement par défaut des captures netsh avec les commutateurs suivants :
Commutateur | Description |
capturetype=physical | permet de spécifier si la capture doit se faire sur un périphérique matériel (“capturetype=physical”), un commutateur virtuel (“capturetype=vmswitch”) ou les deux (“capturetype=both”). Par défaut c’est l’option “physical” est qui sélectionnée. |
report=no | en sélectionnant cette option le fichier netTrace.cab ne sera pas généré. |
maxSize=250 MB | ce commutateur indique la taille maximale du buffer de capture pour la trace. Il faut préciser la taille en Mo. Note, par défaut la valeur est 250 Mo. Si une taille 0 est sélectionnée, cela signifie la taille maximum. |
fileMode=circular | Les types sélectionnés sont “single” : la trace s’arrête lorsque la taille maximale de buffer est atteinte. Le mode “circular” permet d’utiliser une capture circulaire qui s’arrêtera lorsque la commande d’arrêt sera lancée. Le mode “append” convient pour ajouter une nouvelle capture à la suite d’une ancienne. Le mode par défaut est “fileMode=circular”. |
overwrite=yes | à chaque commande de capture netsh il est possible d’écraser la précédente capture (comportement par défaut) ou de créer une nouvelle capture (“overwrite=no”). |
traceFile=%LOCALAPPDATA%\Temp\NetTraces\NetTrace.etl | par défaut la trace sera stockée dans %LOCALAPPDATA%\Temp\NetTraces\NetTrace. etl Il est toutefois possible de spécifier un emplacement alternatif “traceFile=C:\Temp\Test.etl”. |
Alors bonnes captures !
Technorati Tags: netsh,capture,netmon,etl,parser,trace,scenario,nettrace