没有明显原因的 TFTP 超时

没有明显原因的 TFTP 超时

因此,基本上我需要运行 TFTP 服务器来更新和托管网络中一些设备的固件。据我所知,tftpd-hpa 是最好的选择,但我尝试过使用 xinit 的旧版 tftpd。下面的日志来自 tftpd-hpa,尽管我在旧版本上也遇到了同样的问题。基本上我可以使用客户端连接到 tftp 服务器,但每当我尝试写入或读取文件时,它都会超时,如下所示

tftp> get test.txt                                                                                                      
sent RRQ <file=test.txt, mode=netascii>                                                                                 
sent RRQ <file=test.txt, mode=netascii>                                                                                 
sent RRQ <file=test.txt, mode=netascii>                                                                                 
sent RRQ <file=test.txt, mode=netascii>                                                                                 
sent RRQ <file=test.txt, mode=netascii>                                                                                 
Transfer timed out.                  
                                                                                                                                                                                                           
tftp> put test.txt                                                                                                      
sent WRQ <file=test.txt, mode=netascii>                                                                                 
sent WRQ <file=test.txt, mode=netascii>                                                                                 
sent WRQ <file=test.txt, mode=netascii>                                                                                 
sent WRQ <file=test.txt, mode=netascii>                                                                                 
sent WRQ <file=test.txt, mode=netascii>                                                                                 
Transfer timed out.  

为了确认我的服务器是否收到请求,我在主机上运行了 tshark,并且能够确认我正在接收来自客户端的命令,如下所示。

serveradmin@delln0d31:/srv/tftp$ sudo tshark -f udp port 69                                                                                                                                  Running as user "root" and group "root". This could be dangerous.                                                                                                                            tshark: A default capture filter was specified both with "-f" and with additional command-line arguments.                                                                                    serveradmin@delln0d31:/srv/tftp$ sudo tshark -f "udp port 69"                                                                                                                                Running as user "root" and group "root". This could be dangerous.                                                                                                                            Capturing on 'eno1'                                                                                                                                                                              1 0.000000000 192.168.1.200 → 192.168.1.125 TFTP 62 Read Request, File: test.txt, Transfer type: netascii                                                                                    
2 5.000991153 192.168.1.200 → 192.168.1.125 TFTP 62 Read Request, File: test.txt, Transfer type: netascii                                                                                    
3 10.001536226 192.168.1.200 → 192.168.1.125 TFTP 62 Read Request, File: test.txt, Transfer type: netascii                                                                                   
4 15.002140629 192.168.1.200 → 192.168.1.125 TFTP 62 Read Request, File: test.txt, Transfer type: netascii                                                                                   
5 20.002733911 192.168.1.200 → 192.168.1.125 TFTP 62 Read Request, File: test.txt, Transfer type: netascii                                                                                   
6 1978.710412073 192.168.1.200 → 192.168.1.125 TFTP 62 Write Request, File: test.txt, Transfer type: netascii                                                                               
7 1983.711206606 192.168.1.200 → 192.168.1.125 TFTP 62 Write Request, File: test.txt, Transfer type: netascii                                                                                
8 1988.711957568 192.168.1.200 → 192.168.1.125 TFTP 62 Write Request, File: test.txt, Transfer type: netascii                                                                                
9 1993.712441259 192.168.1.200 → 192.168.1.125 TFTP 62 Write Request, File: test.txt, Transfer type: netascii                                                                               
10 1998.713832432 192.168.1.200 → 192.168.1.125 TFTP 62 Write Request, File: test.txt, Transfer type: netascii

我对 tftp 协议不是很熟悉,所以也许有经验的人能从中找出一些问题。据我所知,没有启用防火墙。我听说过 iptables 有问题,但我无法真正证实这一点。

我最初让 tftpd-hpa 创建目录,并使用它授予的权限,但后来尝试只授予它以下权限

drwxrwxrwx  2 nobody nogroup 4096 Oct  5 00:07 tftp 

即使权限完全开放,它仍然无法读取。

我在 Ubuntu 上运行它仅供参考。

Linux delln0d31 5.4.0-88-generic #99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

编辑:iptables-save 的输出

# Generated by iptables-save v1.8.4 on Wed Oct  6 17:33:03 2021                                                        
*filter                                                                                                                 
:INPUT ACCEPT [144472:14726132]                                                                                         
:FORWARD ACCEPT [0:0]                                                                                                   
:OUTPUT ACCEPT [12269:3225300]                                                                                          
COMMIT                                                                                                                  
# Completed on Wed Oct  6 17:33:03 2021 

我遇到的另一个问题是查找相关信息。大多数文章似乎至少有 10 年的历史了。我想我找到了 2019 年的一篇,但它没有提供对我有用的解决方案。任何帮助都非常感谢,如果我可以添加更多内容以使问题更清楚,请告诉我。谢谢!

答案1

好吧,我最终还是搞明白了。我遇到了两个看似相同的问题。

首先,我没有-c启用该选项,因此当我尝试将闪存从 ProCurve 写入服务器时,它无法工作。通过编辑/etc/default/tftpd-hpa配置文件并添加-c参数,我现在能够将文件写入服务器。交换机给我的错误代码非常通用,如果知道这是一个配置错误,我就不会掉进兔子洞。

第二个错误源于我尝试WSL诊断 TFTP 服务器。出于我所不知道的原因,WSL 与 TFPT 无法很好地配合使用,我猜主要是因为它不是原生 Linux 环境,但这只是猜测。

我只是想提出答案,以防有人遇到同样的问题。

相关内容