This error indicates that DHCP has timed out without receiving a response from a DHCP server.
Things to try:
* Check that your DHCP server is online and responding to requests.
* Check your DHCP server logs. For example, if you are using ISC dhcpd, you should see something like dhcpd: DHCPDISCOVER from 00:18:f3:f0:9e:61 via eth0
dhcpd: DHCPOFFER on 10.0.0.171 to 00:18:f3:f0:9e:61 via eth0
dhcpd: DHCPREQUEST for 10.0.0.171 (10.0.0.6) from 00:18:f3:f0:9e:61 via eth0
dhcpd: DHCPACK on 10.0.0.171 to 00:18:f3:f0:9e:61 via eth0
* Watch traffic on the DHCP server in real time
* tcpdump -i eth0
* After the failed DHCP attempt, check the output from the ''[[:cmd:ifstat]]'' command to see if iPXE is receiving any packets (the "''RX''" counter) or experiencing receive errors (the "''RXE''" counter).
* Try configuring an appropriate static IP address on the iPXE client, using the iPXE [[:cmdline|command line]]. For example, to configure the static IP address 10.0.0.199/255.255.255.0: ifopen net0
set net0/ip 10.0.0.199
set net0/netmask 255.255.255.0
Check that you can ''ping'' this IP address from your DHCP server.
* Try [[:howto:pcap|capturing a packet trace]].
* If you are using Cisco networking equipment, then verify that [[http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a00800b1500.shtml|portfast]] is enabled.
* If you are using iPXE inside a virtual machine with a bridged network, then you must set the bridge spanning tree interface startup forwarding delay to zero (Normally 15 seconds). You can do this using the command brctl setfd br0 0
You may be able to configure this permanently via your system's network configuration files; e.g. by adding ''DELAY=0'' to ''/etc/sysconfig/network-scripts/ifcfg-br0'' (Redhat). On some systems the minimum delay is 2 seconds.
* If your VM bridge network doesn't have multiple routes, then you may not need STP at all, in which case set bridge_stp off
in ''/etc/network/interfaces'' (Debian).
{{ :clipart:dragon.png?134x132 |Here be dragons}}
=== Advanced troubleshooting ===
You can use a [[:howto:pcap|packet trace]] to determine which types of DHCPOFFER have been received by looking at the "seconds elapsed" field in any DHCP packets transmitted by iPXE:
^ Bit 0 | Indicates that a DHCPOFFER containing PXE options has been received |
^ Bit 1 | Indicates that a DHCPOFFER containing an IP address has been received |
For example, suppose that the packet trace shows a DHCPDISCOVER containing:
{{ :screenshots:wireshark_dhcp_secs.png?339x168 |DHCP packet showing "Seconds elapsed: 14"}}
The "seconds elapsed" value in this example is 14, which is 0b1110 in binary. Bit 1 is set, indicating that a DHCPOFFER containing an IP address has been received. Bit 0 is not set, indicating that no DHCPOFFER containing PXE options has been received.