Estou tentando encaminhar o tráfego da web de um servidor remoto para minha máquina local para testar alguma integração de API (tropo, paypal etc.). Basicamente, estou tentando configurar algo semelhante ao que o tunnlr.com fornece.
Eu iniciei o túnel ssh com o comando
$ssh –nNT –R :7777:localhost:5000 user@server
Então eu posso ver que o servidor agora está escutando na porta 7777 com
user@server:$netstat -ant | grep 7777
tcp 0 0 127.0.0.1:7777 0.0.0.0:* LISTEN
tcp6 0 0 ::1:7777 :::* LISTEN
$user@server:curl localhost:7777
Hello from local machine
Então isso funciona bem. A solicitação de onda é realmente servida na máquina local.
Agora, como faço para ativar o server.com:8888 para ser roteado por esse túnel?
Eu tentei usar o nginx da seguinte forma:
upstream tunnel {
server 0.0.0.0:7777;
}
server {
listen 8888;
server_name server.com;
location / {
access_log /var/log/nginx/tunnel-access.log;
error_log /var/log/nginx/tunnel-error.log;
proxy_pass http://tunnel;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
}
}
No log de erros do nginx, vejo:
[error] 11389#0: *1 connect() failed (111: Connection refused)
Eu tenho procurado usar iptables
, mas não fiz nenhum progresso. iptables
parece uma solução mais elegante do que rodar o nginx apenas para tunelamento. Qualquer ajuda é muito apreciada. Obrigado!
EDITAR (adicionando informações do servidor)
Detalhes do servidor: Ubuntu 10.10 Maverick (instalação padrão)
EDITAR (opção nginx)
As opções nginx trabalhadas mudaram de 0.0.0.0:7777 para 127.0.0.1:7777 como sugerido por @Marcel G. Ainda procurando por soluções não-nginx.
EDIT (atualização na solução final)
Como @sciurus apontou, certifique-se de que GatewayPorts yes
no seu arquivo sshd_config. Eu inicialmente tinha essa linha no arquivo de configuração, mas eu precisava emitir um /etc/init.d/ssh reload
em vez de restart
(pelo menos parece que no Ubuntu).
Comando final usado na máquina local:
ssh -nNT -R '*:8888:localhost:5000' user@server
Em seguida, o servidor deve indicar que está escutando em *: 8888 com lsof -i tcp:888
user@server:~$ sudo lsof -i tcp:8888
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 14711 user 8u IPv4 1791013 0t0 TCP *:8888 (LISTEN)
sshd 14711 user 9u IPv6 1791014 0t0 TCP *:8888 (LISTEN)