with Only Routing Configuration". https://mum.mikrotik.com/presentations/ ... 743837.pdf
After the conference, I was asked from many people in Thailand on how to automatically update the ISP gateway addresses at routes if the ISP gateway addresses at the WAN interfaces were changed. My presentation showed them how to configure the recursive routes (i.e. routes with the static ISP gateways). As they asked, I realized that some ISPs sometimes change their gateway addresses. I have responded them with a solution to use a script that is able to automatically update the gateway addresses of the routes. I would like to share the following script here. Hopefully it may be useful for others.
In case of PPPoE Client at a WAN Link, the script is as follows:
Code: Select all
: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;
}
Note that you can run it on the On Up event of PPPoE client by putting it in the PPPoE Client's profile.
In case of DHCP Client at a WAN Link, the script is as follows:
Code: Select all
: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;
}
Note that you can run it on the system scheduler with an appropriate period of time.
If you want to apply for more than one WAN links, for example, two WAN links (PPPoE Clients), just copy the above script and paste like this.
Code: Select all
: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;
}