Acho que o que você precisa é configurar sua NIC em modo promíscuo há mais de uma dúzia de ferramentas nessa página que através da filtragem ou diretamente permitirá que você faça o que quiser.
Sim, eu sei sobre o ARP, mas isso depende um pouco da conectividade da camada IP em que o sistema remoto deve ser configurado com um IP em uma sub-rede reconhecida. Existe alguma maneira de simplesmente descartar quais endereços MAC a interface viu frames Ethernet de; recentemente ou desde que a interface foi inicializada - eu não sou exigente que.
Acho que o que você precisa é configurar sua NIC em modo promíscuo há mais de uma dúzia de ferramentas nessa página que através da filtragem ou diretamente permitirá que você faça o que quiser.
Você pode fazer isso com um rastreador de eventos do kernel, como SystemTap ou LTTng . O SystemTap tem probe :: netdev.rx e o LTTng tem net_dev_receive , qualquer um dos quais deve fazer o que você deseja.
No entanto, concordo com @user. A captura de pacotes é provavelmente sua melhor aposta.
arp -an mostrará o que você está procurando. Há um tempo limite para o tempo que o MAC permanecerá na tabela.
#arp -an
? (128.46.16.1) at f8:66:f2:9c:3d:25 [ether] on br0
Realmente parece que você está solicitando o arpwatch: link
Ele manterá um banco de dados e enviará um e-mail quando ele vir novos endereços MAC em qualquer interface para a qual você configurar.
Tags ethernet linux mac-address