According to the :routing filter documentation [1] it looks like you can use the :routing filter set set-pref-src=<ip_address> option in inbound filters.
By default RouterOS is trying to use the IP on the interface closest to the destination for it’s output traffic, for exchanges, it is using the exchange IP, which can’t be replied to because they are not routed.
For example, the bandwidth test server to my router is through a peering exchange, not transit, so inaccessible.
For a lot of “/tool fetch” downloads to work, I need to add source-ip= to the command for anything available via an exchange.
Ahh, makes sense. You did mention that this was in an IX setting and I didn’t fully think through the ramifications of peering with unroutable address space. Thanks for the clarification.
As in, the preferred-source field of IPv6 routes simply doesn’t work? I haven’t had a reason to try and set it and I want to make sure I’m understanding what you ran into.
If Mikrotik claims this isn’t a bug, that is disappointing.
I will admit that source address selection in IPv6 is significantly more complicated (multiple scopes and dynamic prefixes with different lifetimes) but for a device acting as a router, you need to be able to have the flexibility to pick your source address. I have a similar complaint over here [1] where OSPFv3 seems to pick an address at random to include in the routing table for virtual links but doesn’t give you the control to pick one.
Have you found a solution to your problem in the meantime? I am in a similar situation. I can set the pref-src for IPv6, but it still uses a different source address.