I have two firewalls running OpenBSD 4.2 x86.  I've set up an ipsec tunnel 
using ipsec.conf.  These
machines also serve up a shared ip address using a carp interface.  Here's 
hostname.carp1 on machine1:

inet 10.40.31.225 255.255.255.224 10.40.31.255 carpdev vr1 vhid 2 pass ...

And on machine2:

inet 10.40.31.225 255.255.255.224 10.40.31.255 carpdev vr1 vhid 2 pass ... 
advskew 100


And ipsec.conf on both machines:

local_ip = "a.a.a.a"
peer_ip = "b.b.b.b"
local_net = "10.40.31.224/27"

ike esp from $local_net to any local $local_ip peer $peer_ip \
        quick enc blowfish

flow esp from $local_net to $local_net type bypass


Everything worked great until isakmpd brought up the ipsec tunnel.  Both 
firewalls showed "MASTER"
for the carp interface, and pretty much nothing worked over the internal net.  
Using tcpdump on the
enc0 interface at the far end of the tunnel I determined that all the carp 
traffic was getting sent
over the tunnel.  Also, the backup firewall was inexplicably advertising about 
ten times as often as
the master, despite the higher advskew.  I thought this would fix it:

flow esp proto carp from any to any type bypass

But it had no effect.  After some trial and error, I found that the solution 
was to only allow some
protocols through the tunnel:

ike esp proto icmp from $local_net to any local $local_ip peer $peer_ip \
        quick enc blowfish

ike esp proto tcp from $local_net to any local $local_ip peer $peer_ip \
        quick enc blowfish

ike esp proto udp from $local_net to any local $local_ip peer $peer_ip \
        quick enc blowfish


Now everything seems to work, though the icmp flow doesn't come up sometimes, 
for some reason.
Unfortunately, this syntax is not correct:

ike esp proto { tcp udp icmp } from $local_net to any local $local_ip peer 
$peer_ip \
        quick enc blowfish

This would clean up my file quite a bit.  Why doesn't "flow esp proto carp from 
any to any type
bypass" work?



Thanks,
Jose.

Reply via email to