Tunel HTTP — HTTP tunnel

Tunelowanie HTTP służy do tworzenia łącza sieciowego między dwoma komputerami w warunkach ograniczonej łączności sieciowej , w tym między innymi zapór ogniowych , NAT i ACL . Tunel jest tworzony przez pośrednika zwanego serwerem proxy, który zwykle znajduje się w strefie DMZ .

Tunelowanie może również umożliwić komunikację przy użyciu protokołu, który normalnie nie byłby obsługiwany w sieci z ograniczeniami.

Metoda HTTP CONNECT

Najpopularniejszą formą tunelowania HTTP jest ustandaryzowana metoda HTTP CONNECT . W tym mechanizmie klient prosi serwer proxy HTTP o przekazanie połączenia TCP do żądanego miejsca docelowego. Serwer następnie przystępuje do nawiązania połączenia w imieniu klienta. Po nawiązaniu połączenia przez serwer, serwer proxy kontynuuje przekazywanie strumienia TCP do i od klienta. Tylko początkowe żądanie połączenia to HTTP - po tym serwer po prostu przekazuje ustanowione połączenie TCP.

Dzięki temu mechanizmowi klient za proxy HTTP może uzyskać dostęp do stron internetowych przy użyciu protokołu SSL lub TLS (tj. HTTPS). Serwery proxy mogą również ograniczać połączenia, zezwalając tylko na połączenia z domyślnym portem HTTPS 443, umieszczając hosty na białej liście lub blokując ruch, który nie jest zgodny z protokołem SSL.

Przykładowa negocjacja

Klient łączy się z serwerem proxy i żąda tunelowania, określając port i komputer hosta, z którym chciałby się połączyć. Port służy do wskazania żądanego protokołu.

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

Jeśli połączenie było dozwolone, a proxy połączyło się z określonym hostem, proxy zwróci odpowiedź 2XX powodzenia.

HTTP/1.1 200 OK

Klient jest teraz obsługiwany przez serwer proxy do zdalnego hosta. Wszelkie dane wysyłane do serwera proxy są teraz przekazywane, niezmodyfikowane, do zdalnego hosta, a klient może komunikować się za pomocą dowolnego protokołu akceptowanego przez zdalnego hosta. W poniższym przykładzie klient rozpoczyna komunikację SSH, jak wskazuje numer portu w początkowym żądaniu CONNECT.

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

Tunelowanie HTTP bez użycia CONNECT

Tunel HTTP można również zaimplementować przy użyciu tylko zwykłych metod HTTP, takich jak POST, GET, PUT i DELETE. Jest to podobne do podejścia stosowanego w strumieniach dwukierunkowych przez synchroniczny HTTP ( BOSH ).

W tym programie do weryfikacji koncepcji specjalny serwer HTTP działa poza chronioną siecią, a program klienta jest uruchamiany na komputerze w chronionej sieci. Za każdym razem, gdy jakikolwiek ruch sieciowy jest przekazywany od klienta, klient ponownie pakuje dane o ruchu jako żądanie HTTP i przekazuje dane do serwera zewnętrznego, który wyodrębnia i wykonuje oryginalne żądanie sieciowe dla klienta. Odpowiedź na żądanie, wysłana do serwera, jest następnie przepakowywana jako odpowiedź HTTP i przekazywana z powrotem do klienta. Ponieważ cały ruch jest enkapsulowany w normalnych żądaniach i odpowiedziach GET i POST, to podejście działa przez większość serwerów proxy i zapór.

Zobacz też

Bibliografia