Îmi scanez rețeaua pentru a afla adresele IP folosind aceste două comenzi.
arp -a nmap -sn 192.168.1.0/24
Din anumite motive, Smart Plug-ul meu (și alte dispozitive Android) apar numai în scanarea efectuată cu arp -a
. Știe cineva motivul?
Răspunde
arp -a
tipărește o listă cache de gazde / dispozitive care au vorbit cu această gazdă. Prin urmare, dacă vedeți fișa inteligentă și alte dispozitive care apar în ieșire, este dovada că vorbeau cu această gazdă de la ultima repornire a Pi sau repornirea „rețea .
Pe scurt:
nmap efectuează scanarea OUTWARD a subrețelei specificate din Pi făcând acest lucru.
arp ieșirea este o listă de IP: mapări de adrese mac de gazde cu care pi dvs. a schimbat traficul.
Deci scanarea nmap poate afișa mai multe gazde, în timp ce memoria cache arp vă spune numai găzduiește cu care Pi a vorbit
Cache-ul arp al unui Pi la 192.168.1.21 este prezentat mai jos:
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
Ieșirea arp va afișa ip: adresa mac mapări pentru (2) tipuri de gazde:
A) gazde (” adică pi3Bplus-2 „) în aceeași subrețea cu pi-ul dvs., care poate schimba direct traficul și
B) Routerele („adică gateway ”) necesare pentru a direcționa traficul către gazde în afara subrețele gazdei dvs.
Remarcați 192.168.1. 22 este în 192.168.1. 21 „cache: Asta pentru că am ping .22 din .21. Deci o intrare i n memoria cache arp este o dovadă a conectivității corecte între gazde la depanare. Desigur, dacă ICMP ar fi blocat într-un firewall, ping-ul ar eșua și gazda „s IP: mac maparea nu ar fi prezentă în memoria cache arp.
De asemenea, rețineți că memoria cache arp este NU persistent! dacă reporniți Pi sau chiar rețeaua, acesta va arunca memoria cache arp. Ceea ce ați putea dori să faceți atunci când testați.
Comentarii
- Există câteva lucruri în răspunsul dvs. care pot fi confuze. Citat: ” este dovada ‘ vorbeau cu această gazdă de la ultima repornire a dispozitivului Pi sau repornirea rețelei ‘. ” – Nu, adresa IP este eliminată din cache după 5 minute dacă nu exista o conexiune ‘ ta (nouă, continuată etc.). Dacă continuați o conexiune după 10 minute, atunci există o cerere ARP nouă dacă dispozitivul la distanță este activ, nu îl veți găsi în cache timp de 5 minute.
- Citat: ” Deci o intrare în cache-ul arp este dovadă a conectivității corecte între gazde ” – Nu, dacă opriți dispozitivul la distanță și vă uitați la memoria cache arp în termen de 5 minute, veți găsi adresa IP a acestuia. Toate acestea pot confunda soluționarea problemelor, deoarece lucrurile pot funcționa, dar la scurt timp nu este ‘ t, în special dacă cererea arp într-o direcție nu ‘
- @Ingo arp îmbătrânirea ar trebui să funcționeze așa, dar experiența mea este că colectarea gunoiului nu ‘ t curăță intrări învechite în funcție de perioada definită. Testele din răspunsul meu s-au făcut folosind 2 Pi ‘ adresate pe aceeași subrețea (conectate la același comutator) pingându-se reciproc de câteva ori & oprindu-și ping-urile. Dacă repetați acest test și rulați
ip -statistics neighbour
periodic, ‘ veți vedea intrări arp marcate cu ” vechi ” rămâne chiar dacă este mai vechi de 20 de minute! Așa că îmi dau seama despre modul în care îmbătrânirea arp este presupusă să funcționeze, dar repetați și ‘ veți vedea că intrările pot trăi mult peste 5 minute. Punct excelent totuși !!! - Am făcut experiențe diferite;) La lucrul cu proxy arp m-am împiedicat de o situație în care solicitarea arp funcționează doar într-o singură direcție, de la dispozitivul de la distanță la RasPi. Conexiunea a funcționat numai când dispozitivul de la distanță s-a conectat la RasPi – timp de 5 minute.Celălalt lucru a funcționat uneori (în decurs de 5 minute după conectarea de la distanță) și uneori nu ‘ t. A fost foarte dificil să găsesc această eroare intermitentă (a rezolvat-o cu un mod promiscuu).
- Oricum – ceea ce arată discuția noastră și ceea ce cred: a cere arp cache-ului adresele IP nu este o soluție de salvare, decât dacă ping adresa de difuzare înainte de a privi cache-ul arp. Dar această ‘ este o posibilitate pe care nu o voi sugera din cauza încărcării rețelei.
Răspuns
Aceasta nu este într-adevăr o întrebare specifică Raspberry Pi. Oricum, voi da un răspuns detaliat deoarece găsirea adresei IP a unui Raspberry Pi este o întrebare și o problemă foarte frecventă aici.
nmap este un scaner de rețea și face ceea ce vă așteptați: scanează activ rețeaua pentru dispozitive.
Comanda arp (ar trebui să utilizați mai bine ip neighbor
) nu este un scaner. Afișează numai conținutul cache-ului local arp.
Pentru a stabili conexiuni Ethernet, se folosește protocolul arp. Întrebă ce dispozitive Ethernet cu adresă Mac au ce adresă IP. Cartarea găsită a adresei Mac la adresa IP este stocată în cache-ul local arp, în mod implicit timp de 5 minute. Această mapare are loc pentru fiecare conexiune stabilită, chiar și atunci când dispozitivul la distanță nu răspunde la întrebările ping
. Dar acest lucru implică, de asemenea, că nu găsiți un dispozitiv în cache-ul arp dacă nu ați făcut o conexiune în ultimele 5 minute înainte.
Comanda dvs. nmap -sn 192.168.1.0/24
faceți doar o scanare ping simplă cu scanarea portului dezactivată. Acest lucru nu va găsi dispozitive care suprimă răspunsurile ping. Acest lucru poate duce la găsirea adreselor IP în memoria cache arp, dar nu o găsiți cu scanarea ping activă. Puteți încerca să utilizați:
rpi ~$ nmap -Pn 192.168.1.0/24
Aceasta va scana primele 1000 de porturi pe toate cele 255 de adrese IP din rețea. Desigur, acest lucru va dura foarte mult. Puteți lua în considerare utilizarea unui singur port pentru a scana sau utiliza alte opțiuni pentru nmap pentru a vă găsi dispozitivele.
Răspuns
Referința la alte răspunsuri aici, am venit cu acest script pentru a găsi adresa IP a pi-ului meu:
Se așteaptă să fie setată variabila de mediu RASPI_MAC_ADDR
(adresa MAC a pi ta). Aceasta folosește arp
pentru a căuta valorile memorate în cache, altfel rulează nmap
pentru a încerca și a o descoperi.
#!/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 "()"
Ieșirea nmap
este redirecționată către STDERR, așa că pot face:
alias pi="ssh pi@$(findpi-ip)"
Script actualizat here
.
Comentarii
- Întrebarea este: Din anumite motive, Smart Plug-ul meu (și alte dispozitive Android) apar doar în scanarea efectuată cu arp -a. Știe cineva motivul?
- Sunt cei din gama 192.168.1 …. sau 10.1.10 ….? Puteți vedea scriptul meu actualizat aici