Hello! I'm trying to build a redundant IPSEC VPN concentrator.
What have I done by now: * I have a working CARP. Verified from each side. 1-2 pings lost. Works as expected. * I have a working iked deployment. Test client can connect, sees internal network as expected. * I have a working pfsync. Pf states are replicated between nodes. * I have a working sasyncd. Flows and SADs are replicated between nodes. What doesn't work: When the client is connected to a virtual CARP endpoint and I perform a switchover, the new master doesn't pick up the communication. NAT-t packages do come to a valid host, they are just not processed. Iked compains with "ikev2_child_sa_acquire: flow wasn't found" The full relevant configuration files follow: Topology: 2 Identical Qemu's, OpenBSD 7.0, no conflicting MAC addresses em0-s bridged together -> (WAN) -> strongswan on mobile phone em1-s bridged together -> (LAN) -> IP to ping from mobile em2-s bridged together -> (sync) ------------------------------------------------------------------------- sysctl.conf net.inet.carp.preempt=1 net.inet.ip.forwarding=1 ------------------------------------------------------------------------- hostname.carp0 (differences with | , hosts A|B) inet 192.168.1.160 255.255.255.0 192.168.1.255 \ carpdev em0 \ group VPN \ pass passwd \ vhid 1 \ advskew 0|100 ------------------------------------------------------------------------- hostname.carp1 inet 10.0.0.254 255.255.255.0 10.0.0.255 \ carpdev em1 \ group VPN \ pass passwd \ vhid 2 \ advskew 0|100 ------------------------------------------------------------------------- hostname.em0 inet 192.168.1.161|162 255.255.255.0 NONE ------------------------------------------------------------------------- hostname.em1 inet 10.0.0.161|162 255.255.255.0 NONE ------------------------------------------------------------------------- hostname.em2 inet 10.0.1.161|162 255.255.255.0 ------------------------------------------------------------------------- hostname.enc0 inet 10.1.0.254 255.255.255.0 ------------------------------------------------------------------------- hostname.pfsync0 up \ syncdev em2 \ syncpeer 10.0.1.162|161 ------------------------------------------------------------------------- iked.conf user "test" "password123" set mobike set enforcesingleikesa set passive ikev2 "VPN" esp \ from 10.0.0.0/24 to dynamic \ local 192.168.1.160 \ srcid vpn.my.domain \ eap "mschap-v2" \ config address 10.1.0.0/24 \ tag "$name-$id" ------------------------------------------------------------------------- sasyncd.conf peer 10.0.1.162|161 control iked group VPN interface carp0 listen on em2 sharedkey TAKEN_FROM_EXAMPLE ------------------------------------------------------------------------- rc.conf.local iked_flags= ipsec=YES sasyncd_flags= ntpd_flags=NO ------------------------------------------------------------------------- pf.conf set skip on lo pass quick on { em2 } proto pfsync keep state (no-sync) pass on { em0 em1 } proto carp keep state (no-sync) block return # block stateless traffic pass # establish keep-state block return in on ! lo0 proto tcp to port 6000:6010 block return out log proto {tcp udp} user _pbuild pass in on em0 proto udp from any to (em0) port {isakmp, ipsec-nat-t} tag IKED keep state pass in on em0 proto esp from any to (em0) tag IKED keep state pass in on em0 from (em0:network) to any pass in on em1 from (em1:network) to any pass in on em2 from (em2:network) to any ------------------------------------------------------------------------- What do I miss? Best regards, -- Paweł Kraszewski