[strongSwan] IKE modeconfig IP address assignment

Troy Telford ttelford.groups at gmail.com
Fri Sep 24 07:20:26 CEST 2010


I must be a problem child... but I'm learning fast.

I'm mostly satisfied with L2TP (Save for my last tunnel/transport 
question), so I've moved on to the more secure 'pure' IPsec 
configurations.

I've been working on IP Address & DNS assignment setup via IKEv1 & IKEv2;

I've been following:
http://www.strongswan.org/uml/testresults/ikev1/ip-pool-db/
http://www.strongswan.org/uml/testresults/ikev2/ip-pool-db/

I have the ipsec pool configured properly, I believe; 'ipsec pool 
--status' shows the pool I'm expecting, at any rate.  However, with 
both IKEv1 (Racoon/OS X) and IKEv2 (Win 7), I'm unable to get IP 
addresses.

With IKEv1, I've got the OS X client so it is able to establish an 
IPsec SA.  It has the config option "mode_cfg on".  However, I'm not 
seeing any ModeCfg messages in 'auth.log | grep pluto'.

For IKEv2, the error is:
Sep 23 22:37:52 pilot charon: 13[IKE] peer requested virtual IP %any
Sep 23 22:37:52 pilot charon: 13[IKE] no virtual IP found, sending 
INTERNAL_ADDRESS_FAILURE

My network is as follows:
<something> - Dynamic address; I use DynDNS to resolve it to a host name.
192.168.1.1/24 (Main address space)
192.168.2.1/24 (DMZ address space; unused)
192.168.3.1/24 (Used for OpenVPN - for locations where ESP is blocked 
at the firewall)
192.168.4.1/26 (IPsec pool)

So I think a connection would be along the lines of:
(Int. network)     (Internet IP)        (RW ISP)     Road Warrior
192.168.0.0/21 -- ISP Assigned IP .. ISP Assigned IP -- NAT IP

My configuration (with L2TP removed, for clarity) is as follows:

config setup
    crlcheckinterval="600"
    cachecrls=yes
    nat_traversal=yes
    
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!192.168.1.0/24,%v4:!192.168.2.0/24,%v4:!192.168.3.0/24,%v4:!192.168.4.0/24
 

   interfaces=%defaultroute

conn %default
    keyingtries=1
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyexchange=ikev2
    ike=aes128-sha1-modp1536,aes192-sha1-modp1536,aes256-sha1-modp1536
    esp=aes128-sha1-modp1536,aes192-sha1-modp1536,aes256-sha1-modp1536
    compress=yes
    left=%defaultroute
    right=%any
    dpddelay=30
    dpdtimeout=120
    dpdaction=clear
    pfs=yes

conn rw-local-nat
    rightsubnet=vhost:%no,%priv
    also=rw-local

conn rw-local
    keyexchange=ikev1
    # Supposedly rekey can be no, because the client will ask for it...
    rekey=no
    leftsubnet=192.168.1.0/24
    rightsourceip=%hostpool
    also=rw

conn rw-charon
    leftsubnet=192.168.1.0/24
    # In case we want a different (volatile) pool
    # rightsourceip=192.168.4.64/26
    rightsourceip=%hostpool
    also=rw

conn rw
    authby=rsasig
    leftrsasigkey=%cert
    rightrsasigkey=%cert
    leftcert=pilotCert.pem
    leftid=@pilot.pariahzero.net
    rightid="C=US... CN=*, E=*"
    rightca=%same
    auto=add

$ ipsec pool --status
dns servers: 192.168.1.1
no nbns servers found.
    name           start             end  timeout   size      online    
   usage
hostpool     192.168.4.2    192.168.4.63   static     62     0 ( 0%)    
 0 ( 0%)

$ ipsec pool --statusattr
 type  description           pool        identity              value
    3  INTERNAL_IP4_DNS                                        192.168.1.1

$ ipsec pool --showattr
internal_ip4_netmask  --addr    (INTERNAL_IP4_NETMASK)
internal_ip6_netmask  --addr    (INTERNAL_IP6_NETMASK)
netmask               --addr    (INTERNAL_IP4_NETMASK, INTERNAL_IP6_NETMASK)
internal_ip4_dns      --addr    (INTERNAL_IP4_DNS)
internal_ip6_dns      --addr    (INTERNAL_IP6_DNS)
dns                   --addr    (INTERNAL_IP4_DNS, INTERNAL_IP6_DNS)
internal_ip4_nbns     --addr    (INTERNAL_IP4_NBNS)
internal_ip6_nbns     --addr    (INTERNAL_IP6_NBNS)
nbns                  --addr    (INTERNAL_IP4_NBNS, INTERNAL_IP6_NBNS)
wins                  --addr    (INTERNAL_IP4_NBNS, INTERNAL_IP6_NBNS)
internal_ip4_dhcp     --addr    (INTERNAL_IP4_DHCP)
internal_ip6_dhcp     --addr    (INTERNAL_IP6_DHCP)
dhcp                  --addr    (INTERNAL_IP4_DHCP, INTERNAL_IP6_DHCP)
internal_ip4_server   --addr    (INTERNAL_IP4_SERVER)
internal_ip6_server   --addr    (INTERNAL_IP6_SERVER)
server                --addr    (INTERNAL_IP4_SERVER, INTERNAL_IP6_SERVER)
application_version   --string  (APPLICATION_VERSION)
version               --string  (APPLICATION_VERSION)
unity_banner          --string  (UNITY_BANNER)
banner                --string  (UNITY_BANNER)
unity_def_domain      --string  (UNITY_DEF_DOMAIN)
unity_splitdns_name   --string  (UNITY_SPLITDNS_NAME)
unity_split_include   --subnet  (UNITY_SPLIT_INCLUDE)
unity_local_lan       --subnet  (UNITY_LOCAL_LAN)

So what do I need to do in order to get IP address assignment working?
-- 
Troy Telford







More information about the Users mailing list