Zachycení a přeposlání paketů

ch3mik

Zachycení a přeposlání paketů
« kdy: 26. 11. 2010, 12:25:07 »
Zdravím, potřevoval bych poradit postup jak zachytit určitý počet paketů a ty pak posílat znova, přesně tak jak přišly. Potřebuji testovat software pro netflow, kterému chci posílat zkušebně stejný počet a obsah paketů.
« Poslední změna: 26. 11. 2010, 12:35:07 od Petr Krčmář »


Ahmul

Re: Zachycení a přeposlání paketů
« Odpověď #1 kdy: 27. 11. 2010, 10:02:36 »
Co zkusit Packet generator v kernelu?

CONFIG_NET_PKTGEN:
Packet Generator
Location:
   -> Networking support (NET [=y])
     -> Networking options
       -> Network testing

Není to přesně, co potřebujete, ale možná by se to dalo použít.

D.E.X.

Re: Zachycení a přeposlání paketů
« Odpověď #2 kdy: 27. 11. 2010, 12:56:53 »
Standardní cestou jak toto udělat je použít tcpdump pro zachycení a tcpreplay pro odeslaní (Případně můžeš pomocí tcpreplay-edit měnit některé položky paketů při vysílání).

ch3mik

Re: Zachycení a přeposlání paketů
« Odpověď #3 kdy: 27. 11. 2010, 20:16:29 »
Díky, zdá se že je to ono, ale ačkoliv tcpdump vidí správně pakety přeposlané znova tcpreplay, onen program je nevidí. Nenapadá vás proč?

Díky

Standardní cestou jak toto udělat je použít tcpdump pro zachycení a tcpreplay pro odeslaní (Případně můžeš pomocí tcpreplay-edit měnit některé položky paketů při vysílání).

j.

Re: Zachycení a přeposlání paketů
« Odpověď #4 kdy: 27. 11. 2010, 20:49:34 »
Asi hloupa otazka, ale sedi adresa a port? Co tak hodit vystup z tcpdump-u i netstat -ln ?


ch3mik

Re: Zachycení a přeposlání paketů
« Odpověď #5 kdy: 27. 11. 2010, 21:23:06 »
Asi hloupa otazka, ale sedi adresa a port? Co tak hodit vystup z tcpdump-u i netstat -ln ?

dělám to takto:
zachytím pár paketů
tcpdump -nn -i eth0 -xx -s 0 -w record udp port 1234
a potom přehrávám
tcpreplay -i eth0 record
toto dělám v jedné konzoli

v druhé mám spuštěný onen program, poslouchá na portu 1234 udp protokol

pokud nechám pakety přicházet zvenku, program na ně normálně reaguje,
pak vypnu odesílání zvenku, a spustím ten tcpreplay ale program nic nevidí.
když ale v této konzoli poslouchám tcpdumpem (tcpdump -nn -i eth0 udp port 1234)
vidím pakety přicházet úplně stejně jak z vnějšího zdroje, tak pakety odeslané tcpreplayem

j.

Re: Zachycení a přeposlání paketů
« Odpověď #6 kdy: 27. 11. 2010, 21:54:55 »
A eth0 je pripojen k cemu? Zkusil bych to poslat na nejaky loopback nebo modifikoval l2 hlavicku, mozna to neprojde pres ten switch (ocekaval bych, ze ten druhy tcpdump by mel packety videt na eth0 2x, jednou jako odeslane podruhe jako prijate).

ch3mik

Re: Zachycení a přeposlání paketů
« Odpověď #7 kdy: 29. 11. 2010, 10:22:13 »
eth0 je připojen do switche. Zkoušel jsem změnit program aby poslouchal na loopbacku a poslat to přes něj, ale chová se to stejně. tcpdump pakety vidí, program ne.

Problém asi musí být v tom, že tcpreplayem ten provoz generuji na cílovém stroji.
tcpdump (při tcpreplayi) ukáže přesně to samé, jako když provoz přichází zvenku, z originálního zdroje. Zkoušel jsem nasadit různá iptables pravidla (na INPUT a OUTPUT), abych ty pakety viděl, ale nic.

Pak jsem ještě zkusil ten nahraný provoz odesílat z jiného stroje, zkusil jsem změnit zdrojovou ip adresu na tu ip adresu toho jiného stroje -  tak aby to vypadalo správně:

tcpprep --auto=router --pcap=record --cachefile=input.cache
tcprewrite --endpoints=62.240.184.2:62.240.184.74 --cachefile=input.cache --infile=record --outfile=output.pcap
masky obou pc jsou /30, takze jsou za routerem. Na PC "62.240.184.2" spouštím
tcpreplay -i eth0 output.pcap
a opět, ačkoliv tcpdumpem (na tom novém PC) vidím provoz odcházet správně, na cílovém pc nevidím nic (tentokrát ani tcpdumpem)



tcpdump na cílovém PC (s programem) - toto vidím, když pakety přichází z vnějšího zdroje (88.146.151.213) ale i při tcpreplayi spuštěném na tomto pc

10:45:23.655911 IP 88.146.151.213.1234 > 62.240.184.74.1234: UDP, length 1464
10:45:23.655916 IP 88.146.151.213.1234 > 62.240.184.74.1234: UDP, length 1464
10:45:23.656502 IP 88.146.151.213.1234 > 62.240.184.74.1234: UDP, length 408

tcpdump na novém PC (62.240.184.2) po přepsání zdrojové IP (bohužel cílové pc nic nevidí):

10:17:40.417416 IP 62.240.184.2.1234 > 62.20.184.74.1234: UDP, length 1464
10:17:40.417630 IP 62.240.184.2.1234 > 62.20.184.74.1234: UDP, length 1464
10:17:40.417638 IP 62.240.184.2.1234 > 62.20.184.74.1234: UDP, length 168


Teď nevím jak dál. Zkuste mi něco ještě poradit, případně úplně jiný postup. Koukal jsem na packet generator dle rady Ahmula, obě PC jsou na CentOS, bylo by celkem komplikované to na nich rozeběhnout, a výsledek je nejistý.

j.

Re: Zachycení a přeposlání paketů
« Odpověď #8 kdy: 29. 11. 2010, 11:58:00 »
Jak rikam, pravdepodobne pakety z ciloveho stroje odchazi (to je to co vidno pres tcpdump) na switch, ale uz se nevraci (jestli by se vraceli, kazdy paket by mel byt videt jeste jednou).

Zkusil bych zmenit ne L3 (IP) adresy, tech bych se nedotykal, ale L2 (MAC), mozna s nima ma ten switch problem - i kdyz dost dobre nevim proc (spoofing protection?).

Btw, proc je jednou jako cil 62.240.184.74:1234 a jednou 62.20.184.74:1234? Jaka je maska site?