> You don't actually even need an ipsec.conf file, you could just do > > $ echo 'flow from 192.0.2.1/32 to 192.0.2.2/32 type bypass' | doas ipsecctl > -vf -
That would actually be a very simple solution and I would sure love it! But testing doesn't show that as being the case. packets are still being forwarded to enc0 even if they show as being bypass in the ipsecctl -sf I did the forward and reverse entry to see the results. Setup two server real quick to test and here the results with the simpler shorter version of iked.conf and adding the bypass: gateway$ doas cat /etc/iked.conf ikev2 "VPN" active esp inet from re0 to tunnel.realconnect.com ikev2 "Flow" active \ from re1 to tunnel.realconnect.com \ from re1 to stats.realconnect.com \ from 66.63.44.66 to 0.0.0.0/0 \ from 66.63.44.67 to 66.63.0.0/18 \ from 66.63.44.67 to christine-home.realconnect.com \ from home.ouellet.us to 0.0.0.0/0 \ from 66.63.44.96/28 to 0.0.0.0/0 \ peer tunnel.realconnect.com gateway$ echo 'flow from 66.63.44.96/28 to 66.63.44.64/27 type bypass' | doas ipsecctl -vf - gateway$ echo 'flow from 66.63.44.64/27 to 66.63.44.96/28 type bypass' | doas ipsecctl -vf - And then check the flow to see if the bypass are present and they are as below: gateway$ doas ipsecctl -sf flow esp in from 0.0.0.0/0 to 66.63.44.66 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type use flow esp in from 0.0.0.0/0 to 66.63.44.90 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type use flow esp in from 0.0.0.0/0 to 66.63.44.96/28 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type use flow esp in from 66.63.0.0/18 to 66.63.44.67 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type use flow esp in from 66.63.5.245 to 66.63.44.65 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type use flow esp in from 66.63.5.250 to 66.63.44.65 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type use flow esp in from 66.63.5.250 to 100.36.20.77 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type use flow esp in from 66.63.44.64/27 to 66.63.44.96/28 type bypass flow esp in from 66.63.44.96/28 to 66.63.44.64/27 type bypass flow esp in from 216.15.33.137 to 66.63.44.67 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type use flow esp out from 66.63.44.64/27 to 66.63.44.96/28 type bypass flow esp out from 66.63.44.65 to 66.63.5.245 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type require flow esp out from 66.63.44.65 to 66.63.5.250 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type require flow esp out from 66.63.44.66 to 0.0.0.0/0 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type require flow esp out from 66.63.44.67 to 66.63.0.0/18 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type require flow esp out from 66.63.44.67 to 216.15.33.137 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type require flow esp out from 66.63.44.90 to 0.0.0.0/0 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type require flow esp out from 66.63.44.96/28 to 0.0.0.0/0 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type require flow esp out from 66.63.44.96/28 to 66.63.44.64/27 type bypass flow esp out from 100.36.20.77 to 66.63.5.250 peer 66.63.5.250 srcid FQDN/gateway.ouellet.us dstid FQDN/tunnel.realconnect.com type require flow esp out from ::/0 to ::/0 type deny But the packets are still sent to the enc0 however. tcpdump show that: gateway$ doas tcpdump -nli enc0 | grep icmp tcpdump: listening on enc0, link-type ENC 17:29:15.778857 (authentic,confidential): SPI 0x1a672fb3: 66.63.44.90 > 66.63.44.99: icmp: echo request (encap) 17:29:15.784287 (authentic,confidential): SPI 0xac2b658e: 66.63.44.90 > 66.63.44.99: icmp: echo request (encap) 17:29:16.789014 (authentic,confidential): SPI 0x1a672fb3: 66.63.44.90 > 66.63.44.99: icmp: echo request (encap) 17:29:16.793698 (authentic,confidential): SPI 0xac2b658e: 66.63.44.90 > 66.63.44.99: icmp: echo request (encap) 17:29:17.799066 (authentic,confidential): SPI 0x1a672fb3: 66.63.44.90 > 66.63.44.99: icmp: echo request (encap) 17:29:17.803543 (authentic,confidential): SPI 0xac2b658e: 66.63.44.90 > 66.63.44.99: icmp: echo request (encap) ^C 44 packets received by filter 0 packets dropped by kernel if the bypass was active it shouldn't reach enc0 but go between re1 and re2 as shown in the routing table for the test: gateway$ doas route -n show -inet Routing tables Internet: Destination Gateway Flags Refs Use Mtu Prio Iface default 100.36.20.1 UGS 7 15559373 - 8 re0 224/4 127.0.0.1 URS 0 5756 32768 8 lo0 66.63.44.64/27 66.63.44.65 UCn 9 29469 - 4 re1 66.63.44.65 00:0d:b9:3e:d5:5d UHLl 0 56673 - 1 re1 66.63.44.66 00:0a:41:6b:84:1c UHLc 0 101716 - 3 re1 66.63.44.67 40:6c:8f:bc:5d:a8 UHLc 1 17896548 - 3 re1 66.63.44.72 00:1e:c0:11:ff:70 UHLc 0 576647 - 3 re1 66.63.44.73 b8:41:a4:5e:ad:41 UHLc 1 122361 - 3 re1 66.63.44.74 74:c2:46:ed:c0:1f UHLc 0 40926 - 3 re1 66.63.44.76 c8:2a:14:23:2a:a8 UHLc 1 29533 - 3 re1 66.63.44.90 00:25:90:31:31:b2 UHLc 0 126950 - 3 re1 66.63.44.93 38:ed:18:45:12:dd UHLc 0 2297 - 3 re1 66.63.44.94 b4:75:0e:63:d1:dc UHLc 0 29262 - 3 re1 66.63.44.95 66.63.44.65 UHb 0 12812 - 1 re1 66.63.44.96/28 66.63.44.97 UCn 2 93512 - 4 re2 66.63.44.97 00:0d:b9:3e:d5:5e UHLl 0 98042 - 1 re2 66.63.44.99 ac:1f:6b:b9:ef:8a UHLc 2 94146 - 3 re2 66.63.44.102 link#3 UHLc 0 93509 - 3 re2 66.63.44.111 66.63.44.97 UHb 0 9543 - 1 re2 100.36.20/24 100.36.20.77 UCn 1 0 - 4 re0 100.36.20.1 54:e0:32:be:cf:c9 UHLch 2 364 - 3 re0 100.36.20.77 00:0d:b9:3e:d5:5c UHLl 0 2551787 - 1 re0 100.36.20.255 100.36.20.77 UHb 0 0 - 1 re0 127/8 127.0.0.1 UGRS 0 0 32768 8 lo0 127.0.0.1 127.0.0.1 UHhl 2 783 32768 1 lo0