[GTER] Cuidados com o Alvo(Target) Mark no iptables

Alexandre J. Correa - Onda Internet alexandre at onda.psi.br
Tue Jun 30 10:10:47 -03 2009


depois do mark voce precisa dar um ACCEPT para que nao siga o 
processamento...

MARK trabalha igual o RETURN (apenas nao marca)


Carlos Eduardo Langoni wrote:
> Demorei 3 dias para entender este problema e encontrar a solução para
> ele, e acho que pode ser útil para outras pessoas, a medida que
> aumenta-se a oferta e disponibilidade de serviços de acesso a
> internet.
>
> Como todos sabem é simples e eficiente fazer balanceamento de carga
> entre dois links de internet com Linux.
> Isso é feito utilizando o Alvo(Target) MARK do iptables em conjunto
> com algumas regras do iproute2[1].
>
> O problema aparece quando começamos a trabalhar com vários alvos MARK.
> No meu caso específico encontrei este problema quando comecei a
> utilizar o NoCat como autenticador da rede, ele identifica o pacote já
> autenticado através de marcas relacionadas a pacotes, 0x4 para não
> autenticados e 0x3,0x2 e 0x1 para os autenticados, dependendo do grupo
> ele escolhe entre as marcas 3,2 e 1.
> Quando eu precisei fazer com que determinados pacotes saissem por uma
> segunda conexão com a internet os problemas começaram. De forma alguma
> eu consegui fazer funcionar. Eu removia todas as regras subia apenas
> as regras necessárias ao roteamento e funcionava, quando misturava com
> as regras nada de funcionar.
>
> Após ler muitos logs e fazer muitos testes comecei a entender o funcionamento.
> No geral quando um pacote casa com uma regra o iptables para o
> processamento na chain e passa para a próxima chain (ou para o envio
> do pacote quando chega na última chain). Mas no caso do alvo MARK,
> como o pacote não foi aceitado nem rejeitado, o processamento não
> para, ele simplesmente associa o pacote à marca e segue para próxima
> regra. Se houver alguma outra regra de MARK conflitante, que também
> case com o pacote, a marca do pacote será alterada.
>
> Exemplo:
> iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -d 200.xxx.xxx.0/24
> -j MARK --set-mark 1
> iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -d 0/0 -j MARK --set-mark 2
> Neste caso todos os pacotes com origem em 192.168.0.0/24 serão
> marcados com 2 no final do processamento
> Se a última regra desta chain fosse:
> iptables -t mangle -A PREROUTING -s 0/0 -d 0/0 -j MARK --set-mark 5
> Todos os pacotes seriam marcados com 5.
>
> Desta forma é preciso muita atenção para criar regras de marcação de
> pacotes, a fim de evitar que a marca não seja aplicada corretamente.
> No caso do exemplo a melhor ordem para as regras seria:
> iptables -t mangle -A PREROUTING -s 0/0 -d 0/0 -j MARK --set-mark 5
> iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -d 0/0 -j MARK --set-mark 2
> iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -d 200.xxx.xxx.0/24
> -j MARK --set-mark 1
>
> Desta forma todos os pacotes com origem em 192.168.0.0/24 com destino
> a 200.xxx.xxx.0/24 recebem marca 1, com origem 192.168.0.0/24 e
> qualquer destino recebem marca 2 e os demais pacotes marca 5
>
> Espero que seja útil para mais alguém esta informação
>
> Abraços a todos!
> [1] http://lartc.org/
> --
> gter list    https://eng.registro.br/mailman/listinfo/gter
>
>   


-- 
Sds.

Alexandre Jeronimo Correa

Onda Internet
www.onda.net.br

IPV6 Ready !
www.ipv6.onda.net.br




More information about the gter mailing list