When a computer which has obtained an IP address via DHCP shuts down, the DHCP standard requires that it transmit a "DHCPRELEASE" message to the DHCP server. This informs the server that the address is no longer in use, and that it may safely be assigned to another host.

Microsoft Windows does not do this. When a Windows computer shuts down, it tells the DHCP server nothing at all. As a result, the address that had been assigned to that computer does not become available for re-use until its lease has timed out. Until that time, the address cannot be assigned, and is effectively wasted.

There are two major unpleasant consequences of this bug:

  1. If you have a large network of Windows boxen, but only a certain fraction of them are on at any given time, the network will consume rather more addresses than it really needs. Given that address space is often at a premium -- which is part of why many organizations use DHCP in the first place -- this is suboptimal.
  2. If you frequently dual-boot between a Windows operating system and another, such as GNU/Linux, BeOS, or *BSD, your computer can effectively tie up two IP addresses most of the time. In addition, if your DHCP server has been set to assign a fixed IP address to your MAC address, it may be unable to do so -- when you boot into your non-Windows operating system, Windows has still held onto the address, thus banning the DHCP server from assigning it again -- even to the same machine!
A workaround for this bug is to decrease the lease time on your DHCP server to a period of a few minutes. This guarantees that once a Windows system has shut down, it will not be very long before its address can be reclaimed. However, this has the disadvantage of radically increasing the amount of bandwidth overhead caused by DHCP, and increasing the chances of random lossage.

On Windows 98 and Windows Me, the bug can, in fact, be fixed. To fix it, you must create a Registry key and modify another:

Key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\DHCP
Value name: ReleaseLeaseOnShutdown
Type: DWORD
Value data: 0x00000001 (1)

Key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Shutdown
Value name: FastReboot
Type: STRING
Value data: 0

The reasons for which Microsoft has released a DHCP client which is broken by default may fairly be made the subject of conspiracy theory.


(The author of this writeup is not a Windows user; he picked up this information from a local source of Windows tech support in the process of debugging some strange addressing behavior of dual-booting Win98/Red Hat systems.)

I created an easy patch for this bug in a RegEdit file. To use this fix, you need to put the text below into a text file called "dhcpfix.reg". Then double click on the file and select yes when the "Merge into registry" box comes up. After that, you should get a "Operation sucessful" box. Note that this was only tested on Windows 98 and Windows 98 SE. It may or may not work on Windows 95/Windows 2000/Windows XP.

DHCPFix.reg begins after this line:
-----------------------------------
REGEDIT4


"ReleaseLeaseOnShutdown"=dword:00000001


"FastReboot"=string:"0"
------------------------------------------
DHCPFix.reg ends before the previous line.

Log in or register to write something here or to contact authors.