Eu gostaria de acrescentar a essa pergunta fornecendo feedback sobre minha própria experiência. Não posso comentar ainda.
Estou usando o Proxytunnel 1.9.9 (por volta de abril de 2018) no Windows 7, que eu compilei a partir de fontes usando o Cygwin 32-bit.
Em meus testes, descobri que Proxytunnel não corresponde corretamente ao nome do host do argumento -p com o ServerName em um Apache2 Virtualhost. O uso do Proxytunnel para encapsular um proxy local http OU https falha, a menos que o virtualhost que contém o método AllowCONNECT seja o Virtualhost padrão.
Listar os Virtualhosts que estão habilitados no Apache e ver qual é o padrão:
apachectl -S
Na minha configuração, eu tenho cada virtualhost em seu próprio arquivo no diretório de sites disponíveis. Execute este comando:
ls -1
O primeiro arquivo listado no diretório de sites disponíveis é o virtualhost, que o apache2 fará o virtualhost padrão. Dessa forma, eu troquei o meu proxy de encaminhamento http (ou https) como sendo o virtualhost padrão e o segundo na linha ... mudando seu nome para que ele não aparecesse primeiro em uma lista de diretórios.
Eu encontrei este comando para um proxy local http:
proxytunnel -v -p http-forward-proxy.com:80 -d 192.168.0.10:22
Ou este comando para um proxy local https:
proxytunnel -v -E -C root.pem https-forward-proxy.com:443 -d 192.168.0.10:22
Deu-me o banner do OpenSSH se o método AllowCONNECT estivesse no Virtualhost padrão, mas um erro HTTP 405 se ele não estivesse ... mesmo quando um virtualhost de porta 80 não padrão continha:
ServerName http-forward-proxy.com
Ou no caso de proxy para um proxy de encaminhamento de https, quando um virtualhost de porta 443 não padrão continha:
ServerName https-forward-proxy.com
Eu olhei os logs do Apache2 e o processamento confirmado sempre vai para o virtualhost padrão.
Também publiquei um "Problema" sobre o caso HTTP na página Proxytunnel GitHub
link
No entanto
Eu uso o lado do cliente Proxytunnel com o lado do servidor sslh e stunnel. Nesse cenário, descobri que o nome do host no comando Proxytunnel corresponde ao recurso sni_hostnames {} em sslh, de modo que, nesse contexto, o nome do host parece ser transferido corretamente, pelo menos, quando criptografado e usado o SNI.