While the Infoblox blog post makes a compelling case for not using ULA in dual stack environments it can’t see the wood for the trees. It seems that the recommendation only considers networks which have provider independent (PI) IPv6 address space as for the rest GUA may be a suboptimal solution for various reasons.
It is not just theoretically possible to change the precedence value of ULA, at least not on computers running GNU/Linux or Microsoft Windows operating systems.
In case of current GNU/Linux systems all it takes is adding the following two lines to /etc/gai.conf
label fd00::/8 1
precedence fd00::/8 41
I got the idea from the following comment on Reddit https://www.reddit.com/r/ipv6/comments/coei3n/comment/ewtdey6/?utm_source=share&utm_medium=web2x&context=3
In case of recent Microsoft Windows operating systems it takes only one line in Windows PowerShell run with administrator privilege:
netsh interface ipv6 add prefixpolicy fd00::/8 41 1
as explained in this Super User Q&A https://superuser.com/questions/1469774/why-does-windows-10-prefer-ipv4-over-ipv6/1469778#1469778
Two things to keep in mind in case of using NPTv6 and ULA (without GUA on the LAN side) on recent RouterOS (7.3.1 or 7.4beta2). The first one is that
/ipv6 firewall filter
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid
rule included in the Building Advanced Firewall section of the RouterOS documentation https://help.mikrotik.com/docs/display/ROS/Building+Advanced+Firewall has to be disabled in the firewall otherwise for example
ping6 -c 5 google.com
would time out.
The second one is that if the
/ipv6 firewall filter
add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN
rule (which is included both in the default configuration and the Building Advanced Firewall example) is kept enabled than the IPv6 connectivity test on http://test-ipv6.com/ site will fail.