Скрипт нужно вписать в поле Script у DHCP-Client'а, подправив лишь первую переменную (изменить на желаемую Routing Mark для данного интерфейса). Если нужно добавлять в основную таблицу маршрутизации, делаем :local rmark "main"
UPDATES:
13.10.2022: Оказывается, в скрипте доступна переменная gateway-address - используем её. И добавил скрипт для RouterOS v7 - там поменяли routing-mark на routing-table и надо заранее создавать таблицу маршрутизации.
Для RouterOS v6:
Код: Выделить всё
#
# здесь надо подправить метку на нужную (например, WAN1, WAN2, WAN3)
# ставим "main", если надо добавить маршрут в основную таблицу маршрутизации
#
:local rmark "WAN1"
#
# дальше ничего редактировать не надо
#
:local count [ /ip route print count-only where dst-address=0.0.0.0/0 routing-mark=$rmark ]
:if ($bound=1) do={
:local gw "$"gateway-address"%$interface"
:if ($count=0) do={
/ip route add gateway=$gw routing-mark=$rmark
} else={
if ($rmark="main") do={
/ip route set [ find dst-address=0.0.0.0/0 !routing-mark gateway!=$gw ] gateway=$gw
} else={
/ip route set [ find dst-address=0.0.0.0/0 routing-mark=$rmark gateway!=$gw ] gateway=$gw
}
}
} else={
:if ($rmark="main") do={
/ip route remove [ find dst-address=0.0.0.0/0 !routing-mark gateway~"%$interface\$" ]
} else={
/ip route remove [ find dst-address=0.0.0.0/0 routing-mark=$rmark type=unicast ]
}
}
Код: Выделить всё
#
# здесь надо подправить метку на нужную (например, WAN1, WAN2, WAN3)
# ставим "main", если надо добавить маршрут в основную таблицу маршрутизации
# таблица уже должна существовать, создаётся командой
# /routing table add fib name=ИМЯ
#
:local rmark "WAN1"
#
# дальше ничего редактировать не надо
#
:local count [ /ip route print count-only where dst-address=0.0.0.0/0 routing-table=$rmark ]
:if ($bound=1) do={
:local gw "$"gateway-address"%$interface"
:if ($count=0) do={
/ip route add gateway=$gw routing-table=$rmark
} else={
if ($rmark="main") do={
/ip route set [ find dst-address=0.0.0.0/0 !routing-table gateway!=$gw ] gateway=$gw
} else={
/ip route set [ find dst-address=0.0.0.0/0 routing-table=$rmark gateway!=$gw ] gateway=$gw
}
}
} else={
:if ($rmark="main") do={
/ip route remove [ find dst-address=0.0.0.0/0 !routing-table gateway~"%$interface\$" ]
} else={
/ip route remove [ find dst-address=0.0.0.0/0 routing-table=$rmark type=unicast ]
}
}