Okay it sounds familiar but everyones situation is unique in some aspect.
I had a situation with two providers, cable, no issues always gets a new IP and the manual IP route I have set in always gets populated with the new ISP gateway IP.
However my fibre op ISP doesnt play well.
Whenever the IP address is changed, due to being done by the ISP (dynamic but not frequent), or I pull the plug or power outage etc, IT REFUSED to put the new gateway IP in the manual route created… Hence I had to do this via script.
So if you can isolate if one particular ISP connection is the problem, I would bet that when you check under IP DHCP settings, that under STATUS, when the ISP comes back online, that you see a new IP address and new IP gateway, but when you go down to your IP route rule there is no connectivity because the ISP gateway IP is set at the old one!!!
This is just one possibility of course and am guessing but what is what was happening to me.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
So the way I tackled it, with much help from others, certainly beyond my scope LOL…
Was to say yes to ADD default route in IP DHCP client and then add a script right in the settings…
So I went to advanced settings and added the below to the open box area.
I cannot remember why but I put in a default route distance of 255, probably so it was never actually chosen for routing purposes but served the purpose of adding the updated gateway IP to the current IP route so the much lower distanced routes would take precedence.
The script appears to say define the parameter iface as the gateway IP. and if the IP DHCP value is bound then find the local gateway and get the value of the gateway IP and then
put that value anywhere you find the key words… Someone else can likely state it far more clearly…
:if ($bound=1) do={
:local iface $interface
:local gw [ /ip dhcp-client get [ find interface=$“iface” ] gateway ]
/ip route set [ find comment=“PrimaryRecursive” gateway!=$gw ] gateway=$gw
/ip route set [ find comment=“SecondaryRecursive” gateway!=$gw ] gateway=$gw
/tool e-mail send to=“myemail@address.ca” subject=([/system identity
get name]) body=" This is your new gateway IP: $gw";
:local sub3 ([/system clock get time])
/tool fetch “https://api.telegram.org/bot…/sendMessage?chat_id=-9999999&text=At+$sub3+BellFibre+Changed+WANIP”
:log info “Telegram notification sent VlanBell IP Changed”
}
Which you could shorten by removing the comms stuff at the bottom too:
:if ($bound=1) do={
:local iface $interface
:local gw [ /ip dhcp-client get [ find interface=$“iface” ] gateway ]
/ip route set [ find comment=“PrimaryRecursive” gateway!=$gw ] gateway=$gw
/ip route set [ find comment=“SecondaryRecursive” gateway!=$gw ] gateway=$gw
}
I do this by ensuring the key or connecting word is included in my comment but nowhere else in the router config ( unique ).
/ip route
…
add comment=PrimaryRecursive distance=3 dst-address=1.0.0.1/32 gateway=ISP1-gatewayIP scope=11
add comment=SecondaryRecursive distance=4 dst-address=9.9.9.9/32 gateway=ISP1-gatewayIP scope=11