Resolvendo o endereço MAC do endereço IP no Linux

39

Eu preciso escrever um script bash em que eu tenho que criar um arquivo que contém os detalhes dos endereços IP dos hosts e seu mapeamento com os endereços MAC correspondentes.

Existe alguma maneira possível de descobrir o endereço MAC de qualquer host (remoto) quando o endereço IP do host estiver disponível?

Mandar Shinde
fonte

Respostas:

36

Se você apenas deseja descobrir o endereço MAC de um determinado endereço IP, pode usar o comando arppara procurá-lo, depois de executar o ping no sistema uma vez.

Exemplo

$ ping skinner -c 1
PING skinner.bubba.net (192.168.1.3) 56(84) bytes of data.
64 bytes from skinner.bubba.net (192.168.1.3): icmp_seq=1 ttl=64 time=3.09 ms

--- skinner.bubba.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 3.097/3.097/3.097/0.000 ms

Agora procure na tabela ARP:

$ arp -a
skinner.bubba.net (192.168.1.3) at 00:19:d1:e8:4c:95 [ether] on wlp3s0

dedo

Se você deseja varrer toda a LAN para endereços MAC, pode usar a ferramenta de linha de comando fingpara fazer isso. Normalmente, ele não está instalado, então você deve fazer o download e instalá-lo manualmente.

$ sudo fing 10.9.8.0/24

    dedo exemplo

Usando ip

Se você achar que não possui os comandos arpou fingdisponíveis, use o comando iproute2 ip neighpara ver a tabela ARP do seu sistema:

$ ip neigh
192.168.1.61 dev eth0 lladdr b8:27:eb:87:74:11 REACHABLE
192.168.1.70 dev eth0 lladdr 30:b5:c2:3d:6c:37 STALE
192.168.1.95 dev eth0 lladdr f0:18:98:1d:26:e2 REACHABLE
192.168.1.2 dev eth0 lladdr 14:cc:20:d4:56:2a STALE
192.168.1.10 dev eth0 lladdr 00:22:15:91:c1:2d REACHABLE

Referências

slm
fonte
Sei que essa é uma resposta antiga, mas você tem alguma ideia de como o Fing é implementado? Estou tentando aprender sobre essa camada de rede e as ferramentas para monitorá-la.
akaphenom
1
@akaphenom Se você tiver novas perguntas, por favor, não hesite em comentar.
Slm
mas não é arppreterido? Como posso fazer isso ip?
math2001
1
@ math2001 - não foi há 5 anos, adicionei um exemplo mostrando como usar ip.
slm
8

Você pode usar o arpcomando:

arp -an

Mas você só pode usar esse comando na LAN, se quiser descobrir o endereço MAC de qualquer host remoto, talvez seja necessário usar alguma ferramenta para capturar o pacote tcpdumpe analisar o resultado.

cuonglm
fonte
2
tcpdump(8)mostrará apenas os MACs locais (ou seja, o MAC do último roteador de perna). Os cabeçalhos da camada MAC dos pacotes de entrada são removidos pelo roteador e os novos são adicionados ao pacote de saída.
vonbrand
5

Isso é da minha pergunta e resposta no askubuntu .

Você pode usar o comando

   sudo nmap -sP -PE -PA21,23,80,3389 192.168.1.*

nmap:Ferramenta de exploração de rede e scanner de segurança / porta. Do manual:

-sP(Ignorar varredura de porta). Essa opção informa ao Nmap para não fazer uma verificação de porta após a descoberta do host e imprimir apenas os hosts disponíveis que responderam à verificação. Isso geralmente é conhecido como "verificação de ping", mas você também pode solicitar que os scripts de host traceroute e NSE sejam executados. Por padrão, essa é uma etapa mais intrusiva que a varredura de lista e geralmente pode ser usada para os mesmos fins. Permite o reconhecimento leve de uma rede alvo sem atrair muita atenção. Saber quantos hosts estão ativos é mais valioso para os invasores do que a lista fornecida pela varredura de lista de cada IP e nome de host.

-PE; -PP; -PM (Tipos de ping do ICMP). Além dos tipos incomuns de descoberta de host TCP, UDP e SCTP discutidos anteriormente, o Nmap pode enviar os pacotes padrão enviados pelo programa de ping onipresente. O Nmap envia um pacote ICMP tipo 8 (solicitação de eco) para os endereços IP de destino, esperando um retorno do tipo 0 (resposta de eco) dos hosts disponíveis. Infelizmente para os exploradores de rede, muitos hosts e firewalls agora bloqueiam esses pacotes, em vez de responder como exigido pela RFC 1122 [2]. Por esse motivo, as verificações apenas por ICMP raramente são confiáveis ​​o suficiente contra alvos desconhecidos na Internet. Porém, para administradores de sistema que monitoram uma rede interna, eles podem ser uma abordagem prática e eficiente. Use a opção -PE para ativar esse comportamento de solicitação de eco.

-A(Opções de verificação agressiva). Esta opção permite opções avançadas e agressivas adicionais.

21,23,80,3389 Portas para pesquisar

192.168.1.* Intervalo de IPs. substitua pelo seu.

Maythux
fonte
-sP é para "scanPing", também é -sn nunca nas versões do nmap que parece.
06
4

arping

arping -I <interface> -c 1 <host>

O comando deve retornar o endereço MAC na resposta. Algo como,

$ arping -I eth0 -c1 192.168.1.2
ARPING 192.168.1.2 from 192.168.1.5 eth0
Unicast reply from 192.168.1.2 [08:01:27:38:EF:32]  0.746ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

arpingé fornecido pelo pacote iputils-arpingno Debian.

homem gancho
fonte
arpingtambém precisa saber qual interface usar, com a -Iopção
Stephen Kitt
Você pode usar arping -f para sair após a primeira resposta.
Ryan Griggs