Hi all,
I've just upgraded two OpenBSD boxes from 4.4 to 4.5.
I'm using the AMD64 version of GENERIC kernel, all patches applied.
I'm trying to convert my old gateway configuration from active/passive
to active/active, thanks to the brand new pfsync protocol
implementation. I'd like to use stealth-ip mode, because I have to use a
poor 24 ports switch.
So, when I start to send packets through the cluster, if I start tcpdump
on both machines I can see carp interfaces work correctly, but traffic
is forwarded only through one host, ALWAYS, even if I try to generate
traffic from different hosts across the Internet.
If I reboot the active machine, the traffic starts to flow throught the
other machine (so failover works).
I'm not able to obtain both carp interfaces work in a load balanced way.
So, this is my network:
**switch**
|
(carp0)
10.200.10.2
bge0 / \ bge0
--------------- ---------------
| 10.200.10.3 | | 10.200.10.4 |
| * host A * | | * host B * |
|192.168.10.2 | |192.168.10.3 |
--------------- --------------
bge1 \ / bge1
192.168.10.1
(carp1)
|
**switch lan**
On sysctl.conf, I've set net.inet.carp.preempt to 1 on both machines.
pf is enabled with pass in/pass pass out rules.
Obviously, ip forwadring is enabled too.
On host A, I configured these:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/etc/hostname.bge0
inet 10.200.10.3 255.255.255.240 NONE
/etc/hostname.bge1
inet 192.168.10.2 255.255.255.0 NONE
/etc/hostname.carp0
inet 10.200.10.2 255.255.255.240 10.200.10.15 vhid 10 carpdev bge0 pass
password carpnodes 10:0,11:100 balancing ip-stealth
/etc/hostname.carp1
inet 192.168.10.1 255.255.255.0 192.168.10.255 vhid 20 carpdev bge1 pass
password carpnodes 20:0,21:100 balancing ip-stealth
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On host B, I configured these:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/etc/hostname.bge0
inet 10.200.10.4 255.255.255.240 NONE
/etc/hostname.bge1
inet 192.168.10.3 255.255.255.0 NONE
/etc/hostname.carp0
inet 10.200.10.2 255.255.255.240 10.200.10.15 vhid 11 carpdev bge0 pass
password carpnodes 10:100,11:0 balancing ip-stealth
/etc/hostname.carp1
inet 192.168.10.1 255.255.255.0 192.168.10.255 vhid 21 carpdev bge1 pass
password carpnodes 20:100,21:0 balancing ip-stealth
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is what I see with with ifcofig about carp interfaces on host A:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
carp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:00:5e:00:01:0a
priority: 0
carp: carpdev bge0 advbase 1 balancing ip-stealth
state MASTER vhid 10 advskew 0
state BACKUP vhid 11 advskew 100
groups: carp
inet6 fe80::200:5eff:fe00:10a%carp0 prefixlen 64 scopeid 0x7
inet 10.200.10.2 netmask 0xfffffff0 broadcast 10.200.10.15
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:00:5e:00:01:14
priority: 0
carp: carpdev bge1 advbase 1 balancing ip-stealth
state MASTER vhid 20 advskew 0
state BACKUP vhid 21 advskew 100
groups: carp
inet6 fe80::200:5eff:fe00:114%carp1 prefixlen 64 scopeid 0x8
inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
And this on host B:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
carp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:00:5e:00:01:0a
priority: 0
carp: carpdev bge0 advbase 1 balancing ip-stealth
state BACKUP vhid 10 advskew 100
state MASTER vhid 11 advskew 0
groups: carp
inet6 fe80::200:5eff:fe00:10a%carp0 prefixlen 64 scopeid 0x7
inet 10.200.10.2 netmask 0xfffffff0 broadcast 10.200.10.15
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:00:5e:00:01:14
priority: 0
carp: carpdev bge1 advbase 1 balancing ip-stealth
state BACKUP vhid 20 advskew 100
state MASTER vhid 21 advskew 0
groups: carp
inet6 fe80::200:5eff:fe00:114%carp1 prefixlen 64 scopeid 0x8
inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I'm focusing on the mac addresses of the carp interfaces: reading the
man pages, these should be the multicast type, but 00:xx:xx:xx:xx:xx is
not in the multicast family.
So, what's wrong with my configuration?
Every hint will be appreciated.