Redirecionamento de correspondência de cadeia de caracteres do IPTables

2

O problema: No momento, estou redirecionando solicitações da porta 80 para outro sistema na porta 1000.

Isso é feito da seguinte forma:

iptables -t nat -A PREROUTING ! -s 172.20.1.2 -p tcp --dport 80 -j DNAT --to-destination 172.20.1.2:1000

No entanto, ao adicionar -m string --algo kmp --string 'MSIE' para filtrar pacotes com o MSIE, eles estão sendo ignorados devido ao pré-detalhamento que apenas avalia o primeiro pacote SYN (portanto, faltando os pacotes HTTP com os cabeçalhos que estou tentando avaliar)

A regra quebrada:

iptables -t nat -A PREROUTING ! -s 172.20.1.2 -p tcp --dport 80 -j DNAT --to-destination 172.20.1.2:1000 --algo kmp -m string --string 'MSIE'

Minha pergunta: Como posso avaliar os cabeçalhos HTTP e redirecionar o pacote ou disparar um evento do sistema quando ocorre uma correspondência de seqüência de caracteres?

    
por Fostah 25.06.2013 / 21:27

1 resposta

3

Citando a página man:

DNAT (IPv4-specific)

This target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defined chains which are only called from those chains.

Em outras palavras: você perdeu, não é possível. E isso é óbvio, já que você não pode alterar o endereço de destino no meio de uma conexão (sem repará-lo no novo destino).

Você quer a camada de aplicação, você precisa de um aplicativo. Redirecionar todos os pacotes para um proxy (transparente) que pode decidir o que fazer com as conexões.

    
por 25.06.2013 / 22:44