I have configured IPv6 networking on three machines A, B, C (B and C are LXD containers running on A). B and C are directly connected only to A. I've assigned addresses fdef:9062:4cf7:5::2/64
and fdef:9062:4cf7:5::2/64
respectively on interfaces connecting A to B and C. I've assigned fdef:9062:4cf7:5::1/64
address on B and fdef:9062:4cf7:3::1/64
on C. I've added route fdef:9062:4cf7::1/48 via fdef:9062:4cf7:5::2/64
on B and fdef:9062:4cf7::1/48 via fdef:9062:4cf7:3::2/64
on C. I have net.ipv6.conf.all.forwarding=1
on all hosts and I don't run radv
.
Now, I can ping both B and C from host A, but pinging B from C (and vice vera) works only if B and C are in A neighbour cache! As if the kernel forgot to send NDP for routed packets, but not for packets directly sent by ping
.
Is this normal behavior? I'm confused, because I've expected that IPv6 routing will work in a same way as IPv4 routing.