1

Temat: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

Chcę sobie zrobić wykrywanie obecności mnie w domu czyli de facto mojego smartfona zalogowanego do LANu.
Samo arp nie do końca działa tak jak bym chciał, bo tablica arp nie jest na bieżąco odświeżana. Za to pakiet arp-scan dostarcza fajnego narzędzia. I tak oto polecenie:

arp-scan   -xql -I br-lan

pokaże nam co dokładnie w tej chwili jest zalogowane do naszej sieci. Teraz tylko pozostało oskryptować i  puścić do crona co minutę. No i właśnie tu jest problem, bo ja chciałbym nie czekać na odpowiedź po odpaleniu skryptu crona tylko dostać takie info natychmiast po zalogowaniu się danego urządzenia do sieci.
Czy w takim razie da jakoś się wyłuskać taką informację może z hotpluga lub z dhcp, lub jeszcze jakoś inaczej? Bo mnie nic nie przychodzi do głowy.
Moje wszystkie urządzenia po wlanie mają przypisany MAC do IP zawsze więc występuje ta sama para MAC-IP
Pewnie idzie to jakoś wyłapać choćby z logów, ale to też chyba wymusza użycie crona do przeglądania logu?
Kiedyś tu na forum był podobny temat, ale sobie go nie zapisałem i teraz nie mogę go namierzyć.

2 (edytowany przez mar_w 2018-02-20 00:50:42)

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

Ja inną funkcjonalność robię skryptem, który odpalony przy starcie cały czas działa i ma sleep 5 sekund. Ale to zupełnie inna potrzeba niż klient wifi.
#!/bin/sh
while true
do
if
...
else
...
fi
sleep 5
done
Możesz również wysyłać pingi jeżeli nie masz blokady na icmp w urządzeniach.  Pakiet + zależności mniej w puli.

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

3

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

Jeżeli macie adresy po dhcp to możecie sobie wykonywać skrypt w momencie jak urządzenie uzyska adres ip. dnsmasq potrafi wykonać go (opcja dhcpscript)

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

4 (edytowany przez andrut 2018-02-20 09:13:57)

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

Ze wszystkich opcji wspomnianych polecam swoją, przetestowaną.
Pingujemy IP smartfona (musi być na stałe przypisany w dhcp, żeby nie ulegał zmianie), a następnie przeglądamy tablicę arp.
Jeśli jest flaga 0x2 to telefon jest, jeśli 0x0 to nie ma.  :-)

--EDIT:
Doprecyzowując - zaraz po rozłączeniu telefonu z WiFi, pierwszy kolejny ping wysłany do niego przestawi flagę w tablicy arp na 0x0.
Skrypt można odpalać w cronie co minutę.

5

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

Jeżeli bezprzewodowo to wystarczy też iw dev wlan0 station dump. Jak jest to jest na liście smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

@Cezary: o tym nie pomyślałem, ale musiałem wykrywać także kabelkowe hosty nie odpowiadające na pinga i pewnie dlatego nie skojarzyłem ;-)

7

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

Od strony programistycznej ja bym się nastawiał jednak na rozwiązania, które nie wymagają active pooling, czyli ciągłego wykonywania jakiejś operacji, żeby wykryć zmianę.
dhcpscript jest najrozsądniejsze, choć widzę problem wykrycia momentu zniknięcia z zasięgu, jeżeli to dla nas istotne.
Ale można pewnie zrobić coś takiego, że od momentu przydzielenia IP robimy dowolnie wybrany pooling co zadany czas, do czasu aż telefon zniknie z zasięgu.
Pamiętać trzeba, że telefon może chwilowo znikać z sieci, może też nie zawsze od razu odpowiedzieć itd. Pingowanie pewnie zjada baterię pewnie.

Jak ja bym to robił, to raczej użyłbym jakiejś aplikacji w telefonie, która może być wybudzana po dodarciu w okolice zadanej lokalizacji i po prostu powiadamia router dowolnym kanałem "jestem".

8

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

Dzięki wszystkim za podpowiedzi. Chyba wykorzystam coś z każdej po trochu.
Co do arp to flaga 0x0 lub 0x2 odświeża się dziwnie. Z opóźnieniem i to nie wiadomo nigdy kiedy się odświeży.
Co do dhcp-script to działa ładnie, ale tylko podczas uzyskiwania dzierżawy.
Po przemyśleniu  jednak stwierdzam, że najlepszy sposób to wysłanie push'a po dotarciu do lokalizacji jak radzi kolega jakubd.
Ze względu na częste deautentykacje kiedy sieć nie jest używana.
Jest jeszcze logread i nie wiem czy to nie będzie najlepszy sposób.

9

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

xury napisał/a:

Co do arp to flaga 0x0 lub 0x2 odświeża się dziwnie. Z opóźnieniem i to nie wiadomo nigdy kiedy się odświeży.

Przed odświeżeniem puszczasz ping do hosta, że jest takie zachowanie?

10

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

Obojętnie czy puszczam pinga czy nie puszczam to czasami flaga zmienia się prawie natychmiast, a innym razem po kilku minutach dopiero. W dodatku smartfon z WP10 nie odpowiada na pingowanie.
Na razie zrobiłem test jak poniżej i to działa.

#!/bin/sh
if  arp-scan -xql -I br-lan | grep -q 192.168.22.101
then
echo jest >> /tmp/mojfon
else
echo niema >> /tmp/mojfon
fi

Zapisałem jako skrypt uruchamiany przez dhcp-script

11

Odp: Wykrywanie obecności smartfona w sieci LAN po MAC adresie.

A widzisz.
A ja miałem to w cronie, co 5 minut.
Nie używałem arp-scan, a zwykłego 'arp'
Później 'grep' na tych wynikach.

Flaga jest ustawiana jak pakiet nie dotrze do hosta, a przy dhcp-script jest odpalane tylko przy lease.