Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: sharkydog в Feb 26, 2009, 12:56



Титла: Слушане за включване на компютри в дадена подмрежа
Публикувано от: sharkydog в Feb 26, 2009, 12:56
Извинявам се за тъпото заглавие на темата, ама не мога да се сетя как по-друг начин да опиша проблема си кратко.

Възможно ли е когато един компютър в дадена мрежа се включи, това "събитие" да се хване от друг компютър в мрежата, и след това разбира се да се извърши някакво действие след получаване на този "сигнал".
Т.е. искам да слушам в мрежата за някакъв трафик, който е индикация че точно определен компютър е бил включен, и при засичане на тези пакети да се стартира някакъв скрипт.
Нямам в предвид да пускам ping-ове докато въпросният компютър бъде включен.

Възможно ли е това?


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: ivanatora в Feb 26, 2009, 13:50
DHCP използва ли се в мрежата?


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: sharkydog в Feb 26, 2009, 14:02
не

няма ли някакви broadcast, multicast и т.н. пакети които могат да се хванат ... :) ?
Мисля че е повече от ясно че знам IP адреса и MAC-а на въпросната машина


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: romeo_ninov в Feb 26, 2009, 14:08
не

няма ли някакви broadcast, multicast и т.н. пакети които могат да се хванат ... :) ?
Един трап от превключвателя при вдигане на порта?


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: voyager в Feb 26, 2009, 14:19
sharkydog, ping ако отсреща работи обикновен user... :)

Като получиш icmp reply и знаеш че компютъра е активен, +-овете са че решението е тривиално да си го направиш, дори с малко повече фантазия можеш и лог файл да направиш. - - ако отсреща има някой "хакер" които си следи трафика... (и по-точно - аномалиите в трафика, получаването на icmp пакети от някъде откъдето по принцип не трябва да получаваме лично аз го считам за "аномалия заслужаваща внимание")

Другото което можеш да направиш е със netcat (nc) да слушаш за трафик, като видиш че от МАC-а на компютъра които те интересува почват да фърчат ARP пакети от/към... +-а на това решение е че е практически незасечимо...

естествено, тука си говориме за стандартната ситуация където става въпрос за домашна мрежа и не-интелигентни суитчове. В случай че имаш административен контрол и над "умен" суич... можеш през SNMP да си дърпаш информация за състоянието на портовете, и като ти се дигне тоя порт които ти трябва пак да получаваш съобщение.


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: sharkydog в Feb 26, 2009, 14:27
@romeo_ninov
не те разбрах много добре ...
просто искам да знам когато мишената се включи и евентуално вече може да се осъществи някаква връзка.
не е проблем и "известието" да дойде в някакъв по ранен момент от този в който ще може да се направи връзка с машината (да се пингне примерно)

@voyager
Цитат на: voyager
Другото което можеш да направиш е със netcat (nc) да слушаш за трафик, като видиш че от МАC-а на компютъра които те интересува почват да фърчат ARP пакети от/към... +-а на това решение е че е практически незасечимо...
Точно нещо такова ми трябва, не че искам да е незасечимо, не съм хакер и на другата машина не стои хакер, просто не искам да пращам луди пингове часове наред, за да разбера кога компютъра вече е активен.


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: voyager в Feb 26, 2009, 16:42
ето ти примерен скрипт които проверява за точно това в продължение на 24 часа:

Код:
#!/bin/bash
$IP = "1.1.1.1"

for $i in `seq 1440`
   do
       date +%H:%M
       ping $IP -c 1|grep bytes
       sleep 60
   done

- това ти праща един ICMP пакет в минута до дадено ИП в продължение на 24 часа. Предполагам че не ти трябва точната секунда на включване... :D На изхода виждаш timestamp и ако другата машина е включена, нещо от сорта на:
13:54
64 bytes from 1.1.1.1: icmp_seq=1 ttl=255 time=1.50 ms
(и това ще го виждаш докато е включена, спре ли да е включен отсрещния комп това 64 bytes ... изчезва, остават само timestamp-ове)

Това решение прави само 1440*64*2 или 184,320 байта (грубо 200 килобайта).


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: romeo_ninov в Feb 26, 2009, 17:31
@romeo_ninov
не те разбрах много добре ...
просто искам да знам когато мишената се включи и евентуално вече може да се осъществи някаква връзка.
не е проблем и "известието" да дойде в някакъв по ранен момент от този в който ще може да се направи връзка с машината (да се пингне примерно)
Идеята е при теб да имаш SNMP клиент и на превключвателя да настроиш изпращане на trap в момента на "вдигане" на порта. НО това означава софтуер при теб и интелегентен превключвател.


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: tarator в Feb 26, 2009, 18:24
Ако слушаш за ARP пакети вероятно ще разбереш кога даден компютър се е включил.


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: gat3way в Feb 26, 2009, 18:38
Не е задължително.


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: tarator в Feb 26, 2009, 18:59
ARP пакетите се broadcast и компютъра ще ги чуе. Разбира се, това ще се случи ако а) другия компютър прави мрежов трафик; и б) арп кеша е експирясал.


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: laskov в Feb 26, 2009, 21:44
Един трап от превключвателя при вдигане на порта?
Портът може да си е вдигнат, а компа в да е в "стенд бай".


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: shadowx в Feb 26, 2009, 23:58
ako imat firewall trqbva da napravish neshto ot tipa :

#!/bin/bash
file="./file"
tmp_file=`mktemp`
d=`date`

for n in `seq -f %g 1 254`; do
     z=`arping -c 1 192.168.1.$n | grep Recived | awk '{print $2}'`
     if [ $z == "1" ]; then
        if ! grep "192.168.1.$n" $file ; then
             echo "[$d] 192.168.1.$ip" >> $file
        fi
     else
           if grep "192.168.1.$n" $file ; then
              cat $file | grep --invert-match "192.168.1.$n" > $tmp_file
              mv -f $tmp_file $file
           fi
     fi

tva e varqnta s arping ... grozno no bi svarshilo rabota ...
drugiq ti varqnt e da pravish nehsto , no s pcap naprimer  da slushash na arp no bi bilo kade kade po slojno za pisane ..., i ne si zalujava truda ako pitash men .....lesno shte hvanesh slushaki na arp nivo , koga nov kompiutar se e zakachil , no momenta sys tova koga e sprql e po slojen , shte trqbva da mahash zapisi po stari ot X vreme i pak se polichava v kraina smetka grozna rabota ....

p.s.: ako iskash da varvi non stop go sloji v nqkaf cikyl while true ; do blqblq ;done i si sloji samo nqkaf sleep nakraq .... otvreme navreme da go pravi .


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: sharkydog в Feb 27, 2009, 10:02
не ми трябва да знам кога е спрял, само кога е пуснат

tcpdump -i eth0 arp
това ми изкарва пакети от рода:
reply IP is-at MAC
who-has IP tell IP

нещо ми подсказва че трябва да хващам пакети от първия тип (втория тип не знам какви са, ... по-малко са и второто IP е на рутера в мрежата).

Сега остават два въпроса.
1) как да укажа в expression-а на командата че искам reply IP is-at MAC пакет с точно определен MAC
2) как да автоматизирам нещата че като получа желаните пакети да стартирам някакъв скрипт, предполагам самата командата ще се изпълнява от скрипт :) ... и "слушането" трябва да спре когато въпросните пакети са хванати и "известяването" е извършено :)

и btw, това няма да ми върви цял ден, просто искам в рамките на 2-3 часа да знам кога се е включил този компютър, за да не пингвам през 5 минути ...

EDIT: забелязах един може би не много малък проблем, на всички пакети пише един и същ MAC адрес, предполагам този на рутера, arp -a също показва едни и същи MAC-ове, освен това ping на ip в subnet-а идва с коригирания ttl от рутера както е за всички външни адреси ...


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: shadowx в Feb 27, 2009, 19:24
Ми .... tcpdump -q -n -i eth0 arp | grep MAC_ADDRESS
Като видиш ред -> комп-а е дошъл....

п.с.: неможе рутер-а да ти сменя TTL-a на пинг-а ако пингваш в твоя си subnet ...
Ако имаш мрежа 192.168.100.0/24 ....
примерно рутера е 192.168.100.1
ти си 192.168.100.43 /следователно маската ти е 255.255.255.0/
Та комуникацията ти със всички ИП-та от мрежат 192.168.100.0 неминава през рутер-а .... следователно той неможе да променя TTL-a...
Точно това е идеята на тоя нетмаск .... да знае комютъра ти с кои машини може да си комуникира директно , и с кои ще трябва да мине през гейт-а .
Относно едни и същите макове .... явно твоя и този на рутера .... а на arp -a ще виждаш само мак адресите на компютрите с който имаш активна комуникация ..... ако не си пращате пакети със 192.168.100.95 , закаво му е на твоя комп да има мак адреса му в арп таблицата ? :) това е излишно . пусни някакъв броудкаст и ще се напълни арп таблицата ти .../нещо към ff:ff:ff:ff:ff:ff/ защото повечето верочтно няма да ти отговорят на броудкаст на layer3 ....


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: tolostoi в Feb 28, 2009, 09:17
п.с.: неможе рутер-а да ти сменя TTL-a на пинг-а ако пингваш в твоя си subnet ...
Всъщност може, някой доставчици го правят, ако примерно е сетнат директно публичнният адрес http://hardwarebg.com/forum/showthread.php?t=144680&highlight=%EC%E5%E3%E0%EB%E0%ED


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: gat3way в Feb 28, 2009, 12:02
Това също е резултата ако рутерът прави proxyarp между отделни сегменти. Значи при клиента е вдигнат интерфейс и мрежова маска примерно /24. Обаче тази /24 мрежа може дефакто да е "разцепена" на 4 сегмента като рутера прави рутирането между тях. Тогава за клиент от единия сегмент, мак адреса на клиент от друг сегмент е еднакъв с мак адреса на рутера. Това се прави с цел например да се прави packet filtering или QoS в рамките на /24 сегмента, прозрачно за клиентите.


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: shadowx в Mar 02, 2009, 09:35
п.с.: неможе рутер-а да ти сменя TTL-a на пинг-а ако пингваш в твоя си subnet ...
Всъщност може, някой доставчици го правят, ако примерно е сетнат директно публичнният адрес http://hardwarebg.com/forum/showthread.php?t=144680&highlight=%EC%E5%E3%E0%EB%E0%ED
Всъшност неможе :) няма как рутера да пренапише TTL-а на пакет който неминава през него...


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: tolostoi в Mar 02, 2009, 11:53
п.с.: неможе рутер-а да ти сменя TTL-a на пинг-а ако пингваш в твоя си subnet ...
Всъщност може, някой доставчици го правят, ако примерно е сетнат директно публичнният адрес http://hardwarebg.com/forum/showthread.php?t=144680&highlight=%EC%E5%E3%E0%EB%E0%ED
Всъшност неможе :) няма как рутера да пренапише TTL-а на пакет който неминава през него...
Само, че той минава в описаният случай.
Пише се "не може".


Титла: Re: Слушане за включване на компютри в дадена подмрежа
Публикувано от: sharkydog в Mar 02, 2009, 20:15
минава си да, един trace го доказва ...

ето какво направих досега:
tcpdump -q -n -i eth0 arp net 123.123.123.123

това хваща всички пакети които имат нещо общо с този адрес (не слагам MAC, понеже както споменах се вижда само този на рутера).
когато не е включен, не получавам нищо освен ако не се опитам да го пингна, тогава за всеки пинг получавам по един пакет
arp reply IP is-at MAC
MAC разбира се пак си е този на рутера, предполагам ако някой друг се опита да пигне този адрес пак ще хвана някой arp пакет?
от време на време виждам и:
arp who-has IP tell друго_IP
все още не мога да разбера какви са тези ...

edit: сега ги схванах who-has са запитванията, а reply  са отговорите :)