Risoluzione dell'indirizzo MAC dall'indirizzo IP in Linux


39

Ho bisogno di scrivere uno script bash in cui devo creare un file che contiene i dettagli degli indirizzi IP degli host e la loro mappatura con gli indirizzi MAC corrispondenti.

Esiste un modo possibile con cui posso trovare l'indirizzo MAC di qualsiasi host (remoto) quando è disponibile l'indirizzo IP dell'host?

Risposte:


36

Se vuoi solo scoprire l'indirizzo MAC di un determinato indirizzo IP puoi usare il comando arpper cercarlo, dopo aver eseguito il ping del sistema 1 volta.

Esempio

$ 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

Ora cerca nella tabella ARP:

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

fing

Se si desidera eseguire lo sweep dell'intera LAN per gli indirizzi MAC, è possibile utilizzare lo strumento da riga di comando fingper farlo. Di solito non è installato, quindi dovrai scaricarlo e installarlo manualmente.

$ sudo fing 10.9.8.0/24

    esempio di fing

Utilizzando ip

Se trovi che non hai i comandi arpo fingdisponibili, puoi usare il comando iproute2 ip neighper vedere invece la tabella ARP del tuo 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

Riferimenti


So che questa è una vecchia risposta, ma hai qualche idea su come viene implementata Fing? Sto cercando di conoscere questo livello di rete e gli strumenti per monitorarlo.
Akaphenom

1
@akaphenom Se hai nuove domande, per favore, per favore, i commenti non sono fatti per questo.
slm

ma non è arpdeprecato? Come posso farlo con ip?
Math2001,

1
@ math2001 - non è stato 5 anni fa, ho aggiunto un esempio che mostra come usare ip.
slm

8

Puoi usare il arpcomando:

arp -an

Ma puoi usare questo comando solo nella LAN, se vuoi scoprire l'indirizzo MAC di qualsiasi host remoto, forse devi usare qualche strumento per catturare il pacchetto tcpdumpe analizzare il risultato.


2
tcpdump(8)ti mostrerà solo i MAC locali (ovvero il MAC dell'ultimo leg router). Le intestazioni di livello MAC dei pacchetti di input vengono rimosse dal router e ne vengono aggiunte di nuove al pacchetto in uscita.
vonbrand,

5

Questo è dalla mia domanda e risposta in askubuntu .

Puoi usare il comando

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

nmap:Strumento di esplorazione della rete e scanner di sicurezza / porte. Dal manuale:

-sP(Salta scansione porta). Questa opzione dice a Nmap di non eseguire una scansione delle porte dopo il rilevamento degli host e di stampare solo gli host disponibili che hanno risposto alla scansione. Questo è spesso noto come "ping scan", ma è anche possibile richiedere l'esecuzione di script traceroute e host NSE. Questo è di default un passo più invadente della scansione dell'elenco e può spesso essere usato per gli stessi scopi. Consente una leggera ricognizione di una rete target senza attirare molta attenzione. Sapere quanti host sono attivi è più prezioso per gli aggressori rispetto all'elenco fornito dalla scansione dell'elenco di ogni singolo IP e nome host.

-PE; -PP; -PM (Tipi di ping ICMP). Oltre agli insoliti tipi di rilevamento host TCP, UDP e SCTP discussi in precedenza, Nmap può inviare i pacchetti standard inviati dal programma di ping onnipresente. Nmap invia un pacchetto ICMP di tipo 8 (richiesta di eco) agli indirizzi IP di destinazione, aspettandosi un tipo 0 (risposta di eco) in cambio di host disponibili. Sfortunatamente per gli esploratori di rete, molti host e firewall ora bloccano questi pacchetti, invece di rispondere come richiesto da RFC 1122 [2]. Per questo motivo, le scansioni solo ICMP sono raramente abbastanza affidabili contro obiettivi sconosciuti su Internet. Ma per gli amministratori di sistema che controllano una rete interna, possono essere un approccio pratico ed efficiente. Utilizzare l'opzione -PE per abilitare questo comportamento della richiesta di eco.

-A(Opzioni di scansione aggressive). Questa opzione consente ulteriori opzioni avanzate e aggressive.

21,23,80,3389 Porte da cercare

192.168.1.* Gamma di IP. sostituisci con il tuo.


-sP è per "scanPing", sembra anche -sn in nessuna versione di nmap.
meawoppl

4

arping

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

Il comando dovrebbe restituire l'indirizzo MAC nella risposta. Qualcosa di simile a,

$ 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è fornito dal pacchetto iputils-arpingsu Debian.


arpingdeve anche essere indicato quale interfaccia utilizzare, con l' -Iopzione.
Stephen Kitt,

Puoi usare arping -f per uscire dopo la prima risposta.
Ryan Griggs,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.