Redirect outcomming tráfego para o servidor local

1

Eu tenho um servidor web Apache que escuta na porta 4000 e eu quero usar este servidor (local) como um tipo de proxy.

A idéia é redirecionar todo o tráfego HTTP outcomming local (porta 80 ) para o meu servidor em 127.0.0.1:4000 . Obviamente, o servidor deve poder enviar solicitações na porta 80 .

Eu tentei atualizar iptables assim:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:4000

Obviamente, isso não funciona porque o tráfego do meu servidor também é redirecionado para si mesmo.

A pergunta é: como posso autorizar somente solicitações HTTP de meu servidor?

Exemplo:

  1. Uma solicitação é enviada para www.google.com
  2. A solicitação é redirecionada para o meu servidor ( 127.0.0.1:4000 )
  3. O servidor recebe a solicitação, faz algumas coisas e envia uma solicitação para www.google.com

Consegui fazer a primeira parte (2.), mas, por causa disso, meu servidor não pode acessar www.google.com, pois também é redirecionado para si mesmo.

    
por G.T. 26.12.2014 / 17:07

2 respostas

1

Não é uma boa idéia usar o netfilter para isso. Você precisa de um proxy reverso [1], como o que o nginx ou o apache podem fazer.

Se você deseja usar o iptable, pode filtrar a partir da interface incomming como:

iptables -t nat -A OUTPUT -i eth0 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:4000

[1] link

    
por 26.12.2014 / 19:52
0

Acordando nos comentários do @Bratchley, consegui que funcionasse adicionando a opção --uid-owner .

Este é o comando que eu uso:

iptables -t nat -A OUTPUT -m owner --uid-owner 1000 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:4000

Como o servidor apache tem um usuário específico, apenas o tráfego do uid 1000 é redirecionado.

    
por 27.12.2014 / 08:57