Hi,
I am interested to know what is the update/status one above.
I see email thread as:
Hi Sampo,
> I have been busy writing a forking server
> addon to openvpn.
Cool... Does each potential connecting client
need a separate config file,
or does the server use a common client
template and then keep track of
things like dynamic ports, dynamic endpoint
addresses, etc?
> In openvpn.c I have separated the
processing of
> parameters from main() to a new function and
> moved main to another file to allow me to
> link against different main() functions.
>
> One that implements normal peer2peer vpn
> and two others that produces forkin' server
> and client.
>
> These use a simple UDP protocol to agree a
> port to use, after which server forks do
> some handshaking with client and then
> calls openvpn() funcition from openvpn.c
Are you sure there needs to be a new protocol
to do this?
Suppose the master server listens on a
particular port, reads the initial
datagram from a connecting client, verifies
the integrity of the datagram
using a --tls-auth variant, allocates a
dynamic port, forks a new server
process, and continues in its event loop.
When the forked process finishes up the TLS
authentication, it can take the
Common Name from the client certificate and
use it to determine the
appropriate config profile to use (containing
ifconfig addresses, route
statements, etc.)
Or the handshaking could be done by passing a
configuration string in the
TLS payload, similar to the string now built
by options_string().
> This way I have been able to keep
> those well tested procedures and protocol
> of openvpn untouched.
>
> I still have some questions unsolved like
> DoS protection, dropping root priviledges
> and how to handel SIGUSR1 and SIGHUP.
Maybe keep track of all children, so when the
master process gets a signal,
it dispatches it to each child process, then
to itself.
> I hope I can overcome these and mail
> you a patch.
>
>
>
>
> Sampo
>
>
>
> > Hi Michael,
> >
> > Right now OpenVPN doesn't support a
forking-server model on a single
port,
> > it's strictly peer-to-peer with an
OpenVPN process instantiated at both
ends
> > of the connection, and each connection on
a unique port.
> >
> > There has been some recent discussions
about a forking-server
implementation
> > on this list -- see the "add a server
feature to openvpn to share udp
> > ports?" thread in the openvpn-devel
archives.
> >
> > I think the simplest way to do this would
be something like:
> >
> > (1) Add a --forking-server flag that
causes the main OpenVPN event loop
to
> > fork a new process for each initial
datagram received from a client.
> > (2) The newly forked server process
switches to a dynamic port before
> > responding back to the connecting client.
This is quite a bit simpler
and
> > more efficient than trying to run all
clients over the same UDP port.
> > (3) OpenVPN already has code (see the
implementation of --float) that
will
> > adapt to the new port number returned by
the response to initial
datagram
> > sent from server to client. I have also
confirmed that this type of UDP
> > port switch is recognized by both Linux
and Cisco stateful firewalls.
> >
> > There are a some complications that would
need to be handled:
> >
> > (1) You would need to protect against DoS
attacks that flood the server
with
> > fork requests. Possibly some variation
of --tls-auth that would
> > authenticate the initial packet before
the fork call.
> >
> > (2) If a client connects, gets
disconnected, then connects again, you
would
> > need to make sure that the old server
process gets killed before a new
> > server process is forked.
> >
> > Unfortunately I'm pretty busy right now
with my day job, so I may not
get to
> > this for a while. If you want to take a
shot at some kind of
> > implementation, I will do my best to
answer your questions.
> >
> > Best Regards,
> > James
> >
> > ----- Original Message -----
> > From: "Michael Grigoriev" <mag@ni...>
> > To: <openvpn-devel@li...>
> > Sent: Monday, July 22, 2002 6:53 PM
> > Subject: [Openvpn-devel] Multiple VPN
connections on the same port
> >
__________________________________________________________________
The NEW Netscape 7.0 browser is now available. Upgrade now!
http://channels.netscape.com/ns/browsers/download.jsp
Get your own FREE, personal Netscape Mail account today at
http://webmail.netscape.com/