Friday, 8 January 2016

TFTP Open Timeout and Cisco Woes

The dreaded 'TFTP Open Timeout' - I encountered this while configuring PXE on a Cisco router. This message can usually occurs because either the TFTP server in inaccessible / incorrect or the boot image can't be retrieved / is incorrectly specified.

After a bit of google'ing I came across a lot of threads claiming this could be due to a UDP port overlap with services such as DNS hosted on the same server - although in my case the DNS server was hosted elsewhere - hence I could easily rule this one out.

I decided to manually connect to the tftp service with my linux box - with something like:

apt-get install tftp
tftp 1.2.3.4
> mode binary
> get boot\x64\wdsnbp.com

Since I could successfully download this manually I suspected it was likely establishing a connection OK and maybe it was something a little deeper in WDS.

So we can enable WDS client debugging with the following:

WDSUTIL /Set-Server /WDSClientLogging /Enabled:Yes
WDSUTIL /Set-Server /WDSClientLogging /LoggingLevel:info

We should now review the Event Log (Windows Logs\Applications and Services Logs\Microsoft\Windows\Deployment-Services-Diagnostics) for any warning / errors that might be of interest.

Unfortunately I did not se anything interesting here (apart from the manual attempts i'd made via the tftp client.)

So the next step was to do a packet capture using something like Wireshark, tcpdump etc.

So firstly download a tool called 'DHCPTest' http://blog.thecybershadow.net/2013/01/10/dhcp-test-client/ that will show you all of the DHCP options the DHCP server is presenting you.

Now before running 'DHCPTest' ensure that you have Wireshark setup capturing traffic on the relevent interface on a client machine. Run DHCPTest and then filter the traffic with something like:

bootp

I noticed that for some reason that the TFP Server Name (Option 66) was '\n' (which I presume was a linebreak) which I found this rather odd as it has been defined within the DHCP scope on the router (option 66 ip 1.2.3.4)


So I decided instead to change the line on the cisco router to something like:

ip dhcp pool vlanXX
option 66 ascii 1.2.3.4

Although frustratingly this time after reviewing the capture I didn't even see option 66 being advertised.

After pulling my hair out for a few hours I came across some documentation referring to the 'next-server' variable. Funnily enough it seems (at least in my experience) that adding option 66 to the DHCP scope did not work and the 'next-server' (which identifies the tftp server) should be specified instead e.g.

ip dhcp pool vlanXX
next-server 1.2.3.4
option 67  boot\x64\wdsnbp.com

Funilly enough option 67 can also be specified with the 'bootfile' variable - although simply using 'option 67' will work too unlike 'option 66'!

I restarted the PXE boot and it went through perfectly - at last!

0 comments:

Post a comment