Feature Request: Allow disabling IPv6 publication in /ip cloud (DDNS)

RouterOS version: 7.23.2 (stable)
Board: RB hAP ac² (or specify per device)

Description:

Currently, /ip cloud automatically publishes both IPv4 and IPv6 (AAAA record) addresses to the DDNS hostname whenever the router has a global IPv6 address, with no way to disable IPv6 publication independently of IPv4.

/ip cloud print
          ddns-enabled: yes
  ddns-update-interval: none
           update-time: yes
        public-address: xxx.xxx.xxx.xxx
   public-address-ipv6: yyyy:yyyy:yyyy:yyyy::y
              dns-name: zzzzzzzzzzzz.sn.mynetname.net
                status: updated

public-address-ipv6 is a read-only field — there is no writable parameter to suppress it:

/ip cloud set public-address-ipv6=""
bad parameter public-address-ipv6 (line 1 column 34)

Use case / problem:

When a router has dual-stack WAN (IPv4 + IPv6), but a LAN device behind it (e.g. an NVR, camera, or any other service being accessed via DDNS) only supports IPv4, client applications resolving the DDNS hostname receive both A and AAAA records. Many clients (following Happy Eyeballs / IPv6-preferred behavior) attempt to connect via IPv6 first, fail (since the target device has no IPv6 connectivity and/or the firewall correctly drops unsolicited inbound IPv6), and either hang or fail to fall back to IPv4 promptly.

The only current workarounds are:

  • Fully disabling ddns-enabled (loses IPv4 DDNS too, not viable with dynamic public IPv4)
  • Disabling the IPv6 DHCP client entirely on the WAN (loses IPv6 connectivity for the whole router/LAN, not just DDNS publication)
  • Editing hosts files on every client device (not scalable, doesn't work well on mobile)

None of these are acceptable when the router legitimately needs IPv6 connectivity for other purposes, but the specific service being published via DDNS is IPv4-only.

Requested feature:

Add a writable parameter to /ip cloud, e.g.:

/ip cloud set ddns-publish-ipv6=no

allowing IPv6 address publication to the Cloud DDNS record to be disabled independently, while keeping the IPv6 connectivity of the router itself (and IPv4 DDNS) fully functional.

I would like /ip cloud to have the option to return only ipv4 or ipv6 addresses
perhaps using

ipv4.xxxxx.sn.mynetname.net
or maybe 
xxxxx.ipv4.sn.mynetname.net
and similar for ipv6

One use case:
Sometimes you only have CGNat access via ipv4, dynamic via ipv6 and wireguard keeps wanting to use ipv4, this allows you to force ipv6.

The following command is mentioned in the docs but I can't elaborate with certainty on its function:

/ip cloud app update

It has an ip6-enabled parameter, so maybe that's the requested option?

If I had a penny .....

Hello AI, welcome to our community.
Obviously the example is for blocking IPv4, it needs to be adjusted for IPv6.
Use your brain or your artificial one.

Thanks for the tip, it helped! I did have to adjust it, though—I need to block IPv6 access to cloud2.mikrotik.com, not IPv4. Otherwise, the effect would be the opposite (the A record would be lost, not the AAAA record). A working solution:

/ipv6 firewall address-list add address=cloud2.mikrotik.com list=mt-cloud2-v6
/ipv6 firewall filter add action=drop chain=output dst-address-list=mt-cloud2-v6 dst-port=15252 protocol=udp comment="force cloud DDNS to IPv4-only"
/ip cloud set ddns-enabled=auto
/ip cloud set ddns-enabled=yes

After that, the issue didn't pick up right away—a router reboot was required, apparently to completely clear the cached state of the cloud client. After the reboot, the AAAA record disappeared in /ip cloud print , leaving only IPv4:

public-address: xxx.xxx.xxx.xxx
dns-name: zzzzzzzzzzzz.sn.mynetname.net
status: updated

Now DDNS only processes A-records, and IPv6 continues to function normally in the rest of the network. Thanks again!

Also, the author of rplant has a good suggestion, I support it.

ipv4.xxxxx.sn.mynetname.net
or maybe 
xxxxx.ipv4.sn.mynetname.net
and similar for ipv6