Centos – Troubleshooting PXE Boot in CentOS

centoscentos5pxe-boottroubleshooting

I am working on troubleshooting a PXE server that we have setup for use. It is based upon Cent OS 5.5. We installed the following components on top of a relatively vanilla install of Cent OS:

  • tftp-server (xinetd)
  • syslinux

We do not need to run DHCP, DNS, or DNSMasq on this box since those services are handled already on our network by another set of servers. This box is to be used primarily for handling the TFTP functions needed for PXE boot, presenting the PXE boot menu, and storing some ISO's that can be used to PXE boot. The following changes have been made to the DHCP server already for the VLAN that we are testing within:

filename "pxelinux.0"; 
next-server xxx.xxx.xxx.xxx;

We have also updated the DHCP Helper address on the switches for this VLAN to point back to our PXE server. Lastly, we have allowed the IP range for the PXE booting clients as allowed through the IPTABLES firewall on the PXE server for the port of 69. Listed below is the output from a tcpdump of a client trying to connect to the PXE server. The client attempts to connect and then fails stating that TFTP-OPEN has timedout.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

11:40:33.700465 IP <IP REMOVED>.ah-esp-encap > <IP REMOVED>.tftp:  28 RRQ "/pxelinux.0" octet tsize 0
11:40:35.678042 IP <IP REMOVED>.acp-port > <IP REMOVED>.tftp:  28 RRQ "/pxelinux.0" octet tsize 0
11:40:39.687397 IP <IP REMOVED>.msync > <IP REMOVED>.tftp:  28 RRQ "/pxelinux.0" octet tsize 0
11:40:45.674107 IP <IP REMOVED>.gxs-data-port > <IP REMOVED>.tftp:  28 RRQ "/pxelinux.0" octet tsize 0
11:40:53.638246 IP <IP REMOVED>.vrtl-vmf-sa > <IP REMOVED>.tftp:  28 RRQ "/pxelinux.0" octet tsize 0
11:41:03.581136 IP <IP REMOVED>.newlixengine > <IP REMOVED>.tftp:  33 RRQ "/pxelinux.0" octet blksize 1456

1830 packets captured
1830 packets received by filter
0 packets dropped by kernel

I have verified that xinetd is running and listening on port 69 with the following command:

netstat -nulp | grep 69

I followed the tutorial listed on the CentOS wiki from here for the most part in setting up the files needed and the structure for the PXE layout. However, we are not presented with the PXE boot menu that we setup and it appears that the machine never correctly PXE boots.

I am not sure how to proceed from here and was curious if anyone was familiar with troubleshooting PXE that might be able to help me get this up and running.

Thank you in advance for your assistance.

Best Answer

tftp uses more ports than 69. You need to allow udp >1023 to and from the tftp server.