Linux – tftp 除錯

tftp 常見的錯誤訊息

  • PXE-E3B-TFTP Error file not found
    最近新設定一台 PXE 但使用 PXE 開機卻出現下面的錯誤訊息!

    PXE-T01: file not found
    PXE-E3B-TFTP Error file not found
    PXE-M0F exiting Intel boot agent
    

    使用 tcpdump 則是出現這樣的訊息

    IP tftp: 28 RRQ "/pxelinux.0" octet tsize 0
    

    也確定 tftp 服務是開啟的

    # netstat -an | fgrep -w 69
    udp        0      0 0.0.0.0:69              0.0.0.0:*
    

    查了半天才看出原來 /etc/xinetd.d/tftp 和 /etc/dhcpd.conf 目錄設定錯誤.

    #vi /etc/xinetd.d/tftp
    server_args = -s /tftpboot
    
    # vi /etc/dhcpd.conf
    filename “linux-install/pxelinux.0″
    

    dhcpd.conf 所指定的檔案目錄是以 tftp 為基準點,所以寫成 “filename “linux-install/pxelinux.0″;” 是指向 “/tftpboot/linux-install/pxelinux.0″;”

  • PXE-E32: TFTP Open timeout
    另外一個常見的錯誤是

    PXE-E32: TFTP Open timeout
    

    可能的問題也跟前面一樣,需要在檢查一下你的 /etc/xinetd.d/tftp 和 /etc/dhcpd.conf 目錄設定.

  • Unified Extensible Firmware Interface (UEFI)
    其他常見的錯誤訊息,可以先在本機使用 tftp 指令來除錯(如下所示).

    PXE-E07: Network device error.
    PXE-E16: No offer received.
    PXE-E18: Server response timeout.
    PXE-E99: Unexpected network error.
    

tftp 除錯

  • tftp 指令
    如果檢查了半天還是不知哪裡出現問題,可在本機使用 tftp 指令來檢視 tftp 的功能是否正常.

    # tftp 172.16.0.2
    
    tftp> help
    tftp-hpa 0.49
    Commands may be abbreviated.  Commands are:
    
    connect         connect to remote tftp
    mode            set file transfer mode
    put             send file
    get             receive file
    quit            exit tftp
    verbose         toggle verbose mode
    trace           toggle packet tracing
    literal         toggle literal mode, ignore ':' in file name
    status          show current status
    binary          set mode to octet
    ascii           set mode to netascii
    rexmt           set per-packet transmission timeout
    timeout         set total retransmission timeout
    ?               print help information
    help            print help information
    

    試試看檔案可不可接收或傳送,如果可以應該就沒有問題了.

    tftp> get pxelinux.0
    getting from 172.16.0.2:pxelinux.0 to pxelinux.0 [netascii]
    Received 27213 bytes in 0.0 seconds [31745124 bit/s]
    tftp>quit
    #
    
  • tftp -vvvv 設定
    只要在 tftp 設定多加入 -vvv (Verbose),可以在 syslog 或是 message 獲得更多的資訊,服務需要重啟.

    root@ubuntu:~# vi /etc/default/tftpd-hpa
    # /etc/default/tftpd-hpa
    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/var/lib/tftpboot"
    TFTP_ADDRESS=":69"
    TFTP_OPTIONS="--secure -vvv"
    
    root@ubuntu:~# vi /etc/xinetd.d/tftp
    service tftp
    {
      socket_type     = dgram
      protocol        = udp
      wait            = no
      user            = root
      server          = /usr/sbin/in.tftpd
      server_args     = -s /var/lib/tftpboot -vvv
      disable         = no
      per_source      = 11
      cps             = 100 2
      flags           = IPv4
    }
    
  • 2 thoughts on “Linux – tftp 除錯

    發表迴響

    你的電子郵件位址並不會被公開。 必要欄位標記為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料