Не помню чем я руководствовался при настройке, но была похожая ситуация, сводящаяся к той же основной задаче, но адреса статические. Я сел подумал 10 минут и у меня сейчас работает так:
/ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic
1 ;;; coltel input connection
chain=prerouting action=mark-connection
new-connection-mark=coltel_input_connection passthrough=yes
dst-address=x.x.x.x
2 ;;; unico input connection
chain=prerouting action=mark-connection
new-connection-mark=unico_input_connection passthrough=yes
dst-address=y.y.y.y
3 ;;; coltel output mark
chain=output action=mark-routing new-routing-mark=coltel_output_routing
passthrough=yes connection-mark=coltel_input_connection
4 ;;; unico output mark
chain=output action=mark-routing new-routing-mark=unico_output_routing
passthrough=yes connection-mark=unico_input_connection
И шлюзы по умолчанию прописал 2 раза - первый раз с разной метрикой для простейшего резервирования и потом еще раз с routing-mark'ом и большей метрикой.
/ip route print detail
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
0 A S dst-address=0.0.0.0/0 gateway=y.y.y.z
gateway-status=y.y.y.z reachable via ether5-Unico
check-gateway=ping distance=4 scope=30 target-scope=10
routing-mark=unico_output_routing
1 A S dst-address=0.0.0.0/0 gateway=x.x.x.z
gateway-status=x.x.x.z reachable via ether4-Columbia
check-gateway=ping distance=4 scope=30 target-scope=10
routing-mark=coltel_output_routing
2 A S ;;; Default Coltel
dst-address=0.0.0.0/0 gateway=x.x.x.z
gateway-status=x.x.x.z reachable via ether4-Columbia
check-gateway=ping distance=2 scope=30 target-scope=10
3 S ;;; Unico Default
dst-address=0.0.0.0/0 gateway=y.y.y.y
gateway-status=y.y.y.z reachable via ether5-Unico
check-gateway=ping distance=3 scope=30 target-scope=10
Извне оба интерфейса доступны.
Использование Route rule было бы изящней, конечно.