Redirecionamento de porta em loopback com IP diferente de 127.0.0.1

2

Eu quero redirecionar a porta 80 na interface de rede de loopback para que os acessos a essa porta realmente passem para a porta 8080.

Eu tentei usar o seguinte comando, mas ele só funciona se o aplicativo estiver escutando em 127.0.0.1:8080, mas não se estiver escutando em 127.1.2.3:8080.

sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 80 -j REDIRECT --to-ports 8080

Eu também tentei adicionar --source 127.1.2.3/32 --destination 127.1.2.3/32 , mas ainda não funciona.

O redirecionamento funciona se eu abrir um aplicativo ouvindo em 127.0.0.1:8080:

ssh remote -L127.0.0.1:8080:192.168.0.3:80

nc 127.0.0.1 80 # works

Mas não funciona se eu abrir uma aplicação ouvindo em 127.1.2.3:8080:

ssh remote -L127.1.2.3:8080:192.168.0.3:80

nc 127.1.2.3 80 # fails
nc: connect to 127.1.2.3 port 80 (tcp) failed: Connection refused

nc 127.1.2.3 8080 # works, so the application is still listening on 8080

Como posso redirecionar a porta 8080 em 127.x.x.x para a porta 80 no mesmo IP?

Atualização: motivação

Estou tentando usar o SSH para fazer os seguintes encaminhamentos de porta (127.1.2.3:80 → 192.168.0.3:80 e 127.1.2.4:80 → 192.168.0.4:80):

ssh remote -L127.1.2.3:80:192.168.0.3:80 -L127.1.2.4:80:192.168.0.4:80

Como a porta 80 é "privilegiada", o ssh não pode abri-la no host local. Existem várias maneiras de contornar isso:

  • sudo ssh , mas eu não quero ter que copiar minha configuração ssh e chaves na conta root.
  • Use recursos, mas as atualizações de pacotes podem quebrar isso.
  • Use uma porta diferente (por exemplo, 8080), que funciona, mas os URLs não relativos são quebrados.
  • Redirecione a porta privilegiada para uma não privilegiada, e é isso que estou tentando fazer. Ele funciona para um único redirecionamento em 127.0.0.1, mas falha se eu tiver redirecionamentos em IPs diferentes de 127.0.0.1 (veja acima).
por Georges Dupéron 13.05.2014 / 16:00

0 respostas