Hola,
Veo con agrado que un post de hace mas de 2 años aun ayuda a alguien, actualmente he mejorado un poco el proceso y el funcionamiento es muy bueno, sin esa espera de unos segundos cuando hay cambio de deco.
Recuerdo el link original del proceso a seguir:
https://www.adslzone.net/foro/fibra...-neutro-mikrotik.311611/page-360#post-3074318
Simplemente si sustituimos el script del paso 3 por este:
Código:
/system script add dont-require-permissions=no name=vod owner=admin policy=read,write source=":local iplist [:len [/ip firewall address-list find list=\"vod-receiver\"]]\
\n:local rules [:len [/ip firewall nat find where comment=\"VOD Script\"]]\
\n#:log info \"VODScript: IPs in list are \$iplist !\"\
\n#:log info \"VODScript: Rules are \$rules !\"\
\n:if (\$iplist = 0 and \$rules > 0) do={\
\n\t#/ip firewall nat remove [find comment=\"VOD Script\"];\
\n\t#:log info \"VODScript: Rule removed !\"\
\n} else {\
\n\t:local ipadressnew [/ip firewall address-list get [:pick [/ip firewall address-list find list=\"vod-receiver\"] (\$iplist-1)] address]\
\n\t:local ipadressold \"None\"\
\n\t#:log info \"VODScript: IP adress new is \$ipadressnew !\"\
\n\t:if (\$iplist > 0 ) do {\
\n\t\tif (\$rules > 0 ) do {\
\n\t\t\t:set ipadressold [/ip firewall nat get [find comment=\"VOD Script\"] to-addresses] \
\n\t\t\t#:log info \"VODScript: IP adress old is \$ipadressold !\"\
\n\t\t}\
\n\t\t:if (\$ipadressnew != \$ipadressold) do={\
\n\t\t\tif (\$rules > 0 ) do {\
\n\t\t\t\t/ip firewall nat remove [find comment=\"VOD Script\"];\
\n\t\t\t}\
\n\t\t\t/ip firewall nat add action=dst-nat chain=dstnat comment=\"VOD Script\" dst-address-type=local in-interface=vlan2 to-addresses=\$ipadressnew\
\n\t\t\t:log info \"VODScript: IP adress changed from \$ipadressold to \$ipadressnew !\"\
\n\t\t}\
\n\t}\
\n}"
El script aunque mas largo es mas ligero que el original, ya que normalmente solo hace comparaciones, se puede eliminar algún comentario, para ser mas vervose, o para eliminar la regla cuando paramos el deco, pero eso ya lo dejo al gusto de cada uno.
Como que el script es más ligero, el intervalo de ejecución del paso 4, puede ser más agresivo:
Código:
/system scheduler add interval=5s name=vod on-event=vod policy=read,write start-time=startup
Un saludo a todos, y me alegro de haber ayudado.