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. Tags networking iptables routing