Réaliser un TAP réseau Ethernet passif

4.9
(8)

Dans mon article « Comment ça marche… Ethernet » j’explique le principe de ce réseau que vous utilisez tous les jours. C’est le réseau qui relie votre ordinateur (ou votre caméra de surveillance, votre imprimante…) à votre box internet avec un câble muni de deux prises RJ45. Avec l’USB et le Wifi il s’agit de l’un des réseaux les plus utilisés en informatique personnelle.

Vous êtes curieux et vous aimeriez bien savoir ce qui transit comme information sur ce réseau. C’est facile, il suffit par exemple d’installer Wireshark sur votre PC et vous observez les trames que ce PC émet et reçoit. Mais il n’est pas toujours possible d’installer Wireshark sur un équipement comme une caméra IP ou une imprimante. Aussi il faut être en mesure d’écouter le trafic qui circule sur le câble Ethernet qui relie ces équipement à votre box internet ou à votre commutateur réseau.

Il existe deux méthodes pour écouter le trafic qui circule sur un câble Ethernet :

  • La fonctionnalité « port miroir » (port mirroring en anglais) d’un commutateur réseau. Cette fonctionnalité permet de dupliquer le trafic réseau reçu sur un port vers un autre port du commutateur sur lequel on branche un dispositif d’écoute (PC avec Wireshark par exemple).
  • Utiliser le principe de dérivation du câble avec un « T ». Il s’agit tout simplement de relier physiquement les paires du câble Ethernet aux paires d’un autre câble sur lesquelles sera branché le dispositif d’écoute.
Principe de la dérivation en « T »

Afin d’être plus pratique à utiliser, le dispositif présenté dans ce tutoriel utilise des connecteurs RJ45 sur lesquels nous connecterons les deux appareils qui communiquent ensemble ainsi que le dispositif d’écoute.

TAP réseau

Un TAP réseau est un dispositif qui permet d’écouter le trafic qui circule dans un câble réseau. Il existe deux familles de TAP pour câble Ethernet : le TAP passif et le TAP actif. Dans ce tutoriel, nous allons réaliser un TAP passif qui permet d’écouter le trafic qui circule dans un câble réseau cuivre. De par sa conception, un TAP passif cuivre ne permet d’écouter que des réseaux 10BASE-T (10 Mbit/s) et 100BASE-TX (100 Mbit/s). Un TAP passif ne permet pas d’écouter un réseau 1000BASE-T (1 Gbit/s).

TAP actif

Un TAP actif est un équipement électronique qui recopie le trafic qui transite sur ses 2 ports « Network » et les met à disposition sur les ports « Monitor/Tool ». Un TAP actif est généralement prévu pour ne pas interrompre le trafic réseau même si il perd son alimentation électrique ou tombe en panne. Ce type d’équipement est assez coûteux mais il permet d’écouter le trafic sur des réseaux 10 Mbit/s, 100 Mbit/s, 1 Gbit/s et même 10 Gbit/s pour certains modèles.

tap reseau gigamon
TAP réseau actif de la marque Gigamon®

TAP passif

Un TAP passif n’a pas besoin d’alimentation ni de circuit électronique complexe, il permet tout simplement un dérivation physique des pairs de fils du câble Ethernet. Son intérêt est son faible coût et sa facilité de réalisation.

Le cas d’utilisation standard est d’écouter le trafic qui circule sur le câble reliant un commutateur (switch) et un ordinateur.

On souhaite écouter le trafic entre qui circule entre le commutateur et l’ordinateur

Pour cela il suffit de placer un TAP réseau entre l’ordinateur et le commutateur, comme sur le schéma suivant. Vous remarquez qu’il faut 4 câbles :

  • Un câble reliant le commutateur au connecteur A du TAP
  • Un câble reliant l’ordinateur au connecteur B du TAP
  • Deux câbles reliant le dispositif d’écoute aux connecteurs TAP1 et TAP2 du TAP
TAP réseau inséré entre l’ordinateur et le commutateur et permettant d’écouter le trafic entre les deux équipements

Dans le cas normal (utilisation de câbles droits, ordinateur en MDI et commutateur en MDIX), on écoute le trafic reçu par l’ordinateur sur le TAP1 et le trafic émit par l’ordinateur sur le TAP2.

Pourquoi faut-il 2 câbles pour écouter le trafic 10/100BASE-T?

Comme vous pouvez le comprendre dans mon article sur Ethernet, un équipement reçoit les trames Ethernet sur une paire de fils (broches 3 et 6 du connecteur RJ45) et émet les trames Ethernet sur une autre paire de fils (broches 1 et 2 du connecteur RJ45).

Les équipements qui vont être utilisés pour écouter le trafic vont également le faire via un câble Ethernet, et ils vont pour cela utiliser la paire de fils reliée aux broches 3 et 6 (RX) de leur connecteur RJ45. Les broches 1 et 2 (TX) des connecteurs des équipements qui écoutent le trafic ne sont pas reliées au TAP afin de s’assurer qu’ils ne peuvent perturber en aucune cas le réseau qui est écouté en émettant des trames Ethernet.

Schéma du TAP

On voit ci-dessous dans le schéma de notre TAP, qu’il faut simplement :

  • Relier la paire TX (broche 1 et 3) du connecteur A sur la paire RX (broche 3 et 6) du connecteur TAP2 qui sera utilisé pour écouter le trafic de A vers B.
  • Relier la paire RX (broche 3 et 6) du connecteur A sur la paire RX (broche 3 et 6) du connecteur TAP1 qui sera utilisé pour écouter le trafic de B vers A.
Schéma du TAP réseau 10/100BASE-T

Et si on n’a qu’une seule carte Ethernet pour écouter le trafic ?

Pour écouter le trafic que l’ordinateur émet et reçoit, il faut donc bien relier 2 câbles à l’équipement utilisé pour écouter le trafic. Si vous avez un ordinateur avec 2 cartes Ethernet ou une carte Ethernet avec 2 ports c’est facile. Mais si vous n’avez qu’une seule carte Ethernet il ne sera possible que d’écouter les messages que l’ordinateur reçoit ou bien ceux qu’il émet.

Sinon il est possible d’utiliser un adaptateur double RJ45 vers USB 3, qui permet de relier le TAP via le port USB de n’importe quel ordinateur.

Adaptateur double RJ45 vers USB 3

Comment forcer les équipements 1000BASE-T à basculer 100BASE-TX ?

Comme je l’ai indiqué un TAP passif permet uniquement d’écouter du trafic d’un réseau 10BASE-T et 100BASE-TX, il ne permet pas d’écouter le trafic d’un réseau 1000BASE-T à 1 Gbit/s. Dans le cas ou l’ordinateur et le commutateur communiqueraient en Gigabit Ethernet, il faut les forcer à basculer vers le mode 100 Mbit/s. Comme expliqué dans mon article sur Ethernet, pour communiquer en Gigabit Ethernet deux équipements utilisent les 4 paires de fils. Pour les faire basculer en 100BASE-TX il suffit de faire en sorte qu’ils ne puissent pas utiliser les 2 paires supplémentaires.

Le principe est donc simple, il s’agit de perturber le signal passant sur les paires 4+5 et 7+8. Ainsi les 2 équipements ne vont pouvoir communiquer que sur les paires 1+2 et 3+6. La négociation du mode Ethernet va forcer les deux équipements à se limiter au 100BASE-TX et ils ne pourront pas communiquer en Gigabit Ethernet.

Il existent plusieurs méthodes pour perturber les paires 4+5 et 7+8, voici les 3 solutions étudiées ici :

1/ Capacité entre les fils des paires 4+5 et 7+8

Cette première solution est utilisée par Michael Ossmann dans son montage Throwing Star LAN Tap. Michael relie les 4 paires entre les 2 connecteurs mais utilise un condensateur entre les fils des 2 paires 4+5 et 7+8 dont on souhaite atténuer le signal. Le condensateur va perturber le signal Ethernet sur ces 2 paires. Il force ainsi les équipements à n’utiliser que les 2 autres paires (1+2 et 3+6) et donc à passer en 100 Mbit/s.

Option 1 : Des condensateurs sont utilisés pour perturber le signal Ethernet sur les paires 4+5 et 7+8

Le condensateur ne filtre que les hautes fréquences et le TAP laisse passer les basses fréquence. Ainsi le dispositif peut être utilisé pour observer une liaison série RS-232. Ce qui est inutile pour l’usage de mon TAP car il est uniquement destiné à écouter une liaison Ethernet. Voici ce qu’indique Michael Ossmann sur son blog « Les condensateurs n’affectent pas négativement les signaux RS-232 à basse fréquence, de sorte que les huit conducteurs fonctionnent lors de la surveillance des connexions série. Bien sûr, c’est un hack laid, mais c’est un hack laid qui tient dans votre poche. »

2/ Résistance de terminaison sur les paires 4+5 et 7+8

Il est possible de terminer proprement les deux paires Ethernet non utilisées avec le principe des résistances de terminaison Bob Smith. La terminaison des paires Ethernet est une solution plus « propre » que la solution précédente basée sur la perturbation du signal Ethernet par un condensateur. De plus cette solution simplifie le schéma car il n’y a pas besoin de router les 2 paires 4+5 et 7+8 entre les connecteurs A et B.

Cependant cette solution a deux inconvénients à mon avis :

  • La terminaison des paires Ethernet inutilisées est superflue. En effet les terminaisons permettent d’éviter les réflexions sur le câble mais puisqu’il n’y aura aucun trafic sur ces paires cela semble peu utile…
  • Si l’équipement au bout du câble est alimenté en PoE (Power over Ethernet) le TAP ne va pas laisser passer ce courant sur les deux paires terminées. Si le PoE utilise les paires 4+5 et 7+8, le TAP va causer la perte de l’équipement car il ne sera plus alimenté…

3/ Court-circuiter les paires 4+5 et 7+8 tout en reliant les 2 connecteurs

Cette dernière solution me semble la plus intéressante des 3, pour les raisons suivantes :

  • Le court-circuit entre les paires 4+5 et 7+8 va empêcher la négociation du 1000BASE-T. Ces 2 paires seront vues comme en court-circuit par les 2 équipements reliés au câble.
  • Le routage est simplifié car une seule piste relie les connecteurs A et B pour les paires 4+5 et 7+8.
  • Le courant PoE pourra circuler sur toutes les paires entre le connecteur A et le connecteur B, même sur les paires 4+5 et 7+8.
Option 3 : Le TAP permet de laisser passer une alimentation PoE Mode A (alimentations sur les paires 4+6 et 7+8) entre le connecteur A et le connecteur B

Le projet KiCad

Vue 3D du PCB du TAP

Le projet KiCad est disponible sur mon GitHub en open source hardware.

Vue du schéma du TAP sous KiCad

Le schéma est assez simple, la seule complexité vient du fait qu’il faille router les paires différentielles proprement afin de ne pas perturber le signal Ethernet qui transite au travers du dispositif. Je vous invite à regarder des tutos spécifiques sur le routage de paires différentielles, mais dans le principe il faut respecter les consignes suivantes :

  • Les pistes doivent avoir une longueur identique
  • La distance entre les pistes doit être constante, les pistes doivent rester parallèles au maximum
  • Il faut éviter les angles trop importants pour le routage des pistes

Pour plus de détails, lire ce document qui décrit bien les contraintes sur le routage des paires différentielles.

Vue PCB Layout Editor du TAP sous KiCad

Le PCB calculator de KiCad permet de vérifier les paramètres à utiliser pour les pistes des paires différentielles en fonction de votre PCB afin de respecter l’impédance caractéristique d’un câble Ethernet. Voir mon article qui explique ce concept.

Calcul des dimensions requises des pistes du PCB pour avoir un impédance différentielle (Zdiff) de 100 Ohms (Zodd = 50 Ohm)

Le routage des paires différentielles impose d’utiliser un PCB 4 couches afin de pouvoir router les pistes sur les 2 couches externes et d’avoir un plan de masse sur les 2 couches internes.

PoE (Power over Ethernet)

Attention ! Le PoE utilise une tension d’environ 50 V. Si vous utilisez un câble Ethernet pour alimenter électriquement un équipement, il faut être prudent en utilisant ce TAP réseau passif.

Le test du TAP

Une fois réalisé, il ne reste plus qu’à tester le TAP.

La première vérification est de s’assurer que le TAP ne perturbe pas le réseau qu’il écoute. Pour cela un test avec un Raspberry Pi est parfait. On fera les deux tests suivants avec et sans TAP afin de comparer les résultats.

Vérification du nombre d’erreurs sur l’interface Ethernet eth0 de mon Raspberry Pi :

pi@raspberrypi4:~ $ ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped missed  mcast   
    14438857   10646    0       0       0       141     
    TX: bytes  packets  errors  dropped carrier collsns 
    371512     4150     0       0       0       0       

Vérification du débit avec un outil de mesure de la connexion Internet (votre débit internet doit être supérieur à 100 Mbit/s bien entendu pour que ce test soit significatif) :

pi@raspberrypi4:~ $ sudo apt install speedtest-cli
pi@raspberrypi4:~ $ speedtest-cli
Retrieving speedtest.net configuration...
Testing from xxx (00.00.00.00)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by xxxxx (Paris) [6.13 km]: 3.717 ms
Testing download speed................................................................................
Download: 93.75 Mbit/s
Testing upload speed......................................................................................................
Upload: 92.86 Mbit/s

Le débit avec et sans TAP est identique (environ 93 Mbit/s) et montre que le TAP ne perturbe pas la communication.

Boîtier à imprimer en 3D

Vous trouverez également sur mon GitHub le modèle de mon boîtier au format STL, prêt à être imprimé par votre imprimante 3D.

Utiliser le TAP pour surveiller son réseau local

Ce TAP se révèle très pratique pour surveiller un réseau local. Je vous invite à lire ce tutoriel pour comprendre comment mettre en place Suricata sur un Raspberry Pi et détecter les activités anormales sur votre réseau.

Votre avis compte !

Note moyenne : 4.9 / 5. Nombre de votes : 8

Pas encore de vote pour ce tutoriel

Désolé si cet article ne vous a pas intéressé

Merci de commenter afin que je puisse l’améliorer.

Dites-moi comment améliorer cette page.