alternatively use my following script to import (sync) an address-list into routing-rules table.. then you can fasttrack PPTP and you will not need to mark-routing.
remember to add ; SRC:(empty) DST:LAN table:main routing rule, manually for the incoming traffic..
:local LANaddr "192.168.88.0/24"
:local fwaddrlist "pptp"
:local scriptname "fw_sync_rrule"
:local routetable "pptp"
{
/system script job
:if ([:len [find script="$scriptname"]] > 1) do={
:log info "$scriptname : script already running"
:error "$scriptname : script already running"
}
}
/routing/rule
:local addrlistentryId
:foreach i in=[find comment="$scriptname"] do={
:local src [get $i src-address]
:local dst [get $i dst-address]
:local dstWO32 [get $i dst-address]
:if ( :len [:find $dst "/32"] > 0) do={
:set dstWO32 [:pick $dst 0 [:find $dst "/32"]]
}
:if ($LANaddr != $src) do={
/routing/rule/set $i src-address=$LANaddr
:log info "$scriptname : routing rule $dst fixed (wrong LAN address)"
}
:if ( [:len [:find $dst "/"]] < 1 ) do={
/routing/rule/set $i dst-address=($dst . "/32")
:log info "$scriptname : routing rule $dst fixed (add missing /32)"
}
:set addrlistentryId [ /ip/firewall/address-list/find list="$fwaddrlist" address="$dstWO32"]
:if ( [ :len $addrlistentryId ] < 1 ) do={
/routing/rule/remove $i
:log info "$scriptname : routing rule $dst removed (not in firewall)"
}
}
/ip/firewall/address-list/
:local rruleentryId
:foreach i in=[find list="$fwaddrlist"] do={
:local addr [get $i address]
:if ( [:len [:find $addr "/"]] < 1 ) do={
:set addr ($addr . "/32")
}
:set rruleentryId [ /routing/rule/find comment="$scriptname" dst-address="$addr"]
:if ( [ :len $rruleentryId ] < 1 ) do={
/routing/rule/add comment="$scriptname" src-address=$LANaddr dst-address=$addr action=lookup table=$routetable
:log info "$scriptname : routing rule added for $addr"
}
}
note: add scheduler for running it every ten seconds, or so…
WARNING: script is experimental… use it at your own risk…
Hope this can be implemented natively someday by MikroTik Team! because using the script is resource-intensive.