Roteamento da camada 3 com base no conteúdo do pacote HTTP

2

Estou executando um serviço de proxy HTTP e quero rotear o tráfego para várias Camada 3 TUNs com base no conteúdo de pacotes HTTP (por exemplo, cabeçalhos HTTP ).

Estou usando BSD e Linux para fazer isso, mas não parece que nenhum deles seja capaz de classificação Camada 7 ao tomar decisões de roteamento (pelo menos, sem escrever meus próprios patches extensos do kernel).

Então, é possível tomar Camada 3 decisões de roteamento com base no conteúdo dos pacotes HTTP no Linux ou BSD ?

E, se não, qualquer Unix baseado sistemas operacionais ou distribuições tem essa capacidade?

    
por Joshua Griffiths 01.12.2015 / 10:24

2 respostas

2

Para o BSD eu procuraria relayd(8) - é nativo do OpenBSD, mas eu acredito que o FreeBSD também tem um port. É bastante poderoso e pode fazer mais do que algumas coisas (ex., Proxy, balanceador de carga, gateway de aplicativo) incluindo o que você está pedindo.

Leia as man pages, particularmente a seção 'Regras de filtro' e 'Protocolos':

Definitivamente, pule na lista de discussão 'misc' do openbsd se tiver problemas. A comunidade é rápida e o autor está sempre disponível.

relayd está intimamente conectado ao filtro de pacotes pf , que é como ele é capaz de criar regras em conjunto para a Camada 3 e 7

    
por 01.12.2015 / 13:04
2

O problema que vejo aqui é que você precisa aceitar a conexão TCP antes de ver a solicitação http. Assim, mesmo que o sistema possa usar dados em nível de aplicativo, ele não terá esses dados no momento em que precisar decidir onde a conexão precisa ir.

Eu não acho que há muita escolha, mas para ter um "proxy reverso", que termina a conexão TCP do cliente e, em seguida, estabelece uma conexão TCP para o servidor de origem.

    
por 01.12.2015 / 15:04