> 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