IPTABLES - DNAT não funciona com o modulo STRING - Ajudem por favor

1. IPTABLES - DNAT não funciona com o modulo STRING - Ajudem por favor

Lawrence Waclawiak
CafezinhoComTi

(usa Debian)

Enviado em 17/04/2009 - 13:35h

Prezados colegas, Boa Tarde!

Estou utilizando o modulo STRING para identificar o nome "teste.lalala.com.br" nos pacotes que entram em um servidor http, para baseando-se nisso fazer um DNAT para outro servidor, porém não estou conseguindo.
Parece que tem alguma coisa que impede que o DNAT seja feito baseando-se na procura de STRINGS.
Com o modulo STRING consegui fazer accepts, rejects, drops etc mas DNAT não.

Ex de um DNAT por porta: FUNCIONA
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.234.56.1

Ex da primeira tentativa: NÃO FUNCIONA !
# iptables -t nat -A PREROUTING -p tcp --dport 80 -m string --string "lalala" -j DNAT --to-destination 192.234.56.1
Não funcionou.

Então pensei:
Vou enganar o iptables, vou usar marcação de pacotes e depois fazer o DNAT pela marca do pacote e não diretamente pela STRING, ou seja, na tabela mangle procuro nos pacotes tcp com destino a porta 80 pela string "lalala" e marco os que a contiverem com um carinbo "0x1"
Depois na tabela nat procuro pelos pacotes que tenham a marca "0x1" e mando fazer o DNAT

Ex da segunda tentativa: NÃO FUNCIONA !
# iptables -t mangle -A PREROUTING -p tcp --dport 80 -m string --string "lalala" --algo bm -j MARK --set-mark 0x1
# iptables -t nat -A PREROUTING -m mark --mark 0x1 -j DNAT --to-destination 192.234.56.1
Mesmo assim não funciona!

Agora se na tabela mangle eu marcar os pacotes que estão entrando pela porta 80 com "0x1" e depois na tabela nat eu mandar fazer o DNAT dos pacotes marcados com 0x1 FUNCIONA.

Ex: FUNCIONA
# iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 0x1
# iptables -t nat -A PREROUTING -m mark --mark 0x1 -j DNAT --to-destination 192.234.56.1
Assim funcionou.

Então eu pensei.. pois bem, o que está acontecendo é que não consigo marcar os pacotes me baseando na string.. o modulo não deve suportar.
Então testei marcar os pacotes pela STRING "lalala" na tabela mangle e depois na tabela nat dar um drop nos pacotes marcados.
Para meu espanto FUNCIONOU!
Ex:
# iptables -t mangle -A PREROUTING -p tcp --dport 80 -m string --string "lalala" --algo bm -j MARK --set-mark 0x1
# iptables -t nat -A PREROUTING -m mark --mark 0x1 -j DROP

Ou seja a marcação funciona.
Tem alguma coisa que impede que se faça DNAT quando de alguma forma a origem dessa decisão tenha sido feita pelo modulo STRING.
Cheguei a marcar os pacotes com o string, depois remarca-los com uma segunda marca "0x2" baseando-me pela primeira marca e posteriormente tentando o DNAT pela segunda marca "0x2"
Ex: NÃO FUNCIONA !
# iptables -t mangle -A PREROUTING -p tcp --dport 80 -m string --string "lalala" --algo bm -j MARK --set-mark 0x1
# iptables -t mangle -A PREROUTING -m mark --mark 0x1 -j MARK --set-mark 0x2
# iptables -t nat -A PREROUTING -m mark --mark 0x2 -j DNAT --to-destination 192.234.56.1
Não adianta, não vai

Alguém que já passou por situação parecida poderia por favor me ajudar? Já arranquei metade dos meus cabeleos tentando essa solução e nada!

Agradeço qualquer colaboração, nem que seja pra dizer que também andou a arrancar os cabelos e não conseguiu..

Abraços,
Lawrence Waclawiak


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts