Hi,
I have a setup with three machines, all i386, and all plugged into
one switch:
A: 5.1 (IPv4: master)
B: 5.0 (IPv4: backup)
C: 5.2 (IPv4: master, IPv6: backup)
Each host has two IPv4 carp interfaces, all on one interface (carp0 and
carp1), and host C has an additional carp2 with only an IPv6 address (no
IPv4).
Now, A + B work nicely with two carp interfaces (IPv4), but A+C do not.
While the carp interface for IPv6 goes into MASTER mode, as expected, if
I change the advskew on A, the IPv4 interfaces don't go into MASTER
mode, but stay in BACKUP mode instead, no matter what:
Eg. from C:
# cat /etc/hostname.carp*
# carp0:
inet 10.0.0.1 255.255.248.0 10.0.7.255 vhid 1 advskew 100 pass pass1 carpdev em0
# carp1:
inet 10.1.1.1 255.255.255.0 10.1.1.255 vhid 2 advskew 100 pass pass2 carpdev em0
# carp2:
inet6 3ffe:3ffe::1 32 vhid 3 advskew 100 pass pass3 carpdev em0
With this setup, carp1 will stay in BACKUP mode when I say "ifconfig
carp1 advskew 120" on A, while on B, it would go into MASTER
immediately.
I also have trouble taking carp2 down and up again, like in "ifconfig
carp2 down; ifconfig carp2 up". The result is that carp2 does no longer
respond to any packets sent to 3ffe:3ffe::1. Sending to the IPv6 address
bound to em0 continues to work like a charm, though. Saying "ifconfig
carp2 destroy; sh /etc/netstart carp2" - which I thought would re-create
the carp2 pseudy-device from scratch, does also not work, but elicits
the following error message from the kernel:
/bsd: in6_ifloop_request: ADD operation failed for 3ffe:3ffe::0001 (errno=17)
There are error messages related to duplicate IPv6 addresses, mentioning
the link-local auto-generated IPv6 address, which is the same for all
carp interfaces, eg:
/bsd: nd6_na_input: duplicate IP6 address fe80:0008::0200:5eff:fe00:0102
Touring the logs, I also find related error messages that I could not
yet make sense of:
/bsd: arpresolve: 10.0.0.1: route without link local address
The mentioned address is being advertised by A as the master, and
intended to be switched around by the CARP mechanism (works with A+B).
On C, I have pf disabled. On all three systems, I have bgpd enabled. On
A, I have pf enabled with these rules:
# pfctl -s r
block drop in quick on egress proto tcp from <sshguard> to any ...
pass quick on em0 proto carp all keep state (no-sync)
pass quick on em1 proto carp all keep state (no-sync)
When I reboot the machine, the states of the CARP interface(s) are being
set correctly, but I don't know how to change them thereafter, as
described above.
The desired target state is to have A + C as a pair of CARP'ed routers
for both IPv4 and IPv6.
What am I doing wrong?
TIA!
Kind regards,
--Toni++