[Openswan dev] scalable configuration

John Denker jsd at av8n.com
Fri Oct 3 02:00:40 EDT 2008


I added a section
   http://www.av8n.com/computer/htm/ipv6-howto.htm#sec-mk-conf

which says:

It is important to design things so that they scale properly.

If you have N hosts fully connected with IPsec tunnels, that 
requires a total of N^2 “conn” declarations, all different. 
Each host only needs N of these “conn” declarations in its 
ipsec.conf file, but that doesn’t address the underlying issue: 
where did all those declarations come from? I don’t want to 
have a central database containing N^2 of anything. That would 
defeat the raison d’être of asymmetric cryptography.

Constructive suggestion: It is perfectly possible to keep 
a central database with only N entries, one for each IPsec 
endpoint. Indeed, each of the entries is quite simple, 
recording only the hostname, subnet configuration (if any), 
and the RSA public key of the endpoint. Here’s an example:

 id=@foo.example.net
 subnet=foo-s.example.net/128
 # RSA 2192 bits   foo  Sat Sep 27 18:16:53 2008
 rsasigkey=0sAQP....LMsP

I store that information in a “.pub” file, one file per endpoint.

I have a script that takes two .pub files and creates the “conn” 
declaration suitable for connecting the two endpoints.  Given 
the information in the .pub files, everything else needed for 
the “conn” declaration can be figured out by consulting DNS and
consulting the routing tables (plus some logic and arithmetic).

An alpha version of the script is at 
  http://www.av8n.com/computer/mk_conf
This is a rough draft, but better than nothing.

I would like to see this functionality integrated into openswan. 
In my opinion, stuff like “interfaces=...” and “leftnexthop=...” 
do not belong in the ipsec.conf file. And the IPsec packets 
should be routed according to the actual routes, not the 
“defaultroute”. Everything that can be figured out at runtime 
should be figured out at runtime.


More information about the Dev mailing list