Existe uma maneira fácil de fazer uma busca de host pelo endereço MAC em uma LAN?

2

Existe uma maneira fácil (no Linux) para implementar a pesquisa de host por endereço MAC? Em pequenas redes locais, é fácil usar, por exemplo, arp-scan para descobrir o endereço IP de algum dispositivo.

Normalmente, uso zeroconf / avahi ou roteadores fornecendo DNS por nomes de host, mas às vezes não posso confiar em tais recursos.

Então é possível, por alguma mágica bash ou ferramenta pequena, obter os nomes de host de resolução do sistema que codificam esses endereços MAC, como por exemplo a3_af_32_44_68_c9.local , para obter uma pesquisa de host mais confiável em redes pequenas?

    
por dronus 26.03.2015 / 19:55

2 respostas

1

Tente usar um comando arp assim:

arp -n | grep [set MAC address here] | awk '{print $1}'

Ou usando seu endereço MAC de exemplo como este:

arp -n | grep a3.af.32.44.68.c9 | awk '{print $1}'
  • O arp -n listará todos os dispositivos dos quais arp está ciente, com endereços numéricos sem nomes de host ou qualquer outra coisa.
  • O grep simplesmente usará grep para filtrar apenas itens que correspondam ao endereço MAC que você deseja pesquisar.
  • O awk '{print $1}' simplesmente retornará o endereço IP do valor retornado pela combinação grep / awk que o precedeu.

O resultado líquido disso é que, se o endereço MAC corresponder, você obterá o endereço IP conectado a esse endereço MAC.

    
por 27.03.2015 / 08:19
1

Acho que você está se deparando com o que acredito ser uma séria má característica do servidor isc-dhcp. Este programa registra o endereço Ethernet de cada dispositivo que já viu e o endereço IP que ele atribuiu a ele. Mas nunca usa essas informações para manter os mesmos dispositivos em endereços IP estáveis. Em vez disso, faz a suposição de que não há endereços IP suficientes disponíveis e reutiliza endereços preferencialmente.

A única maneira que encontrei para contornar isso é fazer com que seu servidor DHCP sempre atribua um endereço IP específico a cada dispositivo que você possui. Dessa forma, você tem o melhor dos dois mundos ... tudo é atribuído a um IP com dhcp, mas esse IP nunca muda.

OTOH, se você realmente quiser o endereço IP atribuído a um determinado endereço MAC, o melhor que você vai fazer sem ajuda externa é verificar a sub-rede. Se você tentar fazer ping de todos os endereços IP (locais), a tabela arp arp -a incluirá todos os endereços MAC e seus IPs atribuídos. Existe até um comando especial para este arp-scan --localnet que esquece de fazer o PING. NOTA: isso funciona mesmo se eles ignorarem os pacotes PING porque eles não podem ignorar as solicitações ARP que são enviadas primeiro.

Com ajuda externa, você pode fazer a pesquisa no servidor DHCP este DHCP O cliente , por exemplo, permite consultar qualquer MAC desejado. Claro que vai alocar também como efeito colateral.

Aqui está um exemplo usando arp-scan.

set -e
grep -v 'mac.local #DYN' /etc/hosts > /etc/hosts.new

arp-scan --localnet -qg |
    grep ':..:..:..:..:' |
    sed -e 's/:/_/g' -e 's/$/.mac.local #DYN/' >> /etc/hosts.new

[ -s /etc/hosts.new ] && {
    cmp -s /etc/hosts.new /etc/hosts ||
    mv /etc/hosts.new /etc/hosts
}

Obviamente, isso só funciona para máquinas na mesma sub-rede. O nome mudará se a placa Ethernet for substituída ou se a máquina for clonada para um novo hardware. Os endereços MAC podem ser alterados manualmente com o comando ifconfig para tarefas como 'MAC Cloning', que podem ser exigidas por modems DSL ou por ligações de interface ou similares.

    
por 26.03.2015 / 22:36

Tags