Martin Schmitt
2013-02-11 10:09:00 UTC
All,
I got my first non-tunneled IPv6 uplink a while ago, and now I have
issues with NDP.
Over the same shared LAN, the ISP apparently serves several (more than
one, but as far as I can see not neccessarily more than two) customer
routers, with a logical /125 transfer network for each customer. What I
currently see, is this:
1) 2001:db8:1234:5678::08/125 <- Someone else's transfer network
2) 2001:db8:1234:5678::10/125 <- "My" transfer network
What happens now is that the ISP router sometimes sends neigbor
solicitation requests for my OpenBSD router using a source IP from its
proper physical interface, but a different logical network. In this
case: 2001:db8:1234:5678::9
When the NDP solicitations from 2001:db8:1234:5678::9 come in, OpenBSD
does not respond to them, apparently because their source IP doesn't
match the OpenBSD router's own prefix. The ISP router receives no
neighbor advertisement from my OpenBSD router, and deems it unreachable.
IPv6 is now down until a while later, when the solicitations happen to
come from 2001:db8:1234:5678::11 again.
RFC4861 says about the source IP for neighbor solicitations, that it has
to be "an address assigned to the interface from which this message is
sent". The ISP router firmware interprets this to mean "any address from
the interface", thus using an IP from a different logical subnet.
OpenBSD, in turn, does not seem to be willing to respond to requests
from a different subnet.
This was reproduced with OpenBSD 5.2-release, with pf turned off. It
also happens on the production router, which happens to still run
OpenBSD 4.6.
To try to better understand the issue, I also set up a Linux system
(Debian 6), which does in fact send advertisements in response to those
wrong-prefix solicitations.
What I understand is that either OpenBSD or the ISP router interpret the
RFC in a way that leads to unintended results.
Is this a bug in OpenBSD? Is there a workaround, e.g. in the form of a
sysctl or a pf.conf hack that will make OpenBSD's NDP more liberal?
Thanks for all input,
-martin
I got my first non-tunneled IPv6 uplink a while ago, and now I have
issues with NDP.
Over the same shared LAN, the ISP apparently serves several (more than
one, but as far as I can see not neccessarily more than two) customer
routers, with a logical /125 transfer network for each customer. What I
currently see, is this:
1) 2001:db8:1234:5678::08/125 <- Someone else's transfer network
2) 2001:db8:1234:5678::10/125 <- "My" transfer network
What happens now is that the ISP router sometimes sends neigbor
solicitation requests for my OpenBSD router using a source IP from its
proper physical interface, but a different logical network. In this
case: 2001:db8:1234:5678::9
When the NDP solicitations from 2001:db8:1234:5678::9 come in, OpenBSD
does not respond to them, apparently because their source IP doesn't
match the OpenBSD router's own prefix. The ISP router receives no
neighbor advertisement from my OpenBSD router, and deems it unreachable.
IPv6 is now down until a while later, when the solicitations happen to
come from 2001:db8:1234:5678::11 again.
RFC4861 says about the source IP for neighbor solicitations, that it has
to be "an address assigned to the interface from which this message is
sent". The ISP router firmware interprets this to mean "any address from
the interface", thus using an IP from a different logical subnet.
OpenBSD, in turn, does not seem to be willing to respond to requests
from a different subnet.
This was reproduced with OpenBSD 5.2-release, with pf turned off. It
also happens on the production router, which happens to still run
OpenBSD 4.6.
To try to better understand the issue, I also set up a Linux system
(Debian 6), which does in fact send advertisements in response to those
wrong-prefix solicitations.
What I understand is that either OpenBSD or the ISP router interpret the
RFC in a way that leads to unintended results.
Is this a bug in OpenBSD? Is there a workaround, e.g. in the form of a
sysctl or a pf.conf hack that will make OpenBSD's NDP more liberal?
Thanks for all input,
-martin