Túnel HTTP - HTTP tunnel

O túnel HTTP é usado para criar um link de rede entre dois computadores em condições de conectividade de rede restrita, incluindo firewalls , NATs e ACLs , entre outras restrições. O túnel é criado por um intermediário chamado servidor proxy, que geralmente está localizado em uma DMZ .

O encapsulamento também pode permitir a comunicação usando um protocolo que normalmente não seria compatível com a rede restrita.

Método HTTP CONNECT

A forma mais comum de túnel HTTP é o método HTTP CONNECT padronizado . Nesse mecanismo, o cliente solicita a um servidor proxy HTTP que encaminhe a conexão TCP para o destino desejado. O servidor então prossegue para fazer a conexão em nome do cliente. Depois que a conexão for estabelecida pelo servidor, o servidor proxy continuará a fazer proxy do fluxo TCP de e para o cliente. Apenas a solicitação de conexão inicial é HTTP - depois disso, o servidor simplesmente faz o proxy da conexão TCP estabelecida.

Este mecanismo é como um cliente atrás de um proxy HTTP pode acessar sites usando SSL ou TLS (ou seja, HTTPS). Os servidores proxy também podem limitar as conexões, permitindo apenas conexões com a porta HTTPS padrão 443, hosts da lista de permissões ou bloqueando o tráfego que não parece ser SSL.

Negociação de exemplo

O cliente se conecta ao servidor proxy e solicita o encapsulamento, especificando a porta e o computador host ao qual deseja se conectar. A porta é usada para indicar o protocolo que está sendo solicitado.

CONNECT streamline.t-mobile.com:22 HTTP/1.1
Proxy-Authorization: Basic encoded-credentials

Se a conexão foi permitida e o proxy se conectou ao host especificado, o proxy retornará uma resposta de sucesso 2XX.

HTTP/1.1 200 OK

O cliente agora está sendo encaminhado para o host remoto. Todos os dados enviados ao servidor proxy agora são encaminhados, sem modificações, para o host remoto e o cliente pode se comunicar usando qualquer protocolo aceito pelo host remoto. No exemplo abaixo, o cliente está iniciando as comunicações SSH, conforme sugerido pelo número da porta na solicitação inicial CONNECT.

SSH-2.0-OpenSSH_4.3\r\n
...

Tunelamento HTTP sem usar CONNECT

Um túnel HTTP também pode ser implementado usando apenas os métodos HTTP usuais como POST, GET, PUT e DELETE. Isso é semelhante à abordagem usada em fluxos bidirecionais sobre HTTP síncrono ( BOSH ).

Neste programa de prova de conceito , um servidor HTTP especial é executado fora da rede protegida e um programa cliente é executado em um computador dentro da rede protegida. Sempre que qualquer tráfego de rede é passado do cliente, o cliente empacota novamente os dados de tráfego como uma solicitação HTTP e retransmite os dados para o servidor externo, que extrai e executa a solicitação de rede original para o cliente. A resposta à solicitação, enviada ao servidor, é então reembalada como uma resposta HTTP e retransmitida de volta ao cliente. Como todo o tráfego é encapsulado dentro de solicitações e respostas GET e POST normais, essa abordagem funciona por meio da maioria dos proxies e firewalls.

Veja também

Referências