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.
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 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.
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
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.
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.
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.
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.
Le projet KiCad
Le projet KiCad est disponible sur mon GitHub en open source hardware.
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.
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.
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.
Bonjour
Une question pour un novice
Le TAP passif pour écouter le trafic du connecteur A vers B sans risque d’écrire peut’il être considéré comme une barrière de sécurité forte (protection H/W de type diode). Merci d’avance
Bonjour,
Oui tout à fait, les broches TX des connecteurs TAP1 et TAP2 ne sont pas reliés. L’équipement relié aux connecteurs TAP1 et TAP2 ne peut que recevoir des trames Ethernet circulant entre les connecteurs 1 et 2, en aucun cas il ne peut en émettre. Attention toutefois, il n’y a pas d’isolation galvanique sur mon dispositif.
Je pense qu’une coquille s’est glissée sur les schémas du TAP. Les connecteurs A et B ne peuvent communiquer s’ils sont câblés comme cela ! D’ailleurs c’est bien expliqué ici : https://tutoduino.fr/ethernet/
TX -> RX et non TX -> TX
Il ne s’agit pas d’une erreur, mais votre question est tout à fait légitime.
Je vous invite à lire mon article https://tutoduino.fr/ethernet/. Il explique la différence entre un câble droit et un câble croisé.
Lorsque 2 équipements identiques communiquent directement entre eux (2 ordinateurs par exemple), il faut en effet un câble croisé (RX<->TX).
Mais lorsque un équipement (ordinateur par exemple) communique avec un commutateur (switch), il faut utiliser un câble droit (RX<->RX et TX<->TX).
Merci de votre intérêt pour ce tuto !