[pso] [Tema4]Inside-Outside problem

Razvan Deaconescu razvand at cs.pub.ro
Sun May 20 11:49:05 EEST 2007


sorin gsmcreation wrote:
> Salut inca o data.
> 
> Ma chinui deja de cateva ore bune sa-mi dau seama de
> ce testul se comporta ciudat...
> 
> http://cs.pub.ro/~pso/Teme/note/341C4/Georgescu%20Sorin%20Mihail/tema4/lin/NOTA

pare sa fie din cauza ca nu ai considerat atat regulile dinamice cat si 
regulile statice (din problemele pe care le-au mai avut si altii de-a 
lungul vremii); am modificat in enunt la precizarea functionalitatii 
pentru FW_LIST

iti sugerez sa modifici testul si sa vezi numarul de reguli pe care il 
primeste el din kernel-space; vei afisa si numarul de reguli pe care 
sa-l asteapta sa-l primeasca; astfel vei vedea diferenta si, destul de 
posibil, detecta si corecta problema

> Mai intai adauga o regula statica prin care INSIDE
> este anuntat ca va primi pachete pe portul 22. Totusi,
> urmatoarele pachete le primeste pe porturile 52, 56,
> etc deci nu vor face match cu regula. Mai mult, portul
> 22 reactioneaza, insa la iesire: portul 22 este
> sender-ul mesajelor de output dar ma intreb de ce
> mesajele de input nu s-au primit tot pe portul 22.

portul este transmis in rutina ioctl FW_ADD in network byte-order; ca sa 
il afisezi in kernel-space in rutina ioctl ar trebui sa apelezi ntohs; 
ai facut asta?

> Aceeasi problema dupa adaugarea primei regule dinamice
> (TCP): se stabilesc doua porturi, dar in loc ca ele sa
> fie folosite pe INPUT si sa faca match, sunt folosite
> inversat la OUTPUT.

sigur ai urmat indicatia din enuntul temei?
"in cazul in care se detecteaza un pachet ce initiaza o conexiune din 
interior, fie el (ip sursa, ip destinatie, port sursa, port destinatie) 
= (a, b, c, d) se va insera in tabela de reguli un pachet (b, a, d, c);"

> M-am gandit ca am inversat eu hook-urile intre ele,
> dar din documentatia citita pare corect: 
> 
> // hook-ul de input:
> static struct nf_hook_ops input_hook = 
> {
> 	.hook        = input_hook_handler,
> 	.hooknum     = NF_IP_LOCAL_IN,
> 	.pf          = PF_INET,
> 	.priority    = NF_IP_PRI_FIRST
> };
> 
> // hook-ul de output:
> static struct nf_hook_ops output_hook = 
> {
> 	.hook        = output_hook_handler,
> 	.hooknum     = NF_IP_LOCAL_OUT,
> 	.pf          = PF_INET,
> 	.priority    = NF_IP_PRI_FIRST
> };

hook-urile netfilter sunt OK

Razvan


More information about the pso mailing list