[CentOS] ICMPv6 Neighbour Solication request is not answered by linux when IPv6 address is assigned via Netlink code.

Tue May 21 16:26:34 UTC 2013
James Hogarth <james.hogarth at gmail.com>

> Output of ip route show is below:
> [root at hadev1 ~]# ip route show
> 10.1.8.0/24 dev bond1  proto kernel  scope link  src 10.1.8.101
> 169.254.0.0/16 dev eth0  scope link  metric 1002
> 169.254.0.0/16 dev bond0  scope link  metric 1009
> 169.254.0.0/16 dev bond1  scope link  metric 1010
> 172.16.0.0/16 dev bond0  proto kernel  scope link  src 172.16.13.100
> 172.16.0.0/16 dev eth0  proto kernel  scope link  src 172.16.8.50
> default via 172.16.6.250 dev bond0
>
> --------------------------------------------------------------------------------------
>

Please don't top post.

 Given we are talking about IPv6 - my apologies I forgot ip route show
defaults to v4 information ... If you could redo with ip -6 route show
that'd be great...

Whilst testing (and in general) stick to /64 assignments - that is the
expectation and best place to start ... and similarly either use a provided
IP space (from a tunnel broker if need be) or use ULA to avoid edge cases
there ... if that works then you can test outside the expected areas ...

With the behaviour you mention I'm curious as to whether an entry for the
network is being entered into the table at all on the system the code
snippet is run on versus the one where ip addr add is used...

As an example from my system after doing an ip addr add fc00::::17/64 dev
eth0 the routing table looks like:

$ ip -6 route show
2001::/32 dev teredo  proto kernel  metric 256
fc00::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev teredo  proto kernel  metric 256
default dev teredo  metric 1029

Check before and after you have done your code snippet... You might find
it'll work fine if you preconfigure the routing table with that subnet (or
just add another ipv6 address on that subnet to have it done automatically
that way)...

If no route for that network gets entered it may not be surprising not to
be able to ping until the first machine has and the neighbour is discovered
that way...

Are you also 100% sure you are not dropping any ICMPv6 packets between
systems - no transparent firewalls or anything?