HPlogo Installing and Administering Internet Services: HP 9000 Networking > Chapter 5 Configuring TFTP and BOOTP Servers

Troubleshooting BOOTP and TFTP Servers

» 

Technical documentation

Complete book in PDF

 » Table of Contents

 » Index

This section outlines techniques that can help you diagnose and correct common problems with the BOOTP and TFTP servers.

Helpful Configuration Changes

To make troubleshooting easier, configure your system as follows:

  • Ensure syslogd is configured to log daemon information messages to the file /var/adm/syslog/syslog.log. To check this configuration, make sure /etc/syslog.conf includes one of the following lines:

    *.info /var/adm/syslog/syslog.log

    or

    daemon.info /var/adm/syslog/syslog.log

  • Configure bootpd to start with debug logging set to level 2. This logging level causes bootpd to log useful debugging messages about how it is replying to BOOTP clients. Follow these steps to set the debug log level:

    1. Add the -d 2 option to the bootpd line in /etc/inetd.conf:

      bootps dgram udp wait root /usr/lbin/bootpd bootpd -d 2

    2. Reconfigure inetd with the following command:

      /usr/sbin/inetd -c

    3. Kill any bootpd daemon that is still running on your system. For example,

      $ /usr/bin/ps -e | /usr/bin/grep bootpd
      429 ? 0:00 bootpd
      $ /usr/bin/kill 429

Common bootpd Problems

If you experience a problem with bootpd, read through this section for possible remedies. The problems listed in this section are ordered by symptom.

To view the information that bootpd places in the bootreply, enable a broadcast bootreply by adding the ba tap to the client's /etc/bootptab entry. Use the bootpquery command to emulate the client's bootrequest:

bootpquery client_link_address -s servername

bootpquery prints the reply it receives from the server, which allows you to examine the information supplied to the client. Remove the ba tag from the configuration entry once you've verified the correctness of the bootreply.

Symptom:

The server's system log file /var/adm/syslog/syslog.log does not contain any log messages from /usr/lbin/bootpd showing that the server started. A ps -ef listing does not show a running /usr/lbin/bootpd.

Cause:

The server may not be started or it may not be receiving the client's bootrequest.

Action:

  • Make sure that /etc/inetd.conf is configured correctly as documented earlier in this chapter.

  • Ensure that you have reconfigured inetd with the command inetd -c.

  • Check inetd's logging in /var/adm/syslog/syslog.log to ensure inetd is configured to start bootpd.

  • Verify that the server will start by using the bootpquery command.

  • Check whether the client is on the same network as the BOOTP server. If the client is not on the same network, ensure that intervening BOOTP servers are configured to relay bootrequest broadcasts.

Symptom:

The system log /var/adm/syslog/syslog.log contains one of the following messages:

hardware address not found: hardware_address
IP address not found: ip_address

Cause:

bootpd does not have an entry in /etc/bootptab for this client's hardware address or IP address.

Action:

  • Check the system log for any indication of syntax errors for the client's configuration entry. Correct the entry in /etc/bootptab and reboot the BOOTP client.

  • Ensure that the hardware address you specified for the ha tag matches the hardware address that /usr/lbin/bootpd said it could not find. Correct the tag and reboot the BOOTP client.

  • Ensure the hardware type tag ht has the correct value for the client. For example, if you have specified ether but the client is reporting ieee in its bootrequest, bootpd will reject the request. Correct the tag and reboot the BOOTP client.

Symptom:

The system log /var/adm/syslog/syslog.log contains a message that looks like this:

requested file not found: filename

Cause:

The client specified filename as the boot file in its bootrequest, but bootpd could not find the file in the tftp directory.

Action:

  • Make sure that you have configured tftpd with the entry in /etc/passwd for the user tftp.

  • Ensure that the requested file is present in the tftp directory, which is usually /home/tftpdir or in the directory specified with the tftpd command. If it is not, place the file in the directory and reboot the BOOTP client. If the requested file exists in the directory, be sure it is readable by the user tftp. (See “Common tftpd Problems”.)

Symptom:

The system log /var/adm/syslog/syslog.log contains the following message:

cannot route reply to client's_IP_address

Cause:

The IP address you have specified for the client is one which the server's system cannot reach directly.

Action:

  • Ensure you have specified the correct IP address for the client in /etc/bootptab. Correct the entry and reboot the BOOTP client.

  • If the server is to reply directly to the client, it must reside on the same network or subnet as the client. If the client resides on another network, ensure that intervening servers are configured to relay the bootrequests.

  • Ensure the IP address you have chosen for the client is a valid IP address for the server's network.

Symptom:

The system log contains one or more of the following error messages:

duplicate hardware address: link_address
bad host name: hostname
syntax error in entry for host hostname
unknown symbol in entry for host hostname
bad IP address for host hostname
bad subnet mask for host hostname
bad time offset for host hostname
bad vendor magic cookie for host hostname
bad reply broadcast address for host hostname

Cause:

Any of these error messages means there are errors in the configuration file entry for the client.

Action:

See “Error Logging” for an explanation of the error message. Correct the appropriate field for the entry in /etc/bootptab and reboot the BOOTP client. Use bootpquery to send a bootrequest to /usr/lbin/bootpd for the client whose entry you have corrected. Check the system log /var/adm/syslog/syslog.log to see if the server replies. At debug level 2 (see “Helpful Configuration Changes”), bootpd logs the following sequence of messages when it responds to a bootrequest:

request from hardware address link_address
found ip_address hostname
vendor magic field is magic_cookie
sending RFC1048-style reply

Symptom:

The client does not receive configuration information for the tags that pertain to RFC 1048 vendor information:

bs = boot_file_size
ds = domain_nameserver_addresses
gw = gateway_addresses
hn = hostname
lg = log_server_addresses
sm = subnet_mask
to = time_offset
Tnnn = generic_information

Cause:

Too many RFC-1048 options have been specified for the client's configuration entry in /etc/bootptab. The BOOTP protocol allows only 64 bytes of "vendor extension" information. When such extended information is included in the bootreply, bootpd must also add a 4-byte vendor magic cookie to the bootreply, a 1-byte tag indicating the end of the vendor information, and a 1-byte or 2-byte tag for each field (depending on the format of the field) along with the value of the tag itself. The total size of the extended information you list for a client must not exceed 64 bytes.

Action:

Ensure the configuration contains only the necessary information to boot the client. Check the documentation for the BOOTP client to find out which tags are necessary for configuration and which tags are supported.

For example, if the client supports only one nameserver address, there is no need to list three nameserver addresses with the ds tag. If the client does not support configuring its host name with the hn tag, there is no reason to include it.

Common tftpd Problems

If you experience a problem with tftpd, read through this section for possible remedies. The problems listed in this section are ordered by symptom.

Symptom:

File transfer "timed out." inetd connection logging (enabled with the inetd -l command) does not show any connection to the TFTP server.

Cause:

The TFTP server, tftpd, did not start.

Action:

  • Ensure /etc/inetd.conf is configured correctly as documented earlier in this chapter.

  • Ensure you have reconfigured inetd with the command inetd -c.

  • As documented in “Configuring the BOOTP Server”, verify that the server is working by using tftp to transfer a small file. It might be helpful to try the transfer from another node on your network rather than from the server node itself.

If the server still fails to start when the client attempts the file transfer, then you probably have a connectivity problem. Refer to Installing and Administering LAN/9000 Software or the BOOTP client manual (for example, HP 700/X documentation).

Symptom:

File transfer "timed out." The system log contains one of the following messages:

User tftp unknown
system_call: error

Cause:

The TFTP server, tftpd, exited prematurely.

Action:

If you suspect that there is a problem on the network, you can increase the per-packet retransmission and the total retransmission timeouts used by tftpd. These timeouts are specified (in seconds) with the -R or -T options. See the tftpd man page for more information.

The User tftp unknown message can also mean that the password database entry for the user tftp is either missing or incorrect. Verify that the entry exists and is correct, then try the transfer again.

If tftpd experiences a system call failure that causes it to exit, it will log the name of the system call and the reason for the system call failure. For more information about the reason why it failed, refer to the system call in the HP-UX Reference.

Symptom:

File transfer fails with File Not Found, No Such File or Directory, or TFTP Error Code 1 message.

Cause:

The file the client is attempting to read from or write to the server does not exist within the home directory of the user tftp or in the path specified with the tftpd command.

Action:

Ensure the full path name that the client is requesting from the server exists within the tftp directory or in a path specified with the tftpd command. For example, if the tftp directory is /home/tftpdir and the TFTP client is requesting the file /usr/lib/X11/700X/C2300A, the file must exist as /home/tftpdir/usr/lib/X11/700X/C2300A.

If no entry exists for the user tftp in the /etc/passwd file, you must specify at least one file or directory with the tftpd command. Make sure that you specify the full path name when attempting to get a file from a directory specified with the tftpd command.

Symptom:

File transfer fails with Access Violation, Permission Denied, or TFTP Error Code 2 message.

Cause:

tftpd does not have permission to read the file.

Action:

If the transfer is a get operation where the client is attempting to read the file from the server, then the server does not have read permissions on the file that it is trying to send. Ensure that the file the client is reading has read permissions for the user tftp. For example, if the client was attempting to read the file named xterm, xterm should be mode 0400 and owned by the user tftp:

$ ll /home/tftpdir/xterm
-r-------- 1 tftp guest 438 May 10 1989 xterm

If the transfer is a put operation (which is not something a BOOTP client will be doing as part of the BOOTP protocol), then this message means that the file did not have sufficient write permissions for the server to write to the file. If the server is to receive a file, it must already exist and be writeable by the user tftp. For example, if a tftp client is sending the file named fontlist, the file must be mode 0600 and owned by tftp:

$ ll /home/tftpdir/fonts
-rw------- 1 tftp guest 0 May 10 1989 fonts

Error Logging

This section explains the error messages that bootpd logs through syslogd. The three levels of error logging documented in this section are as follows:

The bootpd debug level must be set for these messages to be logged. Set the debug level using the -d option to bootpd.

Information Log Level

The following messages are logged at the syslogd information log level.

  • exiting after time minutes of inactivity

    If bootpd hasn't received a bootrequest within time minutes (the timeout set with the -t option), it issues this message and exits.

  • reading configuration_file

    reading new configuration_file

    bootpd is reading or rereading configuration information from the indicated configuration_file.

  • read number entries from configuration_file

    Shows that bootpd successfully read number configuration entries, including table continuation entries, from the indicated configuration_file.

  • request from hardware address hardware_address

    bootpd received a bootrequest from a client with the indicated hardware_address. This message is logged at debug level 1.

  • request from IP addr ip_address

    bootpd received a bootrequest from a client with the indicated ip_address. This message is logged at debug level 1.

  • found ip_address hostname

    bootpd located information for the specified client in its configuration database. This message is logged at debug level 1.

  • broadcasting reply on ip_address

    Shows the broadcast address that bootpd uses to reply to a client whose configuration entry has the ba flag. This message is logged at debug level 2.

  • vendor magic field is magic_cookie

    sending CMU-style reply

    sending RFC1048-style reply

    Shows which vendor magic cookie was sent in the client's bootrequest and the corresponding vendor magic cookie used in the bootreply. These messages are logged at debug level 2.

  • bootptab mtime is time

    bootpd uses the indicated modification time to determine if the configuration file has been modified and should be reread. This message is logged at debug level 3.

Notice Log Level

There may be cases where bootpd receives a bootrequest but does not send a bootreply. The reason is given in one of the following messages and logged at the notice log level:

  • hardware address not found: hardware_address

    bootpd could not find a configuration entry for the client with the indicated hardware_address. If bootpd should know about the client that is booting, ensure that you have correctly specified the client's hardware address in the configuration file.

  • IP address not found: ip_address

    bootpd could not find a configuration entry for the client with the indicated ip_address. If bootpd should know about the client that is booting, ensure that you have correctly specified the client's IP address in the appropriate configuration file entry.

  • requested file not found: filename

    The client requested the boot file filename, but bootpd could not locate it. Ensure that the boot file the client is requesting is located in the tftp directory on the server system.

  • cannot route reply to ip_address

    The IP address to which bootpd must send the bootreply is for a client or gateway that is not on a directly connected network. Ensure that you have specified a valid IP address for the client or gateway.

Error Log Level

The following errors indicate problems with the configuration file. They are logged at the error log level. If you see any of these messages, you should correct the indicated configuration entry in /etc/bootptab and try to reboot the BOOTP client:

  • bad bootp server address for host hostname

    A value specified for the bp tag is invalid. Values can be individual IP addresses separated by a space, and/or one or more network broadcast addresses.

  • bad hardware mask value for host hostname

    The value for the hardware address mask tag hm was incorrectly formatted in the configuration file entry for hostname. Correct the configuration entry and try to reboot the BOOTP client. The subnet mask must be specified in hex.

  • bad hardware type for host hostname

    The value specified for the ht tag is an unsupported hardware type. See the bootpd man page for a list of supported hardware types.

  • bad hostname: hostname

    The name given in the hostname field was not a valid host name. Correct the host name and try to reboot the BOOTP client. A valid host name consists a letter followed by any number of letters, digits, periods, or hyphens.

  • bad IP address for host hostname

    One of the IP addresses listed for the ip tag or any tag requiring a list of IP addresses is incorrectly formatted in the configuration file entry for hostname.

    Correct the configuration entry and try to reboot the BOOTP client. IP addresses must be specified in standard Internet "dot" notation. They can use decimal, octal, or hexadecimal numbers. (Octal numbers begin with 0, and hexadecimal numbers begin with 0x or 0X.) If more than one IP address is listed, separate the addresses with white space.

  • bad reply broadcast address for host hostname

    The address given for the ba tag was invalid or incorrectly formatted. Correct the configuration entry and try to reboot the BOOTP client. Type man 1M bootpd for more information.

  • bad subnet mask for host hostname

    The value for the subnet mask tag sm was incorrectly formatted in the configuration file entry for hostname. Correct the configuration entry and try to reboot the BOOTP client. The subnet mask must be specified as a single IP address.

  • bad time offset for host hostname

    The value for the to tag was not a valid number. Correct the configuration entry and try to reboot the BOOTP client. The to value may be either a signed decimal integer or the keyword auto, which uses the server's time zone offset.

  • bad vendor magic cookie for host hostname

    The vendor magic cookie, specified with the vm tag, was incorrectly formatted. Correct the configuration entry and try to reboot the BOOTP client. The vm tag can be one of the following values: auto, rfc1048, or cmu.

  • can't find tc=label

    bootpd could not find a table continuation configuration entry with the host field label. Correct the configuration entry and try to reboot the BOOTP client. Type man 1M bootpd for more information.'

  • duplicate hardware address: hardware_address

    More than one configuration entry was specified for the client with the indicated hardware_address. Ensure that only one configuration entry exists for the hardware address in /etc/bootptab. Then, try to reboot the BOOTP client.

  • missing ha values for host hostname

    The hardware address must be specified in hex and must be preceded by the ht tag. If the hm tag is specified, the ha and ht tags must also be specified.

  • syntax error in entry for host hostname

    The configuration entry for the indicated host hostname is incorrectly formatted. Correct the configuration entry and try to reboot the BOOTP client. Type man 1M bootpd for the correct syntax of the BOOTP configuration file.

  • unknown symbol in entry for host hostname

    The configuration entry contains an unknown tag or invalid character. Correct the configuration entry and try to reboot the BOOTP client. Type man 1M bootpd for the correct syntax of the BOOTP configuration file.

© 2000 Hewlett-Packard Development Company, L.P.