А все просто:
например у вас клиент 10.10.1.3 пытает подключить через роутер
На роутер пакет приходит вида src: 10.10.1.3 dst: WAN_IP dport 1021
/ip firewall nat chain=dstnat action=dst-nat to-addresses=10.10.1.2 protocol=tcp dst-port=1021 dst-address=WAN_IP
- это правило, наверное уже есть (обратите внимание пакеты фильтруются только по адресу назначения, протоколу и порту, у вас может быть еще по интерфесу - это следует убрать)
после него пакет будет вида src: 10.10.1.3 dst: 10.10.1.2 и с роутера успешно уйдет по назначению, там обработается и вернется на src (т.е. 10.10.1.3), но клиент-то ждет обратно пакет от роутера, ну и сбросит его как хлам, поэтому надо чтобы на выходе с роутера был пакет с src-адресом роутера, тогда роутер завернет его в нат и вернет клиенту.
соответственно поможет маркировка
/ip firewall mangle add chain=prerouting action=mark-packet new-packet-mark=1 protocol=tcp src-address=10.10.1.0/24 dst-address=WAN_IP dst-port=1021
это правило выполнится до DNAT и пометит нужные пакет соединения
А дальше мухлюем с адресами
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=10.10.1.2 packet-mark=1
/ip firewall nat add chain=srcnat action=src-nat to-addresses=LAN_IP packet-mark=1
WAN_IP - это внешний адрес роутера,
LAN_IP - это его внутренний адрес