Subject: transparent proxys ala digital unix
To: None <tech-net@NetBSD.org>
From: vianney rancurel <Vianney.Rancurel@epita.fr>
List: tech-net
Date: 09/17/1999 09:39:35
The purpose is to make transparents proxys for NetBSD in a easy manner.
A---->B---->C
A is an internal host, B is a NetBSD box with two NICs, C is the destination hos
t. A has got a default route to B. He wants to "telnet" C. He just send packets
following routing table and B "hijacks" the connection. C sees B making the conn
ection but A believes is directling talking to C.
Why shouldn't we add a "#define FR_PROXY" in netinet/ip_fil.h with a new keyword
"proxy" in ipf(8). It will give us rules like this (e.g for telnet):
proxy from any to any port = 23
It will cause packets arriving to <port> to be for us even if it is not destined
to one of our interfaces and alias. To distinguish matching packets in ipintr()
we could use a new mbuf flag like M_FORUS.
On B, packets would be reassembled as others and sent to process binding this po
rt in a normal way. On a getsockname(2), the process would see C as local addres
s. It would be then quite tricky to write transparent proxys.
Am I wrong?
Vianney Rancurel
LSE