tc - usar simultaneamente handle e u32 ?

1. tc - usar simultaneamente handle e u32 ?

Aruã Metello
aruametello

(usa Debian)

Enviado em 24/09/2008 - 11:08h

Saudações!
é o meu primeiro post (e eu nunca fui familiar com foruns, então pegue leve se for falar algo "menos" util.)

Problema:
É possivel nos filtros do tc usar os classificadores handle e u32 ao mesmo tempo? o que eu adoraria ter em mãos seria dar destino especifico a um pacote que simultaneamente tem "$ip" endereço de destino, porta "x" e está marcado pelo iptables com o numero "$mark".

eu encontrei outras soluções "menos" elegantes para o problema, mas eu creio q talvez alguma sintaxe ou patch do tc permita o q eu estou procurando.

tc filter add dev $if_net protocol ip handle $mark fw flowid 1:10#exemplo mark
tc filter add dev $if_lan protocol ip u32 match ip dst $ip flowid 1:10#exemplo u32

o q eu estava querendo seria similar a isto:
tc filter add dev $if_net protocol ip \
handle $mark fw \
u32 dport 80 0xffff \
u32 match ip dst $ip flowid 1:10

Descriçaõ do hardware envolvido:
Eu tenho um roteador debian para administrar os recursos de internet da minha casa, ele usa um modem adsl em modo bridge (q é o ppp0), e tem duas interfaces de rede, eth0 (a lan) e eth1 (isolando o modem)


Caso alguem queira o script q escrevi e estou usando atualmente:
http://rapidshare.com/files/147994692/v4_qos.sh.html
(foi mal se vc não gosta do rapidshare, mas o post ia ficar longo demais com o texto todo do script)

eu creio q ele pode ser uma adição para scripts do site orientados a "administrar a banda de internet para pequenas redes"


  


2. ok, consegui resolver já...

Aruã Metello
aruametello

(usa Debian)

Enviado em 25/09/2008 - 23:25h

eu acabei encontrando a solução, o classificador u32 pode comparar a marcação da kernel usando o "match mark", a mascara é para especificar como os bits serão comparados.

tc filter add dev eth0 protocol ip u32 match ip dst 10.1.1.1 match mark 55 0xff flowid 1:10

este exemplo atribui a classe 1:10 os pacotes que na interface eth0 estão indo para 10.1.1.1 e estão marcados com o numero 55.


uma palavrinha extra:
eu achei bem curioso q na maior parte dos autores da descrição classificador u32, é dito que ele classifica o pacote utilizando "qualquer bit do pacote", o q torna o u32 extremamente util para comparar, mas quando vc usa o "mark" no iptables, vc não está modificando nenhum bit do pacote (note q mark e tos são coisas diferentes), e portanto a ultima coisa q eu esperava era exatamente uma exeção a descrição do u32 que eu encontrei em outros lugares... ufa...









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts