Como tornar um servidor Web local visível na Internet * sem * configurar o encaminhamento de porta no roteador?

12

Desenvolvo sites no meu laptop (high-end) e trabalho em vários locais físicos.

Gostaria de evitar o incômodo de sincronizar constantemente com um servidor da Web visível externamente para que os clientes testem o progresso do site (ou para fins relacionados). Portanto, estou tentando encontrar uma maneira de permitir que meu laptop seja automaticamente publicamente público visível da Internet, de qualquer local, mesmo quando não tenho acesso ao roteador para configurar o encaminhamento de porta (como em cafeterias ou outras conexões públicas sem fio).

Eu já uso DynDNS para fazer minha escolha de nomes de domínio para a frente para um servidor de área de trabalho através de um roteador que eu ter criado ... mas como eu digo, eu gostaria de desfazer-se da fase de utilizar este servidor desktop.

Eu esperava que os serviços de proxy reverso pagos (cobrando uma taxa mensal por uma conta) fornecessem software proprietário de "proxy reverso" de cliente / servidor em nível de soquete que pudesse ser usado para esse fim. Não consigo encontrar um. Eu já uso o TeamViewer e o LogMeIn, fornecendo serviços proprietários semelhantes. Na verdade, tentei usar a VPN LogMeIn Hamachi para tornar isso possível - tornando minha área de trabalho (já visível na Internet) encaminhar o tráfego IP solicitando a porta 80 junto com a VPN para o meu laptop. No entanto, não parece possível configurar o Hamachi / Windows dessa maneira (mas posso estar errado).

Espero que exista uma maneira simples e robusta de fazer isso.

Dan Nissenbaum
fonte
Na verdade, você pode configurar um servidor Web básico usando o navegador Opera (Opera unite), mas essa é uma solução apenas no caso de aplicativos HTML + JavaScript que, acredito, não atendem às suas necessidades.
jakub.g
Atualmente, tenho um servidor Web operacional - Apache (configurado como parte de uma instalação do XAMPP para Windows). Esse servidor da Web funciona bem e, quando executado na minha área de trabalho atrás de um roteador permanente, não há nenhum problema em ser visível na Internet, porque configurei o encaminhamento de porta no meu roteador. Estou interessado em encontrar uma maneira de tornar meu servidor Web local visível publicamente na Internet quando não tiver acesso ao roteador para configurar o encaminhamento de porta.
Dan Nissenbaum 21/09/11

Respostas:

8

Se você possui um servidor para o qual pode fazer o SSH e esse servidor permite que você escute nas portas relevantes o (s) endereço (s) IP público (s) (se você o controlar, ele será) - talvez até a máquina de desktop que você descreve se instalar o SSHd via cygwin ou similar), você pode usar a opção de encapsulamento do SSH para atrair tráfego para o servidor local.

Algo como: ssh [email protected] -g -R 11.22.33.44:80:127.0.0.1:80uma vez conectado e autenticado, criará a porta 80 em 22.23.33.44 (assumindo que seja um endereço público do servidor) aceitará as conexões que serão encaminhadas para a porta 80 local. Você precisa da opção GatewayPorts ativada no servidor para escutar em um endereço de host não local dessa maneira e precisa estar logado como root para escutar em portas abaixo de 1024, e se já houver um serviço escutando na porta 80, obviamente você precisará escolher outra coisa. É recomendável adicionar a -Copção para ativar a compactação dos fluxos via SSH, especialmente se você conectar o laptop por uma rede lenta (talvez preso no meio do nada, apenas com uma conexão móvel GPRS disponível).

Para usar o ssh no Windows, você tem algumas opções. Você pode instalar a porta do cygwin [então o comando que eu dei acima deve JustWork (tm)] ou usar algum outro cliente. O PuTTY é uma opção muito popular e suporta o tunelamento de porta remota.

Dessa forma, o servidor Web da sua máquina estará sempre disponível no mesmo endereço também quando conectado, não importa de onde você se conecta, portanto, não há necessidade de usar DNS dinâmico para nomes amigáveis ​​que você deseja atribuir (supondo que o servidor ao qual você se conecta) tem um endereço público fixo, é claro).

Em vez de usar um servidor doméstico ou de escritório para isso, o que pode desacelerar ainda mais, a menos que você tenha uma conexão rápida e agradável nas duas direções, poderá obter melhores resultados alugando um pequeno VPS Linux em algum lugar (de preferência no mesmo país) apenas por este propósito. Você só precisa da menor das máquinas, desde que haja largura de banda suficiente, e isso custará apenas alguns ou poucos dólares por mês.

Além do SSH, você também pode considerar uma ferramenta VPN como o OpenVPN e usar regras simples de tabelas de ip no servidor para encaminhar conexões para a sua máquina quando conectada. Isso pode ser mais eficiente e menos aborrecido uma vez configurado, mas pode ser um pouco mais complicado de configurar se você não estiver familiarizado com ele e o roteamento em geral já. Novamente, um VPS barato ou seu próprio escritório / servidor doméstico faria como o servidor final da VPN.

David Spillett
fonte
+1: Eu estava prestes a sugerir o tunelamento ssh, mas você me deu uma explicação e explicou-o mais claramente do que eu teria, para inicializar.
Dave Sherohman
Excelente resposta, obrigado. Eu já tenho o WinSSHD (do Bitvise - um programa pago), então devo poder usá-lo. Talvez eu tente usar o iptables para rotear os dados (inicialmente, pensando nisso, fiquei confuso porque sabia que os dados estavam chegando ao computador na rede local compartilhada com o roteador, mas não na rede local compartilhada com a VPN - não que isso me confunda). Qualquer pessoa que queira postar um exemplo da entrada necessária de iptable que funcione com um roteador e transmita dados para uma rede VPN, será muito bem-vinda e apreciada!
Dan Nissenbaum 26/09/11
1

O encapsulamento de IPV6 no laptop, combinado com um proxy ipv4 a 6 - o gogo6 possui um serviço agradável e gratuito com um cliente para atualizar automaticamente como parte do freenet6 -. Combine isso com um registro AAAA e um proxy que traduz do ipv6 para o 4 (o sixxs executa um público) ou, para uma solução mais elegante, seu próprio servidor proxy (o polipo pode funcionar) que executa a tradução no mesmo endereço A

Configurado corretamente, isso deve ser principalmente transparente, exceto a latência leve de ser devolvida tantas vezes.

Journeyman Geek
fonte