The linux box as transparent bridge
Sometime we can not mirror a switch port in order to access the data that are traveled on the wire... In this case how can we listen the data traffic? You can install a hub but on modern networks hubs that can sustain actual traffic speed is hard or even impossible to find.
So, what is the solution?
Well, the might Linux is here to help you. Of course, you need a laptop or another device (Raspberry PI?!?) with at least 3 network interfaces.
Actually, we will transform the linux box into a bridge
Before setting the bridge interface with brctl you should install the tools contained by bridge-utils package.
For debian like distros all you have to do is:
As root: apt-get install bridge-utils
This is a bridge script. Notice that only eth1 and eth2 interfaces are include into the bridge. The eth0 is left for it's usual purpose.
#!/bin/bash
/etc/init.d/networking stop
#Initializing bridge and interfaces
ifconfig br0 down
ifconfig eth1 down
ifconfig eth2 down
brctl delif br0 eth1
brctl delif br0 eth2
brctl delbr br0
sleep 1
echo "Bridge should be empty by now..."
brctl show
echo
echo
#Starting the bridge
echo "Bridge construction started..."
ifconfig eth1 0.0.0.0 up
ifconfig eth2 0.0.0.0 up
brctl addbr br0
brctl addif br0 eth1
brctl addif br0 eth2
brctl stp br0 off
echo "Bridge rised!"
echo "1" > /proc/sys/net/ipv4/ip_forward
ifconfig br0 up
brctl show
brctl showstp br0
brctl showmacs br0
# END script
Now all you can do is to interconnect your linux box in the middle of a network connection as follows (for ASCII art fans):
+----------------+ +--------------+ +-------------+
| | | | | |
| Local network +-----+ Linux box +-----+ Workstation |
| | | | | |
+----------------+ +--------------+ +-------------+
The bridge is transparent and you should not worry about what interface (we are talking only about eth1 and eth2) should be connected to the workstation or to the local network.
Now, you can dig into the network traffic listening the br0 interface... The tcpdump will show his magic. :)