Так что в основном мне нужно запустить 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, но это только предположение.
Я просто решил опубликовать ответ на случай, если кто-нибудь столкнется с той же проблемой.