[pso] netfilter si promiscuous mode
Bogdan Tenea
tenea.bogdan at gmail.com
Thu Jun 25 02:18:17 EEST 2009
M-am uitat mai atent la ebtables si in lipsa unei documentatii sau a unor
exemple de urilizare m-am lasat pagubas.
Am gasit urmatorul document [1] in care se explica destul de clar ce se
intampla la trecerea prin kernel a unui pachet si am ajuns sa modific
function ip_rcv din net/ipv4/ip_input.c ca sa nu mai imi dea drop la
pachetele promisc:
<https://cs.pub.ro/%7Epso/lxrng/linux/net/ipv4/ip_input.c#L386>
// if (skb <https://cs.pub.ro/%7Epso/lxrng/linux/+code=skb>->pkt_type
<https://cs.pub.ro/%7Epso/lxrng/linux/+code=pkt_type> ==
PACKET_OTHERHOST
<https://cs.pub.ro/%7Epso/lxrng/linux/+code=PACKET_OTHERHOST>)
<https://cs.pub.ro/%7Epso/lxrng/linux/net/ipv4/ip_input.c#L387>
// goto drop
<https://cs.pub.ro/%7Epso/lxrng/linux/+code=drop>;
Ma mint ca e o solutie temporara insa parca vad ca o sa ramana asa :)
[1] http://www.net.t-labs.tu-berlin.de/talks/2006-09-12-pronchev-slides.pdf
2009/6/24 Bogdan Tenea <tenea.bogdan at gmail.com>
> Dupa mai multe sapaturi am gasit si eu acea specificare. Am gasit si
> patchul dar as vrea sa fac o chestie care sa mearga pur si simplu fara sa ma
> apuc sa recompilez kernelu.
>
> Am incercat sa dau strace pt iptables si pare destul de criptic. Dar, in
> cel mai rau caz e si asta o solutie. Momentan am gasit ebtables<https://cs.pub.ro/%7Epso/lxrng/linux/net/bridge/netfilter/ebtables.c>care din cate inteleg e un fel de netfilter la nivel de ethernet (e o
> limitare dar momentan nu e atat de neplacuta). Revin cu detalii daca il
> reusesc sa-l conving sa si mearga :)
>
> 2009/6/24 Octavian Voicu <octavian.voicu at gmail.com>
>
> Prin netfilter in mod normal nu se poate; primul hook (cronologic) e dupa
>> ce sunt dropped pachetele nedestinate hostului:
>>
>> /* IP Hooks */
>> /* After promisc drops, checksum checks. */
>> #define NF_IP_PRE_ROUTING 0
>>
>> Presupun ca ai gasit patchul<http://caia.swin.edu.au/cv/szander/netfilter.html>care adauga un hook nou pentru promiscuous mode.
>>
>> Alta varianta e sa folosesti raw sockets, cum functioneaza si tcpdump
>> (care merge prin libpcap, library user space pt captura de pachete), dar
>> implementat cu sockets la nivel de kernel (probabil ceva mai complicat).
>>
>> Daca dai un `strace tcpdump` poti sa vezi ce fel de socket trebuie creat
>> si cum selectezi interfata pe care asculta. Check out si man packet<http://linux.die.net/man/7/packet>
>> .
>>
>>
>>
>> 2009/6/24 Bogdan Tenea <tenea.bogdan at gmail.com>
>>
>>> Salut
>>>
>>> Incerc sa fac un modul care sa analizeze niste pachete de pe retea care
>>> nu sunt destinate hostului pe care ruleaza. Am pus interfetele in modul
>>> promiscous, traficul ajunge pe ele ca vad contotorul pentru interfata
>>> mergand, traficul apre in iptraf iar daca dau tcpdump pe interfata
>>> respectiva se vede foarte clar dar nu-mi dau seama din ce motiv pachetele
>>> nu ajung in hooku de netfilter. Mentionez ca l-am inserat in prerouting cu
>>> NF_IP_PRI_FIRST si ca pentru pachetele destinate hostului respective merge.
>>> Am cautat pe net si primele chestii gasite sunt legate de un patch de
>>> kernel care sa faca netfilter sa accepte si acele pachete, insa caut o
>>> solutie mai eleganta :)
>>>
>>> Pls help :)
>>>
>>> Multumesc,
>>> Bogdan
>>>
>>> _______________________________________________
>>> pso mailing list
>>> pso at cursuri.cs.pub.ro
>>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>>
>>>
>>
>>
>> --
>> Octavian Voicu
>>
>> _______________________________________________
>> pso mailing list
>> pso at cursuri.cs.pub.ro
>> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090625/8573649b/attachment-0001.htm>
More information about the pso
mailing list