Hi François,
If you use netns created by "ip netns add <netnsname>" and start charon
with "ip netns exec <netnsname> ipsec start", then there is a solution
(that we successfully used here to perform IKE tests with a single machine:
"ip netns exec netns1" enables to start the application in netns netns1,
but also, if the /etc/netns/netns1 directory exists, the files and
sub-directories will be remapped in /etc for the application (provided a
file or directory with the same name already exists in /etc).
So, you just have to store your configuration files in this directory
and the pid and socket files in a sub-directory. To do that, you must
chose a different piddir when compiling strongswan:
Example for netns1 and netns2:
create netns and directories
----------------------------
ip netns add netns1
ip netns add netns2
mkdir -p /etc/run
mkdir -p /etc/netns/netns1/run
mkdir -p /etc/netns/netns2/run
generate strongswan
-------------------
./configure --sysconfdir=/etc --with-piddir=/etc/run make
make install
configure and run strongswan instances
--------------------------------------
Then, you can store configurations files for each charon instance in the
/etc/netns/<netnsname> directory, and start each instance of charon with:
ip netns exec <netnsname> ipsec start
The pid and unix socket files will be stored in
/etc/netns/<netnsname>/run directory instead of the default /var/run.
(From the application point of view, the configuration files are in
/etc, pid and socket files are in /etc/run directories, but they are
actually stored in /etc/netns/<netnsname> and /etc/netns/<netnsname>/run
directories)
Enjoy
Best Regards,
Christophe
On 05/22/2013 10:16 PM, Eleouet Francois wrote:
Hi,
I'm actually investigating how to run multiple IPsec damons within
several network namespaces.
In the openstack project (an open source cloud computing platform), we
intend to extend virtual networks to the outside world using IPsec.
Current implentation leverages netns to provide routing (with support
of overlapping IPs) between different projects/customers/virtual networks.
As a consequence, we have to start multiple IPsec daemons (one within
each namespace), so that they bind sockets and set-up IPsec SA & SPD
in the right netns. I managed to set up this kind of configuration
using pluto as config, pid and control socket files location can be
specified as comand line options
(using --ctlbase --ipsecdir --secretsfile --config...)
Anyway, these variables seems to be hard coded in charon (at
./configure time). As IKEv2 support is really required, I was
wondering if I missed something. Is there any way to change these
parameters on a per-process basis? Or maybe have you plan to make
charon netns aware?
Thanks in advance,
Francois Eleouet.
_______________________________________________
Users mailing list
[email protected]
https://lists.strongswan.org/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
https://lists.strongswan.org/mailman/listinfo/users