Cela quelques mois que je poste des billets régulièrement sur mes découvertes et mon apprentissage de la production sur “NSX-T”. Durant tout ce temps, je me suis construit petit à petit une liste de tips & tricks pour pouvoir être plus efficace et aller plus vite à l’essentiel dans différentes circonstances. Après le billet “du parfait plombier des snapshots vSphere” et le billet “du parfait plombier VSAN”, il est temps d’inaugurer le manuel “du parfait plombier NSX-T” !

Trace ethernet en ligne de commande sur un ESXi

Ce n’est pas spécialement lié à NSX-T et cette fonction est parfaitement utilisable sur un ESXi quel qu’il soit, mais elle est très utile quand on veut pister un flux problématique depuis ou vers une VM donnée. ESXi met à votre disposition des outils très puissants, vous allez voir. Le seul pré-requis : ça ne marche qu’avec des VM connectées via des DVswitchs, mais je pense que ça ne dérangera personne en 2019 ^^.

Tout d’abord, récupérez le numéro du port virtuel que vous souhaitez tracer : pour se faire, sous cli utilisez cette commande :

Vous obtenez ici la liste exhaustive ports dvSwitch que l’ESXi exploite actuellement : ceux des VM s’exécutant actuellement sur la machine. Sur des grosses productions cela peut représenter des dizianes, voire des centaines de ports. Un petit “grep le_nom_de_ma_vm” derrière la commande vous permettra d’aller droit au but.

Ensuite, pour le port cible, utilisez cette ligne de commande :

C’est une combinaison de pktcap-uw, qui permet tout simplement de dumper le contenu du flux ethernet du port ciblé. Ce flux est ensuite envoyé à la commande, beaucoup plus classique, tcpdump-uw, un clone du bon vieux tcpdump. L’option “–dir 2” dans la commande pktcap-uw indique qu’on souhaite les flux in et out. Je vous laisse découvrir ces deux commande, les possibilités sont énormes pour analyser en temps réel l’activité d’une VM sans la perturber le moins du monde, ni a forcieri, d’installer un traceur à la wireshark dessus !

Trace en ligne de commande d’un port de logical router sur vos edges nodes

Une fois connecté en admin sur la edge cible (si vous êtes en actif/actif, vous devez faire des traces combinées sur les deux edge nodes), récupérez d’abord la liste de vos routeurs (DR, SR) :

Une fois récupéré l’UUID du routeur, vous devez lister et récupérer l’UUID de l’interface du routeur que vous voulez tracer :

Pour notre exemple, on va prendre la dernière du SR-tier0, en fait l’uplink vers l’exterieur du monde joyeux de NSX-T. Pour tracer l’activité de l’interface en question :

Vous noterez l’expression qui permet ici le dump à un host en particulier, tout comme tcpdump. Les possibilités sont presques infinies, aussi je vous recommande de piocher à loisir dans la doc “NSX-T Command line Reference”, à consulter ici pour la 2.5.

Tracer l’activité du distributed firewall NSX-T sur ESXi

Vous le savez sans doute, pour chaque règle de micro-segmentation, vous pouvez cocher l’option de “logging”. Cette option permet d’activer la trace de chaque activité de la règle en question sur chacun des transport nodes (ESXi) de votre plateforme. Une fois fait, dès que la règle est matchée sur un VM donnée, la décision du DFW est logguée dans le fichier /var/log/dfwpktlogs.log de l’ESXi où la VM s’exécute. Il vous suffit donc de consulter ce fichier pour voir ce qui s’est passé. Voici un petit exemple :

Le numéro après le INET/INET6 match correspond au numéro de la règle (à retrouver dans l’interface web). Vous avez aussi des indications du type TERM (fermeture de la session statefull) voir RDR qui indique une “redirection”, SNAT ou DNAT. Bref, une mine d’or pour vérifier que les règles implantés sont bonne. Bon, honnêtement, si vous avec beaucoup de machine, je vous conseille fortement au moins un aggrégateur de log pour vos machines (et les appliances NSX-T au passage), voire un VMware Log Insight, si vous avez des licences adaptées.