Aktív hálózati eszközök a helyi hálón

Sziasztok,

Egy saját kis mini alakalmazást készítek, amiben szeretném monitorozni az aktív eszközöket a hálózaton.
Ehhez a következő parancs kimenetét dolgozom fel:
nmap -sP 192.168.1.*

Nekem csak a MAC address kell, az alapján azonosítom az eszközt. (Ha a fenti parancs kimenetében ott van, akkor aktív az eszköz.)
Először azt hittem tök jól működik, de a (wifire csatlakozott) mobiltelefonokat néha nem listázza ki.
Gondoltam, hogy biztos azért van, mert a telefon energiagazdálkodása miatt, csak időnként kapcsolódik a wifihez.
Ez azonban megdől, ha pingelem az eszköz IP címét.
Ha az nmap nem mutatja az eszközt, az eszköz akkor is pingelhető.
Miért van ez? Hogyan lehetne biztosan megmondani, hogy az eszköz kapcsolódott-e a wifire?

Egy kis plusz info:
- a wifit a router adja, abba nem tudok belenyúlni
- ez a linux gép a hálózaton lógó eszközök egyike, amely a többiekkel együtt a routerhez kapcsolódik közvetlenül
- szeretném továbbra is a MAC azonosítást használni, ha lehetséges, mert a hűlózatban dhcp van.
- végső esetben alkalmaznám csak a statikus dhcp címet

Köszönöm előre is a válaszokat!
üdv: redman

Hozzászólások

Ha a routerhez lehet kapcsolodni esetleg snmp, api, telnet stb. -n keresztul akkor abbol lekerdezve arp tablat.
Ha idonkent ellenorizni akarod kik vannak fenn akkor kb nmap vagy hasonloval subnetet vegigpingeled es gep arp tablajaban megnezed bejegyzeseket (arp -an).
Ha egy adott klienst akarsz lekerdezni ott van-e akkor arping.
Ha arp tabla valtozasrol akarsz erteszitest arpwatch.

Ha ipv6 erdekel akkor neighbor discovery utan nezelodj, ndisc6, ndpmon stb.

IPv4 esetén esetleg gyorsabb:
# /usr/bin/arp-scan -l

IPv6-ra egy tipp:
ping6 -I eth0 ff02::1 -c 2 && ip -6 neigh show

Latom kozben hozzairtal par extra infot, de az meg mindig nem vilagos mit szeretnel latni ezzel az egesszel.
Az erdekel hogy egy adott eszkoz fent van-e a halozaton, az hogy adott idoszakban milyen eszkozok vannak fenn, netan valami folyamatos figyeles mikor milyen eszkoz csatlakozik vagy mi lenne az igeny?

Nem írtam hozzá plusz infót, ez volt az eredeti szöveg, de ez nem is lényeg.
Igen folyamatos figyelés lenne a cél.
Van egy script ami percenként megnézi, hogy kik elérhetőek a hálózaton és beleírja egy adatbázisba.
Egy weboldalon pedig kijelzem, hogy az eszköz éppen elérhető vagy sem. Egyfajta presecne információt szeretnék megjeleníteni. Ki van otthon és ki van távol.
Ez egy hobby projekt, kíváncsi vagyok, hogy ezt a feladatot miéként lehetne megoldani, tehát nem múlik rajta üzleti dolog, ha véletlenül rosszul állapítom meg az eszköz jelenlétét.

Közben még kisérletezgettem.
Érdekesség:
Írtam, hogy a MAC címet az nmap nem mutatja, de az IP-je a telefonnak pingelhető.
Közben kiderült, hogy a telefon egy idő után a pingre sem válaszol. Tipikusan akkor ha nem nyomkodom, csak le van téve standby módban.

Biztos valami energiagazdálkodási dolog lesz ez, hogy nem állandóan kapcsolódik a hálózathoz.

http://www.redphoto.hu

nekunk van egy ilyen fejlesztesunk (nem free sajnos). az ARP tablat (a routeren) vagy az ARP broadcast forgalmat (ha nem ferunk hozza a routerhez valamiert) nezi. emellett par percenkent megpingeli azokat a hostokat amik az utolso X oraban ARP forgalmat bonyolitottak, hogy lassa elnek-e meg illetve eletben tartsa az ARP bejegyzest.

amugy en is inkabb arping/arp-scan javaslok az nmap helyett, illetve wifi klienseknel inkabb a wifi connectionoket listaznam ki az AP-rol (pl SNMP-n).

A'rpi

Se a hálózati eszközökről, azok tudásáról, se a routerről, se a topológiáról nem írtál semmi érdemlegeset.

Még az sem derül ki, hogy a "nem tudok belenyúlni" mit jelent?
Zárt a szoftvere? - Milyen szoftver fut rajta?
Nem te manageled a konfigurációját? - Lehet kérni konfig change-t? - Milyen jellegűt lehet kérni?
Példák:
- syslog szerver bekonfigurálása az AP-nek.?
- dhcp snooping bekonfigurálása az AP-nek?

- Esetleg az ap, milyen hálózati eszközbe van beudva? Ha az AP maga nem, akkor lehet, hogy a switch tud dhcp snoopingot.

Legalábbis, cisco-ban így hívták, ha jól emlékszem, amikor a dhcp-t "enrichelte" adatokkal 1-1 eszköz.
Enrich: Néhány plusz mezőt belerakott: Melyik eszköz fogadta a dhcp-t, annak melyik interfészén jött be.
Így pl. ha a dhcp-ből tudsz logokat gyűjteni, az meg látja a snooping infót...

Vagy... Ez persze csak egy ötlet.
Másik ötlet, ha már a jelek szerint összereszted egy broadcast domainbe a vezetékes endpointokat a vezetéknélküliekkel: A snooping által beletett extra infók alapján "feltételeket" is tudsz vizsgálni az ISC Dhcpd-jében. (De ilyen szintű döntésre még talán dnsmasq is képes, csak annak kicsit macerásabb ezt megfogalmazni)
A döntés/ feltétel alapján meg a vezetékes és vezetéknélküli eszközöknek lehet külön poolból osztani címet, ugyanazon a broadcast domainen belül is.

De amit leírtál, a témáról, azt kb. úgy képzeld el, mintha bemennél egy tejtermékeket áruló szaküzletbe, és azt mondanád az eladónak, hogy sajtot kérsz.

Amúgy, meg ha monitoring, akkor miért korlátozod a wifire?

Hint.: netdisco forráskódját nézted már, csak hogy hálózati alapokról ÉS a problémádhoz hasonlatos megoldásokról kód szintjén legyen egy kevés fogalmad?
Javasolt! ;-)

Akkor már az is lehet, hogy a kérdés feltevésekor még hasznos információkat is tudsz adni a kérdésedet illetően.

- A router: RT-N18U, gyári szoftver. Nem kívánom módosítani, ha egy mód van rá
- Úgy tudom, hogy nincs rajta snmp
- Azért írtam, hogy zárt, mert onnnan kívülről (webes felület hasnálata nélkül) jelenlegi tudásom (nem próbáltam még utánanézni) alapján nem tudok hozzáférni az adataihoz
- szerintem elég jól körülírtam a problémát, de akkor nem derült ki, hogy ez egy itthoni hálózat. Hobby projekt, tehát minden eszköz az enyém és én vagyok a rendszergazdi is :)
- nem korlátozom wifire (nem volt ilyenről szó), de a cél az hogy lássam egy hálózati eszköz jelenlétét. A vezetékes hálózatra kapcsolt az mindig ott van, mivel vezetékes. Igazából a wifis eszközök tudnak "kilépni" az ajtón, ha elmennek a gazdájukkal munkába.
- igaz, később azt is szeretném vizsgálni, hogy az adott hálózati eszköz be van-e kapcsolva, tehát általánosan szeretném megvizsgálni, hogy egy eszköz fent van-e a hálózaton, függetlenül attól, hogy vezetékes vagy vezeték nélküli kapcsolattal rendelkezik.

http://www.redphoto.hu

"kívülről (webes felület hasnálata nélkül) jelenlegi tudásom (nem próbáltam még utánanézni) alapján nem tudok hozzáférni az adataihoz"

Akkor itt az idő a jelenlegi tudást a jövőben megváltoztatni.
A router infói webes felület nélkül is lekérhetők, és onnan csak szövegfeldolgozás.

Ha valaki monitorozni tudja a hálózati forgalmat, akkor a telnet teljes forgalmát látja, és - mivel a telnet semmilyen titkosítási eljárást nem használ - pontosan azt látja, amit elküldesz az eszköz felé, meg amit az eszköz küld feléd, így pl. a belépési jelszót is el tudja kapni. Telnetet csak zárt hálózaton szabad használni, de ahol van lehetőség SSH használatára, ott nem érdemes a telnetet erőltetni.

http://study-ccna.com/telnet-ssh/

- A router: RT-N18U, gyári szoftver. Nem kívánom módosítani, ha egy mód van rá

Ez így magában nekem nem sokat mond. De ha jól sejtem, akkor a low-end dzsunkagyártók egyikétől van. Tipikusan ilyen Asus, TP-Link, stb. akik nem "komoly" eszközöket gyártanak.

Noss, ebben az esetben én pont, hogy tartanék attól, hogy a gyári szoftvert használjam rajta, és utánanéznék, hogy milyen alternatív lehetőségeim (pl. OpenWrt) vannak még.

Persze ha nincs internetre kötve az eszköz, és nincs mögötte olyan gép, amin van fontos adat, akkor no problem. "Kisérletezős" környezetbe bármi elmegy.

De ha kötsz rá internetet is, akkor én, ha más miatt nem is, akkor már azért, hogy ne legyen záros időn belül egy botnet része, gyalulnám le a gyári szoftvert.

Az első körös leírásból még arra tippeltem volna, hogy valami Aruba (HP), vagy Cisco, vagy valami más gyártó lwap-járól van szó. (Vagy autonómra hack-elt lwap :D)
Mondjuk abban az esetben (mármint, ha nem autonóm) meg a wlc-ből lehetett volna egy nagy halom érdemi infót kinyerni.

Így a fenti hozzászólásokhoz még annyit azért hozzátennék: ha van mód a telnet helyett ssh használatára, akkor inkább azt használd és a telnetet tiltsd le.
Ha tud kulccsal autholni, akkor f@sza. Ha nem, akkor meg import fabric vagy import paramiko whatever your favorite is.

Ha bridge interface-szel kapcsolódsz a helyi hálóra, # brctl showmacs br0 szépen megmutatja az összes aktív eszközt.

cs.

> Ha az nmap nem mutatja az eszközt, az eszköz akkor is pingelhető.
Miért van ez?

Az nmap többféle módszerrel képes kideríteni egy állomás állapotát, a ping pedig ICMP echo requesttel dolgozik, amit az nmap nem tud használni akkor, ha nem root jogokkal futtatod.

https://nmap.org/book/man-host-discovery.html