I had an interesting time quite recently troubleshooting a DHCP problem. The server wasn't giving out IP addresses when connected to the network or when connected to a hub.
The reason turned out to be a cisco switch problem but the fact that DHCP wasn't working when on a hub clouded the issue.
After fixing the problem (rebooting the switch) I figured that a blog on how to troubleshoot DHCP in Windows 2003 might be of some use as even though this wasn't a DHCP issue I did need to rule out DHCP.
1. Take a look at the DHCP log file normally held in %systemroot%\system32\dhcp. They are in day order and so rotated every 7 days. A healthy log will show lots of 11,
2. If the log doesn't show any IP's being issued restart the DHCP service and check that the log shows AUTHORISED. This means that it's ready to start issuing addresses.
3. Verify that the IP addresses issued are for the CORRECT SUBNET. For example, if your server's NIC is configured for the 192.168.1.0 network and you're DHCP server is issuing addresses for the 172.16.1.0 network then it will NOT issue addresses even if the client is connected to the server over a hub or similar. I will do another posting soon showing a quick way of working out a machine network address.
4. Bring up the properties of the DHCP server and check that you have free addresses that can be issued.
5. Verify that any switches have IP Helpers/DHCP forwarders setup. Remember that DHCP is broadcast only so it is limited to a single subnet.