IPv6 Ping does not work with domain names

I didn’t realize there was a thread that was this old about frustration with the RFC-noncompliant nature of DNS resolution in RouterOS. I think @alaine was on the right track in 2015 when they suggested that the best angle to take is a backward-compatible improvement to :resolve. Anyone still following this thread (maybe even from Mikrotik) might want to take a look at my proposal for :resolve improvements over here. The exact same behaviors I suggest could be used implicitly behind the scenes to make :ping work like you expect.

Here is a relevant snippet:


  1. Continue the default behavior to only return one record, but provide an option full-answer=true|false to return the full answer.

The :resolve command is used for both debugging and scripting purposes and this change benefits both purposes. Since RouterOS has DNS server functionality, it’s always frustrating to debug DNS-related issues when the router itself doesn’t have a good DNS client. Currently, the only recourse is to use dig or nslookup from a client device and then inspect :ip dns cache on the router to see what happened. From a scripting perspective, it would be nice to be given all of the answers for a query for round-robin connections, health checks, etc.

  1. Provide an option in :ip dns called client-behavior: prefer-v4|dual-stack

prefer-v4 preserves the legacy behavior and will return A record(s) if both A and AAAA are available. Since some users are undoubtedly relying on this quirk, this can remain the RouterOS default for several versions to give them time to migrate.
dual-stack follows RFC 8305 and attempts dual-stack resolution like a standard DNS client. If both address families are present and RouterOS has a configured IPv6 address it can use as a source, the AAAA record(s) are returned. After a sufficient amount of time, this should become the RouterOS default.

The fact that RouterOS unconditionally prefers IPv4 makes it ill-suited as a modern dual-stack client. I don’t fully understand why the choice was made in the first place. Although not in my ask here (because of the amount of work that would be involved), I do hope that RouterOS 7 has a proper RFC-8305-compliant control plane for any connections the router makes.