Face-palm!!! When I tried it before I only created /etc/isakmpd.conf
not; /etc/isakmpd/isakmpd.conf chmod 600 /etc/isakmpd/isakmpd.conf isakmpd.conf [general] listen-on=<pubip1>,<pubip2>,<pubip3> Dohh, Have to miss the obvious in a man page every now and then I guess.. Hopefully my fail-over stability tweaks help someone in return for the misc@ noise Ha Cheers, Andy. Thanks Rogier... On 17/02/14 17:10, Rogier Krieger wrote: > It's been a while since I tried, but I seem to recall my setup ran > happily with a (minimal) isakmpd.conf and ipsec.conf. > > I kept my settings limited to the [General] section, but that should > cover your listen-on test. > > Regards, > > Rogier > > > On Mon, Feb 17, 2014 at 6:03 PM, Andy <[email protected] > <mailto:[email protected]>> wrote: > > Hi, > > Does anyone have any ideas on this? How can we configure isakmpd > to only listen on certain IP addresses to avoid this limitation > when it tries to listen on *every* IP address? > > I see listen-on in isakmpd.conf, but we are using ipsec.conf and I > understand these are mutually-exclusive.. > > Cheers, Andy. > > > > On Wed 12 Feb 2014 12:22:57 GMT, andy wrote: > > Hi, > > I think this is a fairly simple one. > > Our firewalls are growing in complexity and the number of > interfaces and > IPs as time goes on, and we recently hit an isakmpd limit. > > When isakmpd starts it tries to bind to *every* single IP on > the system. > We have a LOT of IPs and isakmpd now fails to initialise; > 2014-02-12T10:40:29.386318+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (2, 2, 17): Too many open files > 2014-02-12T10:40:29.386352+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on 10.2.8.254 > 2014-02-12T10:40:29.386657+00:00 brfw1 isakmpd[404]: > virtual_init: could > not bind the ISAKMP port(s) on all interfaces: Too many open files > > More log at bottom.. > > We only want isakmpd to listen on the CARP IP address on the > external > interface (and probably the physical IPs on the external > interface), not > *all* IPs. > > The work around for now was to add '-4' to the isakmpd daemon > to restrict > it to our v4 addresses. However we will very soon have even > too many v4 > addresses for isakmpd to cope and so need a way to instruct > isakmpd to only > bind the necessary IPs. > > This would also provide a security enhancement?? > > Others have reported this limitation before; > http://www.monkey.org/openbsd/archive2/misc/200502/msg00686.html > > > > Also if someone else finds these useful (I will commit to > source one > day..), I have two primitive but *very* effective enhancements > I have made > to /etc/rc.d/sasyncd and /etc/rc.d/isakmpd to share when > running IPSec on a > carp pair (I am absolutely sure these could be more elegant in > implementation, but they work and you should get the idea).. > > First enhancement, when running isakmpd with carp and sasyncd, > you must > use the -S and -K flags on isakmpd. This ensures isakmpd > starts in passive > mode and does not start negotiating with the other side > *unless* it is the > carp master. Makes perfect sense.. > On the master, isakmpd starts in passive, discovers it is > master and so > reads and loads ipsec.conf, and starts negotiating with other side > On the backup, isakmod starts in passive, does nothing more. > > If a failover occurs however, the VPNs do not work for a > loooong time! > (this is because isakmpd on the backup never read the > ipsec.conf file so > when it is made active it doesn't know what to do..) > > /etc/rc.d/sasyncd; > #!/bin/sh > # > # $OpenBSD: sasyncd,v 1.1 2011/07/06 18:55:36 robert Exp $ > > daemon="/usr/sbin/sasyncd" > > . /etc/rc.d/rc.subr > > pexp="sasyncd: \[priv\]" > > rc_start() { > sleep 10 > ${rcexec} "${daemon} ${daemon_flags} ${_bg}" > sleep 5 > ipsecctl -f /etc/ipsec.conf > } > > rc_cmd $1 > > This fix simply ensures that the carp-backup isakmpd reads the > ipsec.conf > after starting in passive mode and has settled. VPN failover's > now happen > in ~2-3 seconds. > > > > Second enhancement, when stopping isakmpd on the master or > backup with > '/etc/rc.d/isakmpd' stop or restart, subsequent starting of > the tunnels can > take a very long time. This seems to be because stopping > isakmpd simply > tears the daemon down without deconstructing the trust keys / > policies. > Leaving obsolete expiring policies on the remote side. So > restarting > isakmpd can take a long time until the other side flushes or > times out. > > /etc/rc.d/isakmpd; > #!/bin/sh > # > # $OpenBSD: isakmpd,v 1.1 2011/07/06 18:55:36 robert Exp $ > > daemon="/sbin/isakmpd" > > . /etc/rc.d/rc.subr > > pexp="isakmpd: monitor \[priv\]" > > rc_pre() { > [ X"${sasyncd_flags}" != X"NO" ] && \ > daemon_flags="-S ${daemon_flags}" > return 0 > } > > rc_stop() { > if [ `ifconfig | grep "status: master" | wc -l` > 0 ]; > then ipsecctl > -d -f /etc/ipsec.conf; fi > sleep 1 > if [ `ifconfig | grep "status: master" | wc -l` > 0 ]; > then ipsecctl > -d -f /etc/ipsec.conf; fi > if [ `ifconfig | grep "status: master" | wc -l` > 0 ]; > then ipsecctl > -F -f /etc/ipsec.conf; fi > pkill -f "^${pexp}" > } > > rc_cmd $1 > > This fix simply gracefully deletes the flows (and informs the > other side > to do the same), and flushes the SPD's and SAD's cleanly > before destroying > the daemon. Subsequent restarts now allow IPSec tunnels to come up > immediately.. > > > Hope this helps someone :) > Cheers, Andy. > > > > isakmpd binding error; > > 2014-02-12T10:40:29.382031+00:00 brfw1 isakmpd[404]: > udp_encap_make: > transport 0x20615b500 socket 120 ip fe80:14::200:5eff:fe00:103 > port 4500 > 2014-02-12T10:40:29.382242+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615bd00 socket 121 ip 10.0.1.254 port 500 > 2014-02-12T10:40:29.382423+00:00 brfw1 isakmpd[404]: > udp_encap_make: > transport 0x20615ba80 socket 122 ip 10.0.1.254 port 4500 > 2014-02-12T10:40:29.382655+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615bc80 socket 123 ip 10.2.3.254 port 500 > 2014-02-12T10:40:29.382873+00:00 brfw1 isakmpd[404]: > udp_encap_make: > transport 0x20615bf80 socket 124 ip 10.2.3.254 port 4500 > 2014-02-12T10:40:29.383485+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615b880 socket 127 ip fe80:15::200:5eff:fe00:104 port 500 > 2014-02-12T10:40:29.383524+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (24, 2, 17): Too many open files > 2014-02-12T10:40:29.383549+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on fe80:15::200:5eff:fe00:104 > 2014-02-12T10:40:29.383728+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615b300 socket 127 ip 10.0.2.254 port 500 > 2014-02-12T10:40:29.383742+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (2, 2, 17): Too many open files > 2014-02-12T10:40:29.383772+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on 10.0.2.254 > 2014-02-12T10:40:29.383977+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615b880 socket 127 ip 10.2.5.254 port 500 > 2014-02-12T10:40:29.383990+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (2, 2, 17): Too many open files > 2014-02-12T10:40:29.384069+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on 10.2.5.254 > 2014-02-12T10:40:29.384786+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615bb00 socket 127 ip fe80:16::200:5eff:fe00:105 port 500 > 2014-02-12T10:40:29.384800+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (24, 2, 17): Too many open files > 2014-02-12T10:40:29.384828+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on fe80:16::200:5eff:fe00:105 > 2014-02-12T10:40:29.385092+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615b080 socket 127 ip 10.0.3.254 port 500 > 2014-02-12T10:40:29.385120+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (2, 2, 17): Too many open files > 2014-02-12T10:40:29.385253+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on 10.0.3.254 > 2014-02-12T10:40:29.385488+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615b080 socket 127 ip 10.2.7.254 port 500 > 2014-02-12T10:40:29.385506+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (2, 2, 17): Too many open files > 2014-02-12T10:40:29.385526+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on 10.2.7.254 > 2014-02-12T10:40:29.385999+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615b200 socket 127 ip fe80:17::200:5eff:fe00:108 port 500 > 2014-02-12T10:40:29.386014+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (24, 2, 17): Too many open files > 2014-02-12T10:40:29.386073+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on fe80:17::200:5eff:fe00:108 > 2014-02-12T10:40:29.386300+00:00 brfw1 isakmpd[404]: udp_make: > transport > 0x20615b080 socket 127 ip 10.2.8.254 port 500 > 2014-02-12T10:40:29.386318+00:00 brfw1 isakmpd[404]: > udp_encap_make: > socket (2, 2, 17): Too many open files > 2014-02-12T10:40:29.386352+00:00 brfw1 isakmpd[404]: > virtual_bind_if: > failed to create a socket on 10.2.8.254 > 2014-02-12T10:40:29.386657+00:00 brfw1 isakmpd[404]: > virtual_init: could > not bind the ISAKMP port(s) on all interfaces: Too many open files > > > > > > -- > If you don't know where you're going, any road will get you there.

