Server A has two interfaces (i1 and i2) with the same IP on them, say fd11:1111:1111:1111::1/48.

Server B has the same two interfaces with the same IP on them, say fd11:1111:1111:1111::2/48.

When server B pings server A, the echo request packets come from i1 and the echo reply packets are sent in i2 (all this seen in wireshark), so ping6 on server B never sees the replies.

How can one "force" the kernel to send the replies to the incoming interface? Is it even possible? Or a good idea?

If not, wouldn't it make sense to make ping6 able to listen to all interfaces for replies? Or is there something bigger I'm missing?

FWIW this happens (only) when I use Bird2 with OSPF for routing as I thought you'd need something to take care of setting the routes, but if A prefers i1 and B perfers i2 then that doesn't help.

(Yes this comes from an XY problem and I'm already trying to fix X without this but I still want to know what should be done in such a case)

Edit: I can't find anything on this topic, that's why I think I may be missing something here

  • Unfortunately, questions about hosts/servers are off-topic here. You could try to ask this question on Server Fault for a business network. Also, routing protocols do not actually route packets, they simply exchange routing information between routers. You seem to be misusing the ULA addressing because the next 40 bits after the fd are required to be randomly chosen.
    – Ron Maupin
    Dec 27 '20 at 16:15
  • 1
    You have an invalid configuration. Two interfaces cannot have the same address, at the same time.
    – Ricky
    Dec 27 '20 at 22:36

Are your devices actually configured with RFC4193 Unique Local IPv6 Unicast Addresses or other non-link-local unicast addresses? If so, I don't find the behavior you described too surprising.

There is variation in how routers respond to traceroute (even for IPv4), similar to the unexpected echo-reply origin interface behavior you're observing. I'm not sure it's standards-compliant but it may be a practical reality we have to accept.

Not the answer you're looking for? Browse other questions tagged or ask your own question.