Why won't dhclient use the static IP I'm telling it to request?

As Zoredache correctly pointed out: the fixed-address setting is only for lease definitions that are effective only if the DHCP server does not respond. See http://linux.die.net/man/5/dhclient.conf under section "Lease Declarations".

What you want is

interface "eth0" {
    send dhcp-requested-address 192.168.1.222;
}

This is documented in the manpage of dhcp-options: http://linux.die.net/man/5/dhcp-options and conforms to the DHCP Options RFC available at http://www.rfc-editor.org/rfc/rfc2132.txt

Take note though: I lately run into dhclient3 not getting an IP with this configuration as the requested address was already taken. The server replies with DHCPNAK to the request, and the client will give up after a while. I had expected that the DHCP client will eventually end up with another address if the requested one is not available.

I used this approach in an attempt to make sure that I always know the address of my server without resorting to stuff like dyndns.com and ended up with no connectivity instead.


Reject is for rejecting offers from servers with a specific address. It is not there to reject addresses the server offers.

The reject statement causes the DHCP client to reject offers from servers whose server identifier matches any of the specified hosts or subnets. This can be used to avoid being configured by rogue or mis‐ configured dhcp servers,

A defined lease is only used if the DHCP Server does not respond.

lease { lease-declaration [ ... lease-declaration ] }

The DHCP client may decide after some period of time (see PROTOCOL TIMING) that it is not going to succeed in contacting a server.

If you want a particular address you should probably setup a reservation on the server.