[3750] in linux-net channel archive

home help back first fref pref prev next nref lref last post

Re: CONFIG_IP_TRANSPARENT_PROXY sample programs?

daemon@ATHENA.MIT.EDU (Mike Shaver)
Thu Jul 18 16:35:27 1996

From: Mike Shaver <shaver@neon.ingenia.ca>
To: david@sealabs.com (David Bonn)
Date: 	Wed, 17 Jul 1996 17:22:47 -0400 (EDT)
Cc: linux-net@vger.rutgers.edu
In-Reply-To: <199607161945.MAA11840@torment.sealabs.com> from "David Bonn" at Jul 16, 96 12:45:03 pm

Thus spake David Bonn:
> >>>>> "Nigel" == Nigel Metheringham <Nigel.Metheringham@theplanet.net>:
> Nigel> david@sealabs.com said:
> Nigel> } My current thinking is that transparent proxies can be used quite 
> Nigel> } efficiently to manage ip masquerading connections.  Using a 
> Nigel> } transparent proxy for the ftp control connection won't have a 
> Nigel> } noticable performance impact, but makes for cleaner, more robust code 
> Nigel> } when it comes to building ip masquerading entries for the data 
> Nigel> } connection. 
> 
> Nigel> I'd agree with this *except* that we then have a user level proxy 
> Nigel> (for the ftp control connection) controlling kernel level 
> Nigel> masquerading streams (for the data connections).  All well and good, 
> Nigel> but we need a means of doing this....

I came in late, so excuse me if I seem confused.[*]
Why don't you just have a means of letting a transparent proxy bind to
an arbitrary address?

Example network:
[client] -------- [proxy box] -------- [real server]
10.1.1.2   10.1.1.1/205.207.219.29     128.214.48.39

The proxy binds to the local port 6666, and the ipfwadm redirect stuff
is set up to correctly forward port 21 `throughbound' connections to
there.

The proxy accepts the connection, then, when it gets a port command:
bind to a port on 205.207.219.29 for the real server to talk to
issue an appropriate port command to the real server
bind to a port on 128.214.48.39
connect to the port on 10.1.1.2 specified by the client

I think this is the traditional means of doing this.

> Nigel>   3. The alternative is to do the whole lot in the kernel.
> Nigel>      Can you get a transparent proxy like (streamed TCP) interface
> Nigel>      within a kernel module?
> 
> This would help a lot, and that gets close to the core problem that
> we're trying to solve.  I don't know how possible it is, though.

Given some work, I would think so.  You'd have to keep a lot of state,
though, and the kernel might not be the best place for that.

Mike

-- 
#> Mike Shaver (shaver@ingenia.com) Ingenia Communications Corporation <#
#>      Chief System Architect -- will tame sendmail(8) for food       <#
#>                                                                     <#
#> "You are a very perverse individual, and I think I'd like to get to <#
#>  know you better." --- eric@reference.com                           <#


home help back first fref pref prev next nref lref last post