Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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.

share|improve this question
add comment

2 Answers

up vote 2 down vote accepted

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

share|improve this answer
    
Thanks for the information. However, it was my understanding that TFTP only required port 69. Can you explain this to me a little more or share a link that I can read? –  John Feb 11 '11 at 18:46
    
Try wikipedia: "Data transfer is initiated on port 69, but the data transfer ports are chosen independently by the send and receiver during initialization of the connection. The ports are chosen at random according to the parameters of the networking stack, typically from the range of Ephemeral ports." en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol It has a pointer to the RFC if you want all the details. –  Mark Wagner Feb 11 '11 at 18:54
    
Thank you for the information. Would I be able to open port 69 through iptables and then rely upon the ESTABLISHED,RELATED rule in the output chain to allow the additional ports to be opened up? Would I need to load the connection tracking module "ip_conntrack_tftp" to allow this to work? –  John Feb 11 '11 at 19:11
    
Yes, you'd need to load ip_conntrack_tftp. I've never used it. –  Mark Wagner Feb 11 '11 at 19:30
add comment

Are you perhaps blocking access through /etc/hosts.deny ?

Is the server a multihomed server (2 or more network interfaces)? Is rpcbind perhaps bound to only one interface and not the correct one? Try starting rpcbind with -h IP1 -h IP2 .

Check

man rpcbind

If you also do a tcpdump on the server do you see any packets arriving there?

Perhaps wrong settings in "only_from" in /etc/xinetd.d/tftp ? "server_args = -s /tftpboot" ?

share|improve this answer
    
I have nothing listed in hosts.allow or hosts.deny right now. I also checked and there is no listing for only_from within /etc/xinetd.d/tftp. Lastly, the server_args matches yours. Thanks for all of the ideas. –  John Feb 11 '11 at 18:41
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.