O redirecionamento da porta 80 não funciona para o host local

4

Eu quero rodar um simples servidor web python no meu linux do ubuntu com o seguinte comando (ele simplesmente coloca o diretório atual na porta especificada)

python -m SimpleHTTPServer 8080

Estou usando a porta 8080 para evitar o uso do sudo para ser executado na porta 80

Para torná-lo acessível, eu redireciono a porta 80 para a porta 8080 com o seguinte comando:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Agora, qualquer computador pode acessar meu site giuliopizzini.com EXCEPT localhost que recebe um erro de soquete, conexão recusada. Se eu apontar localhost para giuliopizzini.com:8080, tudo funciona bem, mas o redirecionamento falha.

Eu tenho o firewall ativado, mas se eu redefini-lo com

sudo iptables -F

o comportamento é exatamente o mesmo, de modo que parece não ter um papel aqui.

Como posso fazer o redirecionamento funcionar no host local também?

    
por gws 09.01.2013 / 15:23

1 resposta

5

Você precisa adicionar outra regra para o redirecionamento de localhost:

sudo iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-port 8080

Você precisa incluir o IP de destino que está usando para se conectar, como localhost ou qualquer IP de interface.

O tráfego gerado localmente não atinge a cadeia PREROUTING . Ele atinge a cadeia OUTPUT na tabela nat, que é o que a regra acima está fazendo.

    
por 09.01.2013 / 15:26