How does dhcp(d) choose an IP address?

John Summerfield debian at herakles.homelinux.org
Sat Oct 13 23:16:47 UTC 2007


Timothy Murphy wrote:
> I was reading the thread on "Determining IP information for lo"
> and it reminded of a strange phenomena I noticed on my system.
> 
> The laptop I am using now, which should be 192.168.2.11
> (according to /etc/hosts)
> has been given the address 192.168.2.101,
> although I don't see any mention of this address
> anywhere on the desktop running dhcpd,
> or on the laptop,
> except in /var/lib/dhclient/dhclient-eth0.leases .
> (The correct MAC address for the laptop, and its desired IP address,
> is given in /etc/dhcpd.conf , but for some reason this is ignored.)
> 
> I should say that WiFi works perfectly well with this wrong address.
> But it has made me realize that I am very hazy about how dhcp works,
> and how exactly dhcpd determines the addresses it will give out.
> Is there a reasonably clear account of this anywhere?
> 
> I saw incidentally that something or someone
> (I assume a yum update)
> had moved /etc/dhclient.conf to dhclient.conf.bak ,
> just leaving what looked like a fairly useless dhclient.conf.sample ,
> confirming my view that the people who write sample files for Fedora
> are somewhat lacking in common sense.

The answer to the Q in the subject line is fairly complicated, but 
basically, the DHCP server has a range from which it can issue IP 
addresses, as in this para:

subnet 192.168.8.0 netmask 255.255.255.0 {
         range 192.168.8.150 192.168.8.169;
         option domain-name-servers      192.168.9.4;
         option routers                  192.168.8.4;

}

DHCP clients generally ask for their previous IP address, and if it's 
available to them they probably get it.

The server can be configured to hand out fixed IP address thus:
         host printer {
                 hardware ethernet 00:40:8c:10:7d:3a;
                 fixed-address 192.168.9.2;
         }
A client configured for a fixed IP address won't receive one from the 
range, or the address it requests (unless it's the fixed one).

If, considering the above points the client hasn't an address, the 
server selects one from the range, tests whether it's available, and if 
so, offers it.

Check your server logs for messages containing DHCP for more illumination.

There are possible complications; I can offer different information to 
one machine depending on whether it's the BIOS, Anaconda, Debian's 
installer, (probably) Windows or something else requesting



-- 

Cheers
John

-- spambait
1aaaaaaa at coco.merseine.nu  Z1aaaaaaa at coco.merseine.nu

Please do not reply off-list




More information about the fedora-list mailing list