Differenza tra arp -a e nmap -sn?

Sto scansionando la mia rete per trovare indirizzi IP utilizzando questi due comandi.

arp -a nmap -sn 192.168.1.0/24 

Per qualche motivo, il mio Smart Plug (e alcuni altri dispositivi Android) vengono visualizzati solo nella scansione eseguita con arp -a. Qualcuno sa il motivo?

Risposta

arp -a stampa un elenco di host / dispositivi che hanno parlato con questo host. Pertanto, se vedi la tua smart plug e altri dispositivi apparire nelloutput, è la prova che stavano parlando con questo host dallultimo riavvio del Pi o dal riavvio di il suo “networking .

In poche parole:

Il tuo nmap sta eseguendo la scansione IN ESTERNO della sottorete specificata dal Pi che lo sta facendo.

Il tuo arp loutput è un elenco di IP: mappature degli indirizzi mac di host con cui il tuo pi ha scambiato traffico.

Quindi la scansione nmap può mostrare molti host, mentre la cache arp ti dice solo host con cui il tuo Pi ha parlato

La cache arp di un Pi a 192.168.1.21 è mostrata di seguito:

arp -av gateway (192.168.1.18) at d4:ca:6d:XX:XX:5e [ether] on eth0 gateway (192.168.3.126) at d6:ca:6d:XX:XX:26 [ether] on wlan0 pi3Bplus-2 (192.168.1.22) at b8:27:eb:XX:XX:3c [ether] on eth0 

Loutput arp mostrerà ip: indirizzo mac mappature per (2) tipi di host:

A) hosts (” cioè pi3Bplus-2 “) allinterno della stessa sottorete del tuo pi che può scambiare direttamente il traffico e

B) Router (“ie gateway “) necessari per instradare il traffico verso host al di fuori della sottorete del tuo host.

Ricorda che 192.168.1. 22 è in 192.168.1. 21 “cache: è perché ho eseguito il ping di .22 da .21. Quindi una voce i n la cache arp è la prova della corretta connettività tra gli host durante la risoluzione dei problemi. Ovviamente se ICMP fosse bloccato in un firewall, il ping fallirebbe e lhost “s IP: mac non sarebbe presente nella cache arp.

Nota inoltre che la cache arp è NON persistente! Se riavvii il Pi o anche la rete, la cache arp verrà spazzata via. Cosa che potresti effettivamente voler fare durante il test.

Commenti

  • Ci sono alcune cose nella tua risposta che potrebbero creare confusione. Citazione: ” it ‘ s prova stavano parlando con questo host dallultimo riavvio del Pi o dal suo ‘ rete. ” – No, lindirizzo IP viene rimosso dalla cache dopo 5 minuti se prima non cera una connessione ‘ ta (nuova, continuata, ecc.) Se si continua una connessione dopo 10 minuti, è presente un nuova richiesta arp Anche th anche se il dispositivo remoto è attivo non lo troverai nella cache per 5 minuti.
  • Quote: ” Quindi una voce nella cache arp è prova della corretta connettività tra host ” – No, se spegni il dispositivo remoto e guardi la cache arp entro 5 minuti troverai il suo indirizzo ip. Tutto ciò può creare confusione nella risoluzione dei problemi perché le cose potrebbero funzionare ma poco tempo dopo non ‘ t, in particolare se la richiesta arp in una direzione non ‘ t funziona correttamente.
  • @Ingo arp aging dovrebbe funzionare così, ma la mia esperienza è che la garbage collection non ‘ t elimina voci non aggiornate in base al periodo definito. I test nella mia risposta sono stati eseguiti utilizzando 2 Pi ‘ indirizzati sulla stessa sottorete (collegata allo stesso switch) che si sono pingati a vicenda alcune volte & fermando i loro ping. Se ripeti questo test ed esegui ip -statistics neighbour periodicamente ‘ vedrai le voci arp contrassegnate con ” ” non aggiornati rimangono anche se più vecchi di 20 minuti! Quindi capisco il tuo punto di vista su come suppone funzioni linvecchiamento di arp, ma ripeti il ‘ vedrai che le voci possono vivere ben oltre i 5 minuti. Ottimo punto comunque !!!
  • Ho appena fatto esperienze diverse;) Lavorando con proxy arp sono incappato in una situazione in cui la richiesta arp funziona solo in una direzione, dal dispositivo remoto al RasPi. La connessione funzionava solo quando il dispositivo remoto si collegava al RasPi – per 5 min.Il contrario a volte ha funzionato (entro 5 minuti dopo la connessione da remoto) ea volte non ‘ t. È stato molto difficile trovare questo errore intermedio (risolto con modalità promiscua).
  • Comunque – cosa mostra la nostra discussione e cosa credo: chiedere alla cache arp gli indirizzi ip non è una soluzione di salvataggio, a meno che tu eseguire il ping dellindirizzo di trasmissione prima di esaminare la cache arp. Ma questa ‘ è una possibilità che non suggerirò a causa del carico di rete.

Risposta

Questa non è una domanda specifica per Raspberry Pi. Ad ogni modo, darò una risposta dettagliata perché trovare lindirizzo ip di un Raspberry Pi è una domanda e un problema molto frequenti qui.

nmap è uno scanner di rete e fa quello che ti aspetti: scansiona attivamente la rete alla ricerca di dispositivi.

Il comando arp (è meglio usare ip neighbor) non è uno scanner. Mostra solo il contenuto della cache arp locale.

Per stabilire connessioni ethernet, viene utilizzato il protocollo arp. Chiede quali dispositivi ethernet con indirizzo mac hanno quale indirizzo IP. La mappatura trovata dellindirizzo MAC nellindirizzo IP viene archiviata nella cache arp locale, per impostazione predefinita per 5 minuti. Questa mappatura ha luogo per ogni connessione stabilita, anche quando il dispositivo remoto non risponde alle query ping. Ma questo implica anche che non trovi un dispositivo nella cache arp se non è stata “t effettuata una connessione negli ultimi 5 minuti prima.

Il tuo comando nmap -sn 192.168.1.0/24 eseguire solo una semplice scansione del ping con la scansione delle porte disabilitata. Questo non troverà i dispositivi che sopprimono le risposte al ping. Ciò potrebbe far sì che tu trovi gli indirizzi IP nella cache arp ma non lo trovi con la scansione ping attiva. Puoi provare a usare:

rpi ~$ nmap -Pn 192.168.1.0/24 

Questo eseguirà la scansione delle prime 1000 porte su tutti i 255 indirizzi ip della rete. Ovviamente questo richiederà molto tempo. Puoi considerare di utilizzare solo una porta per eseguire la scansione o utilizzare altre opzioni per nmap per trovare i tuoi dispositivi.

Answer

Facendo riferimento al altre risposte qui, ho creato questo script per trovare lindirizzo IP del mio pi:

Si aspetta che la variabile dambiente RASPI_MAC_ADDR sia impostata (lindirizzo MAC del il tuo pi). Questo utilizza arp per cercare i valori memorizzati nella cache, altrimenti esegue nmap per provare a scoprirlo.

#!/bin/bash search_for_pi() { PI_IP_ADDR_LINE="$(arp -a | grep -m1 "$RASPI_MAC_ADDR")" } # run `arp -a` to find the pi"s mac address readonly RASPI_MAC_ADDR="${RASPI_MAC_ADDR:?Could not find RASPI_MAC_ADDR environment variable}" search_for_pi [[ -z "$PI_IP_ADDR_LINE" ]] && { # if the pi IP is not in cache, run an outward nmap scan to try and find it nmap -sP 192.168.1.0/24 >&2 search_for_pi [[ -z "$PI_IP_ADDR_LINE" ]] && { printf "Couldn"t find a device on the network with the mac address: %s\n" "${RASPI_MAC_ADDR}" >&2 exit 1 } } grep -oP "\([\d\.]+\)" <<<"$PI_IP_ADDR_LINE" | tr -d "()" 

Loutput nmap viene reindirizzato a STDERR, quindi posso fare:

alias pi="ssh pi@$(findpi-ip)"

Script aggiornato here .

Commenti

  • La domanda è: per qualche motivo, il mio Smart Plug (e alcuni altri dispositivi Android) vengono visualizzati solo nella scansione eseguita con arp -a. Qualcuno sa il motivo?
  • Sono quelli sulla gamma 192.168.1 …. o sulla gamma 10.1.10 ….? Puoi vedere il mio script aggiornato qui

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *