privoxy + ssh encaminha pedido remoto para o servidor web local

0

Minha máquina local não tem um IP público e o departamento de TI não pode configurar um NAT para mim. Desejo configurar um proxy no meu servidor público remoto que encaminhará a solicitação ao meu servidor local.

Eu tento usar o privoxy + ssh, mas ele diz cabeçalho inválido.

Etapa 1: abra um tunel ssh por

ssh -nNT -R 8081:localhost:8080 [email protected]

Etapa 2: Na máquina remota, configure um privoxy, eu tentei

forward-socks5 / 127.0.0.1:8081 .
listen-address 0.0.0.0:8080

e

forward / 127.0.0.1:8081
listen-address 0.0.0.0:8080

ambos disseram cabeçalho inválido no navegador

    
por cgcgbcbc 15.07.2016 / 13:00

2 respostas

0

Você não está abrindo nenhum túnel usando:

ssh -R -nNT 8081:localhost:8080 [email protected]

mas deve falhar.

Deve ser

ssh -nNT -R 8081:localhost:8080 [email protected]

e é chamado de encaminhamento remoto de portas.

    
por 15.07.2016 / 13:08
0

Após algumas investigações, descobri o motivo:

O Privoxy não é adequado para esse trabalho de proxy reverso, e o ssh forward só aceita tráfego local.

Portanto, existem duas abordagens para resolver esse problema:

  1. configura a regra iptables para o encaminhamento de tcp (não sou profissional nisso, mas acho que é possível)

  2. configure uma solicitação de encaminhamento de proxy reverso para a porta de encaminhamento ssh, isso pode ser feito por meio do nginx ou escreva um simples por si próprio, por exemplo, usando go:

por exemplo,

package main
import (
    "net/http/httputil"
    "net/http"
    "net/url"
    "log"
)

func main() {
    target, _ := url.Parse("http://localhost:8081")
    proxy := httputil.NewSingleHostReverseProxy(target);
    http.Handle("/", proxy)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
    
por 15.07.2016 / 13:59