Adding some tracing to the dhclient-script, I can see that
/etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes is trying to add
the routes with calls like:

ip -4 route add 169.254.169.254/32 via 169.254.0.1 dev ens5

However, because there's no route to 169.254.0.1, the call fails with
"Error: Nexthop has invalid gateway."

On systems where the routes are properly configured, there's a link scope
route to that address, e.g. on sid:

169.254.0.1 dev ens5 proto dhcp scope link src 169.254.2.187 metric 100

If we create this route on bullseye, then the rest of the IPv4 routes are
installed as expected.  Something like the following could work, but I'm
open to other options:

services/admin@i-07e63055bb304147c:~$ cat /etc/dhcp/dhclient-exit-hooks.d/gw
case "$reason" in
  BOUND|RENEW|REBIND|REBOOT)
        if [ -z "$old_ip_address" ] ||
           [ "$old_ip_address" != "$new_ip_address" ]; then
                case "$new_ip_address" in
                  169.254.*)
                        ip -4 ro add 169.254.0.1 dev "$interface" scope link
                  ;;
                esac
        fi
  ;;
esac

Reply via email to