I always used this method with natted DSL routers :
As earlier, first we need routes to our checking hosts:
/ip route
add dst-address=Host1A gateway=GW1 scope=10
add dst-address=Host1B gateway=GW1 scope=10
add dst-address=Host2A gateway=GW2 scope=10
add dst-address=Host2B gateway=GW2 scope=10
Then, let's create destinations to "virtual" hops to use in further routes. I'm using 10.1.1.1 and 10.2.2.2 as an example:
/ip route
add dst-address=10.1.1.1 gateway=Host1A scope=10 target-scope=10 check-gateway=ping
add dst-address=10.1.1.1 gateway=Host1B scope=10 target-scope=10 check-gateway=ping
add dst-address=10.2.2.2 gateway=Host2A scope=10 target-scope=10 check-gateway=ping
add dst-address=10.2.2.2 gateway=Host2B scope=10 target-scope=10 check-gateway=ping
And now we may add default routes for clients:
/ip route
add distance=1 gateway=10.1.1.1 routing-mark=ISP1
add distance=2 gateway=10.2.2.2 routing-mark=ISP1
add distance=1 gateway=10.2.2.2 routing-mark=ISP2
add distance=2 gateway=10.1.1.1 routing-mark=ISP2
The problem comes with PPPoE connection:
if gateway=GW1 becomes gateway=pppoe-out1 , Host1A becomes reachable BUT relative virtual host 10.1.1.1 remains unreachable .
10.1.1.1 becomes reachable only if I declare pppoe gateway remote IP address as gateway for Host1A route (instead of pppoe-out1 interface name)
in fact, 10.1.1.1 turns into recursively reachable via
The problem is pppoe remote gateway can change time to time causing 10.1.1.1 thus the entire route to be unreachable despite Host1A is reachable.
Why is this ?
Any workaround please ?