Тайм-аут TFTP без видимой причины

Тайм-аут TFTP без видимой причины
Тайм-аут TFTP без видимой причины - anagani_saikiran @ Unsplash

Так что в основном мне нужно запустить TFTP-сервер, чтобы обновлять и размещать прошивки для нескольких устройств в моей сети. Из того, что я читал, tftpd-hpa — лучший вариант, но я пробовал старый tftpd, используя xinit. Приведенные ниже журналы взяты из 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 лет. Я думаю, что нашел 1 из 2019 года, но это не дало решения, которое сработало для меня. Любая помощь очень ценится, дайте мне знать, если я могу добавить больше материала, чтобы сделать вопрос более ясным. Спасибо!

Ладно, в конце концов, я разобрался

У меня было две проблемы, которые с самого начала выглядели как одна.

Первое - у меня не была включена опция -c, поэтому при попытке записать флэш с моего ProCurve на сервер ничего не получалось. Отредактировав файл конфигурации /etc/default/tftpd-hpa и добавив -c в аргументы, я смог записывать файлы на сервер. Код ошибки, который выдал мне коммутатор, был очень общим, и знание того, что это была ошибка конфигурации, спасло бы меня от прыжка в кроличью нору.

Вторая ошибка связана с использованием WSL для диагностики TFTP-сервера. По неизвестным мне причинам WSL не очень хорошо работает с TFPT, я предполагаю, что в основном потому, что это не родная среда Linux, но это только предположение.

Я просто решил опубликовать ответ на случай, если кто-нибудь столкнется с той же проблемой.


NevaDev, 4 февраля 2023 г., 14:06