CONTENT
  • CHANGES
Szukaj
counter

#top HTTP Tunnel / HTTP Proxy Tunnel


#top DESCRIPTION


Jak to działa.
Niestety, istniejące rozwiązanie (http-tunnel) nie działa poprzez każde HTTP proxy:
http://http-tunnel.sourceforge.net/
http-tunnel
http://http-tunnel.sourceforge.net/common/dgram.gif

Toteż napisano własne rozwiązanie niniejszego problemu.
Jak to działa. Wystarczy popatrzeć na poniższy diagram.

+-------------------------------+          +-----------------------+          +-----------------------------------------------+          +---------------------+
|   Client Local Side           |          |       Proxy Side      |          |                   Server Side                 |          |     Remote Side     |
+-------------------------------+          +-----------------------+          +-----------------------------------------------+          +---------------------+
|           +-----------------+ |          |         SQUID         |          | +------------------+      +-----------------+ |          |   +-------------+   |
|OpenSSH    |    httptunnc    | |          |      Net-Scaller      |          | |                  |      |    httptunnd    | |          |   |   OpenSSH   |   |
| ssh ===>  | localhost:3002  | |   ===>   |                       |   ===>   | | HTTPD/Apache/PHP | ===> | localhost:3001  | |   ===>   |   |   sshd:22   |   |
| scp       |                 | |          |                       |          | |                  |      |                 | |          |   |             |   |
|           +-----------------+ |          |                       |          | +------------------+      +-----------------+ |          |   +-------------+   |
+-------------------------------+          +-----------------------+          +-----------------------------------------------+          +---------------------+

Po stronie klienta (lokalnej) uruchomiony jest proces httptunnc odpowiedzialny za utrzymanie ciągłości połączenia odebranego od programu ssh. Po stronie serwera (zdalnej) uruchomiony jest proces httptunnd odpowiedzialny za utrzymanie ciągłości połączenia nawiązanego z demonem sshd. Proces httptunnc nasłuchuje na porcie 3002, odbiera połączenie od programu ssh (scp/sftp/rsync), i nawiązuje połączenie z serwerem HTTPD/Apache (żądanie odbierane jest przez serwer HTTPD/Apache, ale obsługa żądania jest już realizowana przez skrypt PHP), następnie httptunnc odbiera dane binarne od programu ssh (jeśli takowe zostały wysłane), enkoduje dane binarne do postaci BASE64 (jeśli takowe zostały wysłane) i wysyła metodą POST protokołu HTTP do serwera HTTPD/Apache. Skrypt PHP realizuje obsługę żądania HTTP. Jeśli metodą POST zostały przesłane dane to te dane w niezmienionej postaci przesyłane są do procesu httptunnd. Proces httptunnd nawiązuje połączenie ze zdalnym demonem sshd, dekoduje dane z postaci BASE64 do postaci binarnej (jeśli takowe zostały wysłane) i wysyła do demona sshd, po czym odbiera dane binarne od demona sshd (jeśli takowe zostały wysłane), a następnie koduje jest do postaci BASE64 i przesyła je w odpowiedzi do skryptu PHP. Skrypt PHP po odebraniu danych zwraca te dane w niezmienionej postaci do procesu httptunnc, który dekoduje dane z postaci BASE64 do postaci binarnej i odsyła do programu ssh. W celu optymalizacji połączenia zestawiane jest połączenie HTTP z włączoną właściwością keep-alive (w żądaniach przesyłany jest nagłówek Connection: keep-alive). Jeśli jednak serwer WWW lub Proxy zamkną połączenie zostanie ono ponownie nawiązane, dzięki czemu połączenie pomiędzy komunikującymi się procesami klienta ssh i serwera sshd utrzymywane jest w postaci ciągłej.



#top Download


Download:



#top SYNOPIS


Usage: httptunnd [options] <listen-addr:listen-port> <connect-addr:connect-port>
Examples:
httptunnd -T 5.0 -w 3.0 0.0.0.0:3001 10.41.0.35:22

Usage: httptunnc [options] <listen-addr:listen-port> <connHinfo> <connect-addr:connect-port>
Examples:
httptunnc -T 25.0 -w 3.0 0.0.0.0:3002 http://addons.wbcd.pl/pt/pt.php 10.41.0.35:22



#top OPTIONS for httptunnd


OPTIONS
-d
show debug information

-q
do not show additional information

--syserrors
print syserrors in result error requests

--prefer-family=family
inet family, possible: AF_UNSPEC|AF_INET|AF_INET6 (default: 0[AF_UNSPEC])

--inet4|--ipv4
Resolve name to IPv4 address

--inet6|--ipv6
Resolve name to IPv6 address

-w|-W <connect-timeout> (-W - for compability with ping)
(default: 5.000000)

-T <socket-timeout>
Connect Send/Recv Timeout (default: Connect=5.000000 Send/Recv=300.000000)

-t <wait-timeout>
select Wait Timeout (default: Wait=0.500000)

--bind=<addr:port>
bind to sock addr and port (default: )



#top OPTIONS for httptunnc


OPTIONS
-d
show debug information

-q
do not show additional information

--syserrors
print syserrors in result error requests

--prefer-family=family
inet family, possible: AF_UNSPEC|AF_INET|AF_INET6 (default: 0[AF_UNSPEC])

--inet4|--ipv4
Resolve name to IPv4 address

--inet6|--ipv6
Resolve name to IPv6 address

-w|-W <connect-timeout> (-W - for compability with ping)
(default: 5.000000)

-T <socket-timeout>
Connect Send/Recv Timeout (default: Connect=5.000000 Send/Recv=300.000000)

-t <wait-timeout>
select Wait Timeout (default: Wait=0.500000)

-U <User-Agent>|--user-agent=<User-Agent>
User-Agent string (default: Mozilla/5.0 (X11; Linux i686; rv:10.0.11) Gecko/20121120 Firefox/10.0.11)

--http-keep-alive
HTTP Connection keep-alive (default: close)

--proxyurl=<proxyurl>
HTTP Proxy URL

--proxytunnel
HTTP Proxy Tunnel




Zmodyfikowany ostatnio: 2017/08/30 15:21:12 (6 lat temu), textsize: 9,40 kB, htmlsize: 14,0 kB

Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników