O que você precisa fazer é colocar a máquina na rede entre essas máquinas e sua conexão com a Internet, assim:
PC1 ----\
PC2 ----+---- monitor ---- router/modem/other ---- hinterwebs
PC3 ----/
Você precisa de duas placas de rede na caixa do monitor, uma para o comutador da LAN local que as outras máquinas também conectam e outra para o roteador. A caixa do monitor seria então configurada para atuar como uma ponte transparente ou (mais fácil) realizaria NAT ( assim ) para a LAN. Você pode então usar regras extras de iptables com comentários para marcá-las para que você possa usar algo como o módulo iptables de collectd ( veja aqui ) para registrar contagens de pacotes e bytes. Você também pode usar ferramentas como bandwidthd, embora eu não tenha usado isso sozinho. Se você deseja verificar o tráfego atual em vez de registrar o tráfego para análise futura, basta usar iftop
( veja aqui , e deve estar disponível em todas as distribuições Linux) para listar o que está passando pela caixa agora.
Vendo o tráfego para todas as máquinas como você descreve, sem sentar a máquina de monitoramento entre as máquinas que você quer monitorar, realmente não é possível uma rede comutada que todas as redes modernas são. Ao usar um hub, tudo o que você tinha que fazer era deixar a placa de rede no modo promíscuo e inspecionar todo o tráfego na linha, mas com uma rede comutada, o switch garante que cada linha só receba os pacotes e não precisa de tudo.