Did you try the DNS method yet??
For static wanip or dynamic wanip you need to add a sourcenat rule.
format: server lan subnet 192.168.66.x
add chain=srcnat action=masquerade dst-address=192.168.66.0/24 src-address=192.168.66.0/24
If you have a dynamic IP then your dst nat rules which should be in this format do not have to change
add chain=dstnat action=dst-nat dst-address=wanip port=xxxx protocol=aaa to-addresses=IPofServer
If you have a dynamic wanip then the dst nat rule needs to change
FROM
add chain=dstnat action=dst-nat in-interface-list=WAN port=xxx protocol=aaa to-addresses=IPofServer
TO and you have a number of choices;
a. make a funky rule such that it works by telling the router that one is stating hey use a local destination address but not one from the 192.168.66.1 and that leaves the local WAN address to use.
What is not clear to me on this one is what if you have multiple subnets, so it appears this one is only applicable for a one trick pony aka a single subnet network.
add chain=dstnat action=dst-nat dst-address-type=local dst-address=!192.168.66.1 \
protocol=bbb dst-port=xx to-adresses=192.168.66.x
b. uses the fact that you have IP cloud available to update the WANIP with the actual WANIP as determined by an IPcloud update and putting this address in a firewall address list.
https://www.youtube.com/watch?v=_kw_bQyX-3U&t=257s
Thus the nat rule becomes ( a destination address
list vice destination address)
add chain=dstnat action=dst-nat
dst-address-list=WAN-IP port=xxx protocol=aaa to-addresses=IPofServer
c. Similar to the ip cloud approach where one uses a firewall address list, one uses a DHCP Script to update dynamic wanip with the actual WANIP as determined by your dhcp client actions.
Such that the rule becomes
add chain=dstnat action=dst-nat
dst-address-list=external_wan port=xxx protocol=aaa to-addresses=IPofServer
DHCP lease script:
:if ($bound=1) do={
/ip firewall address-list set [/ip firewall address-list find where comment="wan1ip"] address=$"lease-address" disabled=no
} else={
/ip firewall address-list set [/ip firewall address-list find where comment="wan1ip"] disabled=yes
}
Where,
/ip firewall address-list
add comment=wan1ip disabled=yes list=external_wan
Advantages: The advantage over relying on method b. is that unlike DDNS updates this method is instant. However, the b. method, DDNS method is useful when there's NAT 1:1 and router itself doesn't have public address.
Overall the DNS redirect is perhaps the most efficient.