I have the following problem I want to solve:

  • I have multi homed system running linux, with three interfaces. All interfaces are configured by dhcp. The DHCP client is ISC dhcp 4.2.5
  • The DHCP server provides a default route on all networks.
  • I want the default route to be set for the first interface only.

So basically I want to instruct dhclient to not request routers on all interfaces, except for one. The documentation, and examples I found on the internet suggest that this is possible. However I can't get it to work.

I can do it manually. If I do:

sudo dhclient -d -1  -R subnet-mask,broadcast-address eth1

Then I see that the dhcp request only contains a request for subnet-mask and broadcast-address. I verified that with wireshark, and done like this no default route will be set on eth1. This is what I expect.

I then created the following dhclient.conf file:

request subnet-mask, broadcast-address;

interface "eth0" {
  also request routers, domain-name, domain-name-servers, domain-search, host-name, interface-mtu, rfc3442-classless-static-routes, ntp-servers, time-offset;

As far as I can see this should result in only ubnet-mask, broadcast-address being requested, except on eth1, where a lot more should be requested.

I tested this with:

sudo dhclient -d -1  -cf dhclient.conf  eth1

And I looked at the network again with wireshark. And what I saw was that, in spite of what the config says the dhclient is requesting the default list of options , not just the two options I configured.

Why would that be? Is this a bug? Did I make a mistake in my config file?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.