Listar todos os endereços MAC e seus endereços IP associados na minha rede local (LAN)

84

Como posso listar todos os endereços MAC e seus endereços IP associados das máquinas conectadas à minha rede local (LAN)?

Maythux
fonte
6
é importante entender que, assim como você vai throught um nível 3 camada de rede equipement não será possível obter o MAC e IP por trás deste equipement
kiwy
Por que você coloca !após um ponto de interrogação? Não é necessário e usado apenas nos casos em que a pergunta é gritada ou de alta importância.
kiri
@ minerz029 Obrigado por esclarecer que
Maythux
1
sudo tail -f /var/log/messages, desconecte e reconecte o dispositivo no qual você está tentando encontrar o endereço MAC ou grep / leia as mensagens para encontrar o dispositivo.
IceArdor 30/03

Respostas:

63

Você pode usar o utilitário Nmap para isso. O Nmap é um utilitário de scanner de rede gratuito.

Tente apenas:

sudo nmap -sn 192.168.1.0/24

Substitua seu identificador de rede e máscara de sub-rede.

Como encontrar um ID de rede e uma máscara de sub-rede

Use o comando ip a:

bash~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether c4:85:08:94:ee:9a brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0
    inet6 fe80::c685:8ff:fe94:ee9a/64 scope link valid_lft forever preferred_lft forever

Aqui no ponto 2, eu tenho o wlan0dispositivo. Ele diz inet 192.168.3.66/24 brd 192.168.3.255 scope global wlan0, endereço IP: 192.168.3.66, máscara de sub-rede: 24. O ID da rede é 192.168.3.0apenas substitua o último número por 0.

Ou como o homem nmapdiz:

sudo nmap -sn 192.168.1.0/24

Aqui está uma pequena citação da página de manual, nmap (1) :

-sn (No port scan)

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 endereço IP e nome de host.

Os administradores de sistemas geralmente acham essa opção valiosa também. Ele pode ser facilmente usado para contar as máquinas disponíveis em uma rede ou monitorar a disponibilidade do servidor. Isso geralmente é chamado de varredura de ping e é mais confiável do que executar o ping no endereço de transmissão, porque muitos hosts não respondem às consultas de transmissão.

A descoberta de host padrão feita -snconsiste em uma solicitação de eco ICMP, TCP SYN na porta 443, TCP ACK na porta 80 e uma solicitação de carimbo de data / hora ICMP por padrão.

Quando executado por um usuário sem privilégios, apenas pacotes SYN são enviados (usando uma connectchamada) para as portas 80 e 443 no destino.

Quando um usuário privilegiado tenta verificar os alvos em uma rede Ethernet local, as solicitações de ARP são usadas, a menos que tenha --send-ipsido especificado. A -snopção pode ser combinada com qualquer um dos tipos de sonda de descoberta (as -P*opções, excluindo -Pn) para maior flexibilidade.

Se alguma dessas opções de tipo e número de porta for utilizada, as análises padrão serão substituídas. Quando firewalls rígidos existem entre o host de origem executando o Nmap e a rede de destino, recomenda-se o uso dessas técnicas avançadas. Caso contrário, os hosts podem ser perdidos quando o firewall descarta os probes ou suas respostas.

Em versões anteriores do Nmap, -snera conhecido como -sP.

c0rp
fonte
Não está funcionando
Maythux
4
Isso precisará ser ajustado para que 192.168.1.0/24seja alterado para o intervalo de endereços IP do usuário.
kiri
@ minerz029 certeza que alterou o IP
Maythux
Não sei se esse é o motivo, mas no Linux eu uso nmap -sP 192.168.1.0/24para uma verificação de ping.
Tiktak
2
Você sabe por que os privilégios de root são necessários para ler os endereços MAC da rede?
Michael Aquilina
45

arpvai lentamente voltar-lhe uma lista de endereços MAC ativos e IPs ou seus nomes de host se eles têm um. Se você deseja que ele acelere, você pode usar o arp -nque deve ignorar as pesquisas de DNS. Se você precisar analisá-lo em algo arp -an, pulará as colunas de largura fixa.

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.10.0.11               ether   00:04:ff:ff:ff:d0   C                     eth0
10.10.0.16               ether   00:04:ff:ff:ff:a6   C                     eth0
raspbmc.local            ether   00:1f:ff:ff:ff:9c   C                     eth0
10.10.0.19               ether   00:04:ff:ff:ff:c9   C                     eth0
10.10.0.12               ether   bc:f5:ff:ff:ff:93   C                     eth0
10.10.0.17               ether   00:04:ff:ff:ff:57   C                     eth0
10.10.0.1                ether   20:4e:ff:ff:ff:30   C                     eth0
HPF2257E.local           ether   a0:b3:ff:ff:ff:7e   C                     eth0
10.10.0.15               ether   00:04:ff:ff:ff:b9   C                     eth0
tim                      ether   00:22:ff:ff:ff:af   C                     eth0
10.10.0.13               ether   60:be:ff:ff:ff:e0   C                     eth0

Caso contrário, seu roteador poderá fornecer uma idéia dos dispositivos ativos (a maioria deles).


Editar Pelo comentário de davidcl, esta resposta não é tão perfeita quanto eu esperava.

arpdepende de algum contato anterior para funcionar. No entanto, na minha opinião, os dispositivos modernos são todos tão falantes (você realmente deve assistir o wireshark - é uma educação) no nível da transmissão que é improvável que um dispositivo esteja presente na rede sem ao menos responder a uma transmissão. (Para ter certeza de que você pode executar o ping em todos os dispositivos da rede com 10.10.0.255 primeiro e provavelmente obterá 90% + dos dispositivos.)

Para lhe dar uma idéia do que quero dizer, 10.10.0.16 acima é o nosso PVR. Não há interação direta entre meu PC e o PVR e não há serviços em execução no PVR (também não há UPNP / DLNA).

Apenas para discutir rapidamente os argumentos ...

  • Mas e os hackers da minha rede?! 1
    Eles também podem bloquear pings do ICMP. Eles podem bloquear todas as respostas para todos os tipos de verificação.
  • Ah, mas certamente nmapainda é a melhor solução possível.
    Quando executado aqui, ainda está faltando quatro dispositivos. Quatro dispositivos que estão ativos na rede. Ou eles não estão respondendo aos pings ou o nmap não está esperando o tempo suficiente para eles responderem ... eu não sei. nmapé uma ótima ferramenta (especialmente para a verificação de portas que você pode fazer a seguir), mas ainda é um pouco desajeitada (e um pouco lenta) para esse problema. E não me chame de Shirley.
Oli
fonte
1
SE eu mudar meu ID MAC com o trocador de mac, ele pode mostrar o original?
rɑːdʒɑ
2
@BYEAskUbuntu se você usa o trocador de MAC, seu MAC é o que você definiu. Para todos os usuários de rede, sua origem geralmente é desconhecida; portanto, não pode.
Ruslan
3
@Ruslan Isso é apenas paranóico eu apagá-los ... Tenho certeza que seria bastante difícil para um indivíduo fazer alguma coisa com eles, mas você nunca sabe quem está perseguindo você.
Oli
9
Estou surpreso com esta resposta. "arp" não mostra uma lista de endereços MAC ativos na rede local. "arp" mostra uma lista de endereços MAC correspondentes às máquinas que interagiram com a máquina em que está sendo executada. Se não houver comunicação entre a máquina local e outra máquina na rede recentemente, essa máquina não aparecerá na lista "arp".
Davidcl
5
Acabei de fazer um teste rápido na minha rede e o arp está exibindo apenas cerca de 25% dos dispositivos que existem. Se o computador que está executando o arp não recebeu um pacote de outro dispositivo, ele não estará na lista de arp. Eu estaria interessado em saber mais sobre os dispositivos que o nmap não conseguiu detectar na sua rede; existem maneiras de se esconder do nmap, mas eu achei a varredura padrão do nmap bastante eficaz. Dito isso, não há resposta à prova de falhas porque, se um dispositivo não está gerando tráfego e não está respondendo a solicitações, ele é invisível - mas a maioria dos dispositivos responde a algum tipo de solicitação.
Davidcl
37

Eu uso arp-scanpara isso:

$ sudo arp-scan -l
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.2.1     ec:1a:59:61:07:b2       (Unknown)
192.168.2.50    90:59:af:3d:6d:bc       (Unknown)
192.168.2.51    3c:97:0e:48:22:12       (Unknown)
192.168.2.52    00:18:31:87:8f:b0       Texas Instruments

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.8.1: 256 hosts scanned in 1.282 seconds (199.69 hosts/sec). 4 responded
jcrigby
fonte
1
Se você gostaria de especificar a interface de rede, como wireless, em seguida, usar este comandosudo arp-scan -l -I wlan0
HarlemSquirrel
Sim, o arp-scan é realmente a "melhor ferramenta para o trabalho".
mivk
Isso não está funcionando para mim ... o dispositivo não está respondendo por algum motivo.
Andrew Wagner
para que o arp-scan funcionasse, eu tinha que fazer brew install arp-scanno OSX El Capitan.
jamescampbell
17

Você pode usar arp-scan.

Instale usando este comando:

sudo apt-get install arp-scan

Para listar todos os endereços IP e endereços MAC associados, use:

sudo arp-scan --interface=eth0 --localnet

A saída terá a seguinte aparência:

Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 16777216 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.3 38:60:77:29:31:36   (Unknown)
192.168.1.8 4c:72:b9:7c:bb:7e   (Unknown)
192.168.1.110   00:15:17:5f:d2:80   Intel Corporate
192.168.1.111   00:ff:88:5f:fd:f0   (Unknown)
192.168.1.153   00:15:17:5f:d2:82   Intel Corporate
192.168.1.180   52:54:00:70:04:02   QEMU
192.168.1.199   52:54:00:fe:7f:78   QEMU
Peter Mortensen
fonte
1
Esta não é encontrar um dispositivo que não tem um ip ainda ...
Andrew Wagner
9

GUI

Você pode tentar avahi-discoverInstale o avahi-discover .

  1. Instale-o com este comando (ou clicando no link acima):

    sudo apt-get install avahi-discover
    
  2. Execute o Avahi Zeroconf Browser ou avahi-discoverem um terminal.
  3. Você deverá ver uma janela com uma lista de dispositivos na sua rede local.
    O endereço MAC será a string entre colchetes.

Linha de comando

Você pode usar este comando em um terminal:

avahi-browse -a -t -d local

Está instalado por padrão.

kiri
fonte
1
Isso funciona para mostrar o endereço MAC de uma máquina que não está executando nenhum tipo de serviço?
Eliah Kagan
3
No meu caso, isso não funciona para todos os dispositivos da rede. É bem legal, mas não mostra clientes idiotas sem os serviços avahi / upnp.
Oli
5
  1. Primeiro, faça uma varredura na rede para ver quais hosts estão acessíveis / on-line usando nmap -sn 1.2.3.4/24oufping -g 1.2.3.4/24

  2. Em seguida, consulte o endereço MAC correspondente ao endereço IP usando arping. Pseudo-código adiante:

    for i in $(cat list-of-reachable-hosts)
    do 
        arping $i
    done
    
  3. Cheatery: consulte o arp-cache do seu switch local; que deve lhe dar uma boa visão geral ...

far4d
fonte
3

Nos casos em que o protocolo NetBIOS é suportado, prefiro usar

nbtscan 192.168.1.1-192.168.1.255.

Silveri
fonte
5
Isso detecta apenas clientes que suportam o protocolo NetBIOS (Windows e Linux + Samba).
Eric Carvalho
2

Fiquei intrigado com este post. Eu tive a necessidade disso.

Eu escrevi um script de shell que analisa a arpsaída usando awkinstruções e gera saída HTML. Se você executar o script e redirecionar a saída para um arquivo HTML, ficará com um arquivo HTML que mostra o IP, o endereço MAC completo e um link para a página de pesquisa da IEEE OUI. Isso ajuda a determinar o cliente por meio do fabricante da NIC.

printf "<html>\n<title>LAN IPs and their MACs</title>\n<body>\n"
arp -a | awk '{print $2,$4}' | awk -F'[().: ]' '{print $2"."$3"."$4"."$5,$6,$7":"$8":"$9":"$10":"$11":"$12,"<a href=\"http://standards.ieee.org/cgi-bin/ouisearch?"$7$8$9"\">IEEE OUI Lookup "$7"-"$8"-"$9"</a><br>"}'
printf "\n</body>\n</html>\n"

Ajuda a executar uma nmapvarredura na sua LAN primeiro, para que você tenha entradas na tabela ARP. Espero que a formatação seja traduzida. Você pode aprimorar isso para ter o texto em um formato de tabela.

user38537
fonte
2

Depois de algum trabalho e pesquisa, descobri este comando:

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

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

-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 hosts TCP, UDP e SCTP discutidos anteriormente, o Nmap pode enviar os pacotes padrão enviados pelo programa onipresente de ping. 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
1

Depois de me cansar de usar o nmap e o ARP combo, criei este pequeno programa que consulta todos os endereços MAC para um determinado intervalo de IPs: https://github.com/drkblog/findmacs

drk.com.ar
fonte
Consulta sequencialmente ou em paralelo?
Peter Mortensen
0

você pode usar arp.

Isso mostrará o MAC e os IPs.


fonte
Isso funciona apenas para os dispositivos que foram conectados (por exemplo, por um ping).
Peter Mortensen