Recursive routing to a dynamic default route error

After updating to ROS 6.40.7 (latest bugfix release), routes that recursively resolve to the default route are always unreachable.

/ip route
add distance=1 dst-address=18.232.39.253/32 gateway=1.1.1.1 target-scope=30 comment="unreachable after update to 6.40.7"
add distance=1 dst-address=18.232.39.255/32 gateway=isp-1 target-scope=30 comment="Works with interface name"

A PPPoE connection adds the dynamic default route:

dst-address=0.0.0.0/0 gateway=isp-1 reachable distance=1 scope=30 target-scope=10

I don’t remember the version of ROS I was running before the update.
If I specify the interface name as the gateway, it works.

How can I debug this?

I have reproduced the problem in a clean installation of ROS 6.40.7 in VirtualBox.

With a static default route, the route to 100.100.100.100/32 is correctly recursively resolved to 172.20.0.1.


> ip address print detail  
Flags: X - disabled, I - invalid, D - dynamic 
 0   address=172.20.33.1/16 network=172.20.0.0 interface=real-world 
     actual-interface=real-world 

> ip route print detail    
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
 0 A S  dst-address=0.0.0.0/0 gateway=172.20.0.1 
        gateway-status=172.20.0.1 reachable via  real-world distance=1 scope=30 
        target-scope=10 

 1 A S  dst-address=100.100.100.100/32 gateway=1.1.1.1 
        gateway-status=1.1.1.1 recursive via 172.20.0.1 real-world distance=1 
        scope=30 target-scope=30 

 2 ADC  dst-address=172.20.0.0/16 pref-src=172.20.33.1 gateway=real-world 
        gateway-status=real-world reachable distance=0 scope=10

But when the default route is dynamic - installed by a client PPPoE connection - the same route to 100.100.100.100/32 is unreachable.


> ip address print detail  
Flags: X - disabled, I - invalid, D - dynamic 
 0   address=172.20.33.1/16 network=172.20.0.0 interface=real-world 
     actual-interface=real-world 

 1 D address=5.0.0.5/32 network=5.0.0.0 interface=isp-1 actual-interface=isp-1 

> ip route print detail 
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
 0 ADS  dst-address=0.0.0.0/0 gateway=isp-1 gateway-status=isp-1 reachable 
        distance=1 scope=30 target-scope=10 

 1 ADC  dst-address=5.0.0.0/32 pref-src=5.0.0.5 gateway=isp-1 
        gateway-status=isp-1 reachable distance=0 scope=10 

 2   S  dst-address=100.100.100.100/32 gateway=1.1.1.1 
        gateway-status=1.1.1.1 unreachable distance=1 scope=30 target-scope=30 

 3 ADC  dst-address=172.20.0.0/16 pref-src=172.20.33.1 gateway=real-world 
        gateway-status=real-world reachable distance=0 scope=10

I downgraded to version 6.30.1 in VirtualBox, and it works as expected in this version: 100.100.100.100/32 is reachable through the remote address of the PPPoE connection.


> ip address print detail 
Flags: X - disabled, I - invalid, D - dynamic 
 0   address=172.20.33.1/16 network=172.20.0.0 interface=real-world 
     actual-interface=real-world 

 1 D address=5.0.0.5/32 network=5.0.0.0 interface=isp-1 actual-interface=isp-1

> ip route print detail   
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
 0 ADS  dst-address=0.0.0.0/0 gateway=5.0.0.0 
        gateway-status=5.0.0.0 reachable via  isp-1 distance=0 scope=30 
        target-scope=10 

 1 ADC  dst-address=5.0.0.0/32 pref-src=5.0.0.5 gateway=isp-1 
        gateway-status=isp-1 reachable distance=0 scope=10 

 2 A S  dst-address=100.100.100.100/32 gateway=1.1.1.1 
        gateway-status=1.1.1.1 recursive via 5.0.0.0 isp-1 distance=1 scope=30 
        target-scope=30 

 3 ADC  dst-address=172.20.0.0/16 pref-src=172.20.33.1 gateway=real-world 
        gateway-status=real-world reachable distance=0 scope=10

Don’t think you can do next hop / recursive via interface routing, must be IP Address, see difference here between not working and working:
Capture.JPG

The routes you highlighted are added by ROS itself, when the PPPoE client connection is established. The configuration of the client and the PPPoE server have not been changed.

Can I make ROS use the IP address again?

What you can do is:

to disable “add default route” in PPPOE client settings, then create a static route pointing to the IP of the gateway. (Make a comment in this route to check gateway IP if it fails in future, just in case ISP has made IP changes)
Then do Next Hop / Recursive routing via this

From the changelog for release 6.40:

*) ppp - use interface name instead of IP as default route gateway;

So this is not a bug, but a feature that has been removed.

Unfortunately, the local and the remote addresses change, so I cannot simply route to the remote address.
I’ll try to work around this problem by setting the remote address in the PPP profile used for my ISP.