Existe uma maneira de consultar todos os endereços MAC em uma rede?

Existe uma maneira de consultar todos os endereços MAC em uma rede?

Eu sei que esta questão foi sinalizada como "fora do tópico" e "não profissional", mas ao criar um gateway ou IDS, isso pode ser bastante relevante. Além disso, o Google não encontra nada utilizável...

Existe uma coisa chamada tabela MAC (ou tabela CAM) em cada switch comum (de acordo com este artigo:https://en.wikipedia.org/wiki/CAM_Table)

Se o switch souber exatamente a rota para um endereço MAC e os anunciar em todas as portas (parece lógico) ...

  • Assumindo uma caixa Linux, é possível consultartodoEndereço MAC na rede em uma interface especificada?

Responder1

Eu geralmente instaloarpalertem um sistema para esse fim. É um daemon que usa libcap para monitorar o tráfego. Ele mantém um banco de dados de endereços MAC por interface. Ele também pode observar alguns tipos incomuns de eventos e enviar notificações. Ele monitora o último uso e manterá o banco de dados durante as reinicializações (em comparação com apenas a configuração de uma interface de ponte).

Responder2

Bem, para ser justo, todo mundo diz "arp -a", mas não estou satisfeito com esta resposta, pois ela apenas mostra oconhecidoEndereços MAC (e seus IP correspondentes).

Listartodosendereços em uma porta, você precisará alterar sua configuração de rede atual. Usaremos o pacote bridge-utils, mas qualquer outra implementação de bridge (ex.: OpenvSwitch) pode fazer isso. A descrição a seguir funcionará em sistemas baseados em Debian:

  1. Primeiro você deve instalar o pacote bridge-utils.
  2. Defina a porta selecionada com ifdown
  3. Crie uma ponte na porta onde deseja listar os endereços MAC

Vamos supor que a porta seja eth0 e o endereço IP seja dinâmico. Em /etc/network/interfaces deve aparecer o seguinte

allow-hotplug eth0
iface eth0 inet manual

auto br0
iface br0 inet dhcp
  bridge-ports eth0
  bridge_fd 0
  bridge_stp off

Para aplicar essas alterações, você pode usar ifup na eth0 e depois no br0 ou simplesmente reiniciar.

  1. Agora você pode usar o brctl para consultar a porta

Ele listará a tabela MAC completa:

root@debian:~# brctl showmacs br0

A saída deve ser semelhante a esta:

port no mac addr                is local?       ageing timer
  1     ab:cd:ef:01:02:03       no                 1.72
  1     ab:cd:ef:01:02:04       no                25.52
  1     ab:cd:ef:01:02:05       no                 2.64
  1     ab:cd:ef:01:02:06       no                10.67
  1     ab:cd:ef:01:02:07       yes                0.00

informação relacionada