Jeg skanner nettverket mitt for å finne ut IP-adresser ved hjelp av disse to kommandoene.
arp -a nmap -sn 192.168.1.0/24
Av en eller annen grunn vises Smart Plug (og noen andre Android-enheter) bare i skanningen utført med arp -a
. Er det noen som vet årsaken?
Svar
arp -a
skriver ut en hurtigbufret liste over verter / enheter som har snakket med denne verten. Derfor, hvis du ser smartpluggen din og andre enheter vises i utgangen, er det et bevis på at de snakket med denne verten siden siste omstart av Pi eller omstart av det er «nettverk .
I et nøtteskall:
Din nmap gjør OUTWARD-skanning av det angitte undernettet fra Pi-en og gjør det.
Din arp output er en liste over IP: mac-adressetilordning av verter som pi-en din har utvekslet trafikk med.
Så nmap skanningen kan vise mange verter, mens arp cachen forteller deg bare vertene din Pi har snakket med
Arp-cachen til en Pi på 192.168.1.21 vises nedenfor:
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
Arp-utgangen viser ip: mac-adresse kartlegginger for (2) typer verter:
A) hosts (» dvs. pi3Bplus-2 «) i samme undernett som pi-en din som direkte kan utveksle trafikk og
B) Rutere («dvs. gateway «) kreves for å dirigere trafikk til verter utenfor vertens undernett.
Legg merke til at 192.168.1. 22 er i 192.168.1. 21 «s cache: Det er fordi jeg pinget .22 fra .21. Så en oppføring i n arp-hurtigbufferen er bevis på riktig tilkobling mellom verter ved feilsøking. Selvfølgelig hvis ICMP ble blokkert i en brannmur, ville ping mislykkes og verten «s IP: mac mapping ville ikke være tilstede i arp-cachen.
Vær også oppmerksom på at arp-cachen er IKKE vedvarende! Hvis du starter Pi på nytt eller til og med nettverk, vil den arp-cachen blåse bort. Som du kanskje vil gjøre når du tester.
Kommentarer
- Det er noen ting i svaret ditt som kan være forvirrende. Sitat: » det ‘ s bevis de snakket med denne verten siden siste omstart av Pi eller omstart av ‘ nettverk. » – Nei, ip-adressen fjernes fra hurtigbufferen etter 5 minutter hvis det ikke var ‘ ta (ny, fortsatt osv.) -forbindelse før. Hvis du fortsetter en tilkobling etter 10 minutter, er det en ny arp-forespørsel. Til og med th hvis den eksterne enheten er aktiv, vil du ikke finne den i hurtigbufferen i 5 minutter.
- Sitat: » Så en oppføring i arp-cachen er bevis på riktig tilkobling mellom verter » – Nei, hvis du slår av den eksterne enheten og ser på arp-hurtigbufferen innen 5 minutter, finner du ip-adressen. Alt dette kan forvirre feilsøking fordi ting kan fungere, men kort tid senere ‘ t, spesielt hvis arp-forespørsel i en retning ikke ‘ t fungerer riktig.
- @Ingo arp aldring skal fungere slik, men min erfaring er at søppeloppsamling ikke renser ‘ foreldede oppføringer i henhold til den definerte perioden. Testene i svaret mitt ble gjort ved å bruke 2 Pi ‘ s adressert på samme delnett (koblet til samme bryter) pinget hverandre noen ganger & stanse pingene sine. Hvis du gjentar denne testen og kjører
ip -statistics neighbour
med jevne mellomrom, vil du ‘ se arp-oppføringer merket » foreldet » forblir selv om det er eldre enn 20 minutter! Så jeg forstår poenget ditt om hvordan arp aldring skal fungere , men gjenta og du ‘ ser at oppføringene kan leve langt utover 5 min. Utmerket poeng derimot !!! - Jeg har nettopp gjort forskjellige opplevelser;) Da jeg jobbet med proxy-arp, snublet jeg om en situasjon der arp-forespørsel bare fungerer i en retning, fra den eksterne enheten til RasPi. Tilkoblingen fungerte bare når den eksterne enheten var koblet til RasPi – i 5 minutter.Omvendt fungerte det noen ganger (innen 5 minutter etter tilkobling fra fjernkontrollen), og noen ganger virker det ikke ‘ t. Det var veldig vanskelig å finne denne innbrutte feilen (løst den med promiskuøs modus).
- Uansett – hva diskusjonen vår viser og hva jeg tror: å spørre arp-cache for ip-adresser er ikke en lagringsløsning, med mindre du ping kringkastingsadressen før du ser på arp-hurtigbufferen. Men den ‘ en mulighet vil jeg ikke foreslå på grunn av nettverksbelastning.
Svar
Dette er egentlig ikke et spørsmål spesifikt for Raspberry Pi. Uansett vil jeg gi et detaljert svar fordi å finne ip-adressen til en Raspberry Pi er et veldig ofte stilte spørsmål og problem her.
nmap er en nettverksskanner og den gjør det du forventer: den skanner aktivt nettverket etter enheter.
Kommandoen arp (du bør bedre bruke ip neighbor
) er ikke en skanner. Den viser bare innholdet i den lokale arp-cachen.
For å opprette Ethernet-tilkoblinger, brukes arp-protokollen. Det spør hvilke Ethernet-enheter med mac-adresse som har hvilken IP-adresse. Den funnet kartleggingen av mac-adressen til ip-adressen lagres i den lokale arp-cachen, som standard i 5 minutter. Denne kartleggingen finner sted for alle etablerte tilkoblinger, selv når den eksterne enheten ikke svarer på ping
spørsmål. Men dette innebærer også at du ikke finner en enhet i arp-cachen hvis det ikke ble opprettet en forbindelse de siste 5 minuttene før.
Din kommando nmap -sn 192.168.1.0/24
gjør bare en enkel ping-skanning med deaktivert port-skanning. Dette finner ikke enheter som undertrykker ping-svar. Dette kan føre til at du finner ip-adresser i arp-cachen, men ikke finner den med aktiv ping-skanning. Du kan prøve å bruke:
rpi ~$ nmap -Pn 192.168.1.0/24
Dette skanner de første 1000 portene på alle 255 ip-adressene i nettverket. Selvfølgelig vil dette ta veldig lang tid. Du kan vurdere å bare bruke en port for å skanne eller bruke andre alternativer for nmap for å finne enhetene dine.
Svar
Henviser til andre svar her, jeg kom opp med dette skriptet for å finne IP-adressen til pi-en min:
Forventer at RASPI_MAC_ADDR
miljøvariabelen skal angis (MAC-adressen til din pi). Dette bruker arp
for å søke i hurtigbufrede verdier, ellers kjører nmap
for å prøve å oppdage det.
#!/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 "()"
nmap
-utgangen blir omdirigert til STDERR, så jeg kan gjøre:
alias pi="ssh pi@$(findpi-ip)"
Oppdatert skript here
.
Kommentarer
- Spørsmålet er: Av en eller annen grunn vises Smart Plug (og noen andre Android-enheter) bare i skanningen som er gjort med arp -a. Er det noen som vet årsaken?
- Er de i området 192.168.1 …. eller 10.1.10 ….? Du kan se det oppdaterte skriptet mitt her