what is "rfc3442-classless-static-routes" in /etc/dhcp/dhclient.conf

The original DHCP specification (RFC 2131 and 2132) defines an option (33) that allows the administrator of the DHCP service to issue static routes to the client if needed.

Unfortunately, that original design is flawed these days as it assumes classful network addresses, which is rarely used.

The rfc3442-classless-static-routes option allows you to use classless network addresses (or CIDR) instead.

CIDR requires a subnet mask to be explicitly stated, but the original DHCP option 33 doesn't have space for this. Therefore, this option (as defined in RFC 3442) simply enables an newer replacement DHCP option (option 121) which defines static routes using CIDR notation.

Basically, if you need to issue static routes to your devices using DHCP and these static routes use CIDR then you need to enable this option.

A static routes can be used if you have split a network into to multiple smaller networks and need to inform each routers about how traffic gets from one to another without using one of the many dynamic routing protocols available. You basically set up each router with a statement to the effect of "to get to network a.b.c.d, send traffic through f.g.h.i".

If the route you set up in the router are classful, then you do not need to enable this option. However, if the routes are CIDR then you will need to enable this option. Fortunately, many home/cafe network use the 192.168.0.0 network with a subnet of 255.255.255.0 (or /24), which is a true Class-C network, therefore you can avoid this option.

On the other hand, some home/cafe networks run on the 10.0.0.0 network. This is a Class-A network by default. If you are breaking this into many 10.0.x.0 sub-nets for example, then these will all be CIDR networks which means you will need to enable this option.

The above is only true if you also need to issue this routing information to your hosts via DHCP. Whether you need to issue these static routing information to your hosts is defined by the design of your network. I'd hazard a guess that a basic home/cafe network doesn't need it as static routes are usually defined at the routers.

The configuration you have above simply defines a new option (there are many predefined options that dhclient already understands) as option 121 which consists of an array of 8 unsigned integers. It then configures the client to request this option if it is set on the DHCP server.

If the DHCP server returns a value for this option a dhclient exit hook script (/etc/dhclient/dhclient-exit-hooks.d/rfc3442-classless-routes) reads the value and configures the routing table accordingly.