Re: reverseproxy using httptunnel

Ian Holsman <[email protected]> Sat, 6 Mar 2004 09:48:43 +1100
Newsgroups gmane.comp.apache.mod-proxy
Message-ID <[email protected]>
have you thought of just opening a dedicated SSH port?
or using a program like tcprelay on your firewall?

I'm sure you've got your system admin's blessing on doing this, so  
these two options shouldn't be too much of a drama
(seeing how he's willing for you to tunnel over http anyway)

if you haven't just install a reverse telnet/ssh session on  your  
destination.

On 06/03/2004, at 9:38 AM, Jim Duda wrote:

> Chris,
>
> Thanks.  I installed the patch which you suggested.  The
>  tunnel nows works.  The performance is sluggish though.
>  I'm sure it's caused by all the overhead of the GET and POST
>  operations.
>
> Do you suspect the alternate suggestion might help the performance?
>
> Jim
>
>
>
> "Conti, Chris" <[email protected]> wrote in message
>   
> news: 
> [email protected]...
>  > If you refer to BUG 19954:
> > http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19954
>  > This looks like the issue I was trying to patch.  In the current 2.x
>  > codebase, the reverse proxy will effectively cache traffic until it  
> has
>  8000
>  > bytes to send.  According to Jeff Trawick, the caching effect is  
> not an
> > intended behavior, rather it is a network optimization that just  
> happens
>  to
>  > break tunneling of non-http traffic.
> >
>  > I've been swamped at work for the last few months, and have not had  
> time
>  yet
>  > to rework my proposed patch based on the feedback in the bugzilla  
> report;
>  > but I believe the patch as proposed will solve your immediate  
> issue. Of
>  > course, feel free to rework the patch if you feel up to it!
>  >
>  >
>  > ---------------------------------------------------------
>  > Chris Conti
>  > mailto://[email protected]
> > mailto://[email protected]
> >
>  >
>  > If at first you do succeed, try not to look astonished.
>  >
>  >
>  > -----Original Message-----
>  > From: Jim Duda [mailto:[email protected]]
>  > Sent: Thursday, March 04, 2004 9:41 PM
>  > To: [email protected]
> > Subject: reverseproxy using httptunnel
>  >
>  > I'm trying to use GNU httptunnel
>  > (http://www.nocrew.org/software/httptunnel.html)
>  > behind apache using the reverseproxy feature.  Apache version 2.0.48
>  >
>  > I have reverseproxy working, as I have another machine behind  
> apache using
>  > this feature serving up html pages properly.  Works great.
>  >
>  > I have apache running on my firewall.  I only have 1 single common  
> port
>  > between my firewall and my client.  I only have port 443 to work  
> with.
>  > I'm using port 443 with basic http.  I need apache to server web  
> pages,
>  but
>  > I also need other non-web services.  At first, I just want to get a  
> telnet
>  > client working, but hope to migrate to ssh later.  I'm aware of the
>  security
>  > issues this imposes.  My firewall is setup to only allow a client
>  connection
>  > on port 443 from the allowable location.
>  >
>  > My httpd.conf has the following - among other things (-:
>  >
>  > Listen 443
>  > <VirtualHost *>
>  >   ServerName <myserver>.com
> >   ProxyPass / http://localhost:8888/
> >   ProxyPassReverse / http://localhost:8888/ </VirtualHost>
>  >
>  > I run the httptunnel server on the firewall machine.
>  > hts -F localhost:23
>  >
>  > I run the httptunnel client on the client side.
>  > htc -F localhost:8000 <myserver>.com:443
> >
>  > On the client, I issue:
>  > telnet localhost 8000.
>  >
>  > On the server, I've used ethereal to watch the traffic.
>  > I see the client open a connection with apache on 443.
>  > I see apache open a connection with the hts server on port 8888.
>  > I see the hts server open a connection on port 23.
>  > I see the client send a POST and GET through apache to the  
> httptunnel
>  server
>  > on port 8888.
>  > The telnet port sends stuff to the httptunnel server port.
>  >
>  > The httptunnel server responds to the GET command with
>  > 15 bytes using 3 separate TCP packets back to the apache server.
>  >
>  > 0 (0000  02                                                .)  
> putline
>  > 0 (0000  00 0c                                             ..)  
> putline
>  > 0 (0000  ff fd 18 ff fd 20 ff fd 23 ff fd 27               .....  
> ..#..')
>  > putline
>  >
>  > I believe these 15 bytes are the beginning of the telnet  
> negotiation.
>  >
>  > I never see the 15 bytes comes out of the apache server on the  
> otherside
>  of
>  > the firewall towards the client.  The client side is stopped  
> waiting for a
>  > response.
>  >
>  > I've turned on apache debugging and then used the printf debugging
>  approach
>  > and found I'm stuck inside proxy_http.
>  >
>  > I get the debug message
>  > "proxy: start body send" in logs/error_log
>  >
>  > I'm stuck in proxy_http.c, line 928
>  >                 while (ap_get_brigade(rp->input_filters,
>  >                                       bb,
>  >                                       AP_MODE_READBYTES,
> >                                       APR_BLOCK_READ,
> >                                       conf->io_buffer_size) ==
>  APR_SUCCESS)
> > {
>  >
>  > The ap_get_brigade function never returns, and I'm stuck here.
> >
>  > I get through this loop three times, before the httptunnel stops  
> sending
>  > data, then I'm stuck.  The client needs to receive these bytes and
>  transmit
>  > to the server again before the server will send any more data.
>  >
>  > Am what I'm attempting completely wacked?
>  >
>  > Can anyone offer any pointers on what to look for next?
>  >
>  > I will continue to debug further.
>  >
>  > Thanks,
>  >
>  > Jim
>  >
>  >
>  >
>  >
>  >
>
>
--
Ian Holsman
Director
Network Management Systems
CNET Networks
PH: (61) 3-9857-3742 (Australia)/ 415-344-2608 (USA)