Согласно моей презентации на конференции MUM 2018 в Таиланде, я выступал с докладом на тему «Мониторинг интернет-соединений WAN-ссылок только с помощью настройки маршрутизации». После конференции многие люди в Таиланде спрашивали меня, как автоматически обновлять адреса шлюзов ISP в маршрутах, если адреса шлюзов ISP на WAN-интерфейсах изменяются. В моей презентации я показал, как настраивать рекурсивные маршруты (то есть маршруты со статическими шлюзами ISP). Однако по их вопросам я понял, что некоторые провайдеры иногда меняют адреса шлюзов. Я ответил им решением — использовать скрипт, который автоматически обновляет адреса шлюзов в маршрутах. Хочу поделиться этим скриптом здесь, надеюсь, он будет полезен и другим.
В случае PPPoE клиента на WAN-ссылке скрипт выглядит так:
:local newgw [/ip address get [find interface="pppoe-out1"] network];
:local routegw [/ip route get [find comment="isp1"] gateway ];
:if ($newgw != $routegw) do={
/ip route set [find comment="isp1"] gateway=$newgw;
}
Обратите внимание, что его можно запускать на событие On Up PPPoE клиента, добавив в профиль PPPoE клиента.
В случае DHCP клиента на WAN-ссылке скрипт такой:
:local newgw [ip dhcp-client get [find interface="ether1"] gateway];
:local routegw [/ip route get [find comment="isp1"] gateway ];
:if ($newgw != $routegw) do={
/ip route set [find comment="isp1"] gateway=$newgw;
}
Его удобно запускать через системный планировщик с подходящим интервалом.
Если нужно применить для нескольких WAN-ссылок, например, двух WAN-ссылок с PPPoE клиентами, просто скопируйте этот скрипт и вставьте так:
:local newgw1 [/ip address get [find interface="pppoe-out1"] network];
:local routegw1 [/ip route get [find comment="isp1"] gateway ];
:if ($newgw1 != $routegw1) do={
/ip route set [find comment="isp1"] gateway=$newgw1;
}
:local newgw2 [/ip address get [find interface="pppoe-out2"] network];
:local routegw2 [/ip route get [find comment="isp2"] gateway ];
:if ($newgw2 != $routegw2) do={
/ip route set [find comment="isp2"] gateway=$newgw2;
}
В случае PPPoE клиента на WAN-ссылке скрипт выглядит так:
:local newgw [/ip address get [find interface="pppoe-out1"] network];
:local routegw [/ip route get [find comment="isp1"] gateway ];
:if ($newgw != $routegw) do={
/ip route set [find comment="isp1"] gateway=$newgw;
}
Обратите внимание, что его можно запускать на событие On Up PPPoE клиента, добавив в профиль PPPoE клиента.
В случае DHCP клиента на WAN-ссылке скрипт такой:
:local newgw [ip dhcp-client get [find interface="ether1"] gateway];
:local routegw [/ip route get [find comment="isp1"] gateway ];
:if ($newgw != $routegw) do={
/ip route set [find comment="isp1"] gateway=$newgw;
}
Его удобно запускать через системный планировщик с подходящим интервалом.
Если нужно применить для нескольких WAN-ссылок, например, двух WAN-ссылок с PPPoE клиентами, просто скопируйте этот скрипт и вставьте так:
:local newgw1 [/ip address get [find interface="pppoe-out1"] network];
:local routegw1 [/ip route get [find comment="isp1"] gateway ];
:if ($newgw1 != $routegw1) do={
/ip route set [find comment="isp1"] gateway=$newgw1;
}
:local newgw2 [/ip address get [find interface="pppoe-out2"] network];
:local routegw2 [/ip route get [find comment="isp2"] gateway ];
:if ($newgw2 != $routegw2) do={
/ip route set [find comment="isp2"] gateway=$newgw2;
}
