Prohledávám svou síť a pomocí těchto dvou příkazů zjistím adresy IP.
arp -a nmap -sn 192.168.1.0/24
Z nějakého důvodu se moje Smart Plug (a některá další zařízení Android) zobrazují pouze při skenování provedeném pomocí arp -a
. Zná někdo důvod?
Odpověď
arp -a
vytiskne seznam mezipaměti hostitelé / zařízení, kteří s tímto hostitelem hovořili. Pokud tedy uvidíte na výstupu svoji inteligentní zásuvku a další zařízení, je to důkaz, že s tímto hostitelem mluvili od posledního restartu Pi nebo restartu jeho „networking .
Stručně:
Vaše nmap provádí VENKOVNÍ skenování určené podsítě z Pi, který to dělá.
Vaše arp výstup je seznam IP: mapování MAC adres hostitelů, se kterými si vaše pi vyměnilo provoz.
Takže skenování nmap může zobrazit mnoho hostitelů, zatímco mezipaměť arp vám řekne pouze hostitelé, se kterými vaše Pi hovoří,
Arp mezipaměť Pi na adrese 192.168.1.21 je uvedena níže:
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
Výstup arp zobrazí ip: mac address mapování pro (2) typy hostitelů:
A) hostitelé (“ tj. pi3Bplus-2 „) ve stejné podsíti jako vaše pi, která může přímo vyměňovat provoz a
B) Směrovače („tj. brána „) potřebné k směrování provozu na hostitele mimo podsíť vašeho hostitele.
Nezapomeňte, že 192.168.1. 22 je v 192.168.1. 21 „mezipaměť: Je to proto, že jsem pingl .22 z .21. Takže záznam i arp cache je důkazem správného připojení mezi hostiteli při řešení problémů. Pokud by byl protokol ICMP blokován ve firewallu, ping by selhal a hostitelský server IP: mac mapování by v arp mezipaměti nebylo.
Upozorňujeme, že mezipaměť arp není NENÍ vytrvalý! pokud restartujete Pi nebo dokonce síť, vyfoukne to mezipaměť arp. Což byste možná chtěli udělat při testování.
Komentáře
- Ve vaší odpovědi mohou být matoucí některé věci. Citace: “ it ‚ s proof mluvili s tímto hostitelem od posledního restartu Pi nebo restartu jeho ‚ sítě. “ – Ne, IP adresa je odstraněna z mezipaměti po 5 minutách, pokud předtím nebylo ‚ ta (nové, pokračování atd.) připojení. Pokud v připojení pokračujete po 10 minutách, dojde k nový arp požadavek ough the remote device is active you will not find in the cache for 5 min.
- Quote: “ Takže záznam v arp cache je důkaz správného připojení mezi hostiteli “ – Ne, pokud vypnete vzdálené zařízení a podíváte se do mezipaměti ARP do 5 minut, najdete jeho IP adresu. To vše může matoucí řešení potíží, protože věci mohou fungovat, ale krátce nato to nebude ‚ t, zejména pokud arp požadavek v jednom směru ‚ nefunguje správně.
- @Ingo arp stárnutí by mělo fungovat takhle, ale moje zkušenost je, že sběr odpadků ‚ t očištění zastaralé položky podle definovaného období. Testy v mé odpovědi byly provedeny pomocí 2 Pi ‚ s adresovaných ve stejné podsíti (připojených ke stejnému přepínači), které na sebe několikrát pingly & zastavit jejich ping. Pokud tento test zopakujete a spustíte
ip -statistics neighbour
pravidelně, ‚ uvidíte položky ARP označené “ zastaralé “ zůstávají, i když jsou starší než 20 minut! Takže chápu, jak má stárnutí arp předpokládat fungovat, ale opakujte a vy ‚ ll uvidíte, že položky mohou žít déle než 5 minut. Výborný bod však !!! - Právě jsem udělal různé zkušenosti;) Při práci s proxy arp jsem narazil na situaci, kdy požadavek arp funguje pouze v jednom směru, od vzdáleného zařízení k RasPi. Připojení fungovalo pouze v případě, že se vzdálené zařízení připojilo k RasPi – po dobu 5 minut.Opačně to někdy fungovalo (do 5 minut po připojení ze vzdáleného) a někdy to ‚ t. Bylo velmi obtížné najít tuto intermitovanou chybu (vyřešilo se to promiskuitním režimem).
- Každopádně – co ukazuje naše diskuse a čemu věřím: ptát se arp mezipaměti na IP adresy není řešení pro uložení, pokud ne ping na adresu vysílání před prohlížením arp mezipaměti. Ale ‚ je možnost, kterou kvůli zatížení sítě nenavrhuji.
Odpověď
Toto není otázka specifická pro Raspberry Pi. Každopádně dám podrobnou odpověď, protože nalezení IP adresy Raspberry Pi je zde velmi častá otázka a problém.
nmap je síťový skener a dělá to, co očekáváte: aktivně skenuje síť pro zařízení.
Příkaz arp (měli byste lépe použít ip neighbor
) není skener. Zobrazuje pouze obsah místní mezipaměti arp.
K navázání ethernetového připojení se používá protokol arp. Ptá se, jaká ethernetová zařízení s MAC adresou mají jakou IP adresu. Nalezené mapování adresy MAC na adresu IP jsou uloženy v místní mezipaměti ARP, ve výchozím nastavení po dobu 5 minut. Toto mapování probíhá pro každé navázané připojení, i když vzdálené zařízení nereaguje na ping
dotazy. To ale také znamená, že nenajdete zařízení v arp mezipaměti, pokud nebylo připojeno posledních 5 minut.
Váš příkaz nmap -sn 192.168.1.0/24
proveďte pouze jednoduchý test ping se zakázaným skenováním portů. Nenajdete zařízení, která potlačují odpovědi ping. To může vést k tomu, že v mezipaměti ARP najdete adresy IP, ale nenajdete je s aktivním testem ping. Můžete zkusit použít:
rpi ~$ nmap -Pn 192.168.1.0/24
Tím se prohledá prvních 1000 portů na všech 255 IP adresách v síti. Samozřejmě to bude trvat velmi dlouho. Můžete zvážit použití pouze jednoho portu ke skenování nebo použít jiné možnosti pro nmap k vyhledání svých zařízení.
Odpověď
Odkazy na další odpovědi zde, přišel jsem s tímto skriptem, abych našel IP adresu mého pi:
Očekává, že bude nastavena proměnná prostředí RASPI_MAC_ADDR
(MAC adresa vaše pí). To používá arp
k prohledávání hodnot uložených v mezipaměti, jinak se spustí nmap
a zkusí to zjistit.
#!/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 "()"
Výstup nmap
je přesměrován na STDERR, takže mohu:
alias pi="ssh pi@$(findpi-ip)"
Aktualizovaný skript here
.
Komentáře
- Otázka zní: Moje Smart Plug (a některá další zařízení Android) se z nějakého důvodu zobrazí pouze ve skenování provedeném pomocí arp -a. Ví někdo důvod?
- Jsou v rozsahu 192.168.1 …. nebo 10.1.10 ….? Můj aktualizovaný skript si můžete prohlédnout zde