alibek Опубликовано 15 июля, 2021 Даже не думал, что с tftpd могут быть какие-то проблемы, он ведь примитивный донельзя. Но вот оказалось, что могут. Debian 10.10, ядро 4.19.0-17-amd64 tftp-hpa 5.2, with remap, with tcpwrappers Параметры запуска: in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure --create --permissive /srv/tftp Установлен, запущен, работает. На файрволе udp/69 разрешен. В каталоге /src/tftp лежит файл mes3300-4016-R2.ros. К файлу есть доступ: # sudo -u tftp file /srv/tftp/mes3300-4016-R2.ros /srv/tftp/mes3300-4016-R2.ros: data Пробую загрузить файл (кстати, с линукса, и даже клиент тоже tftp-hpa 5.2) — и ничего, таймаут: $ tftp -v 10.1.128.14 -m binary -c get mes3300-4016-R2.ros mode set to octet Connected to 10.1.128.14 (10.1.128.14), port 69 getting from 10.1.128.14:mes3300-4016-R2.ros to mes3300-4016-R2.ros [octet] Transfer timed out. При этом сетевые пакеты доходят (смотрел через tcpdump), более того, сервер получает запросы, судя по логу: июл 15 10:35:58 srv-delta systemd[1]: Starting LSB: HPA's tftp server... июл 15 10:35:58 srv-delta tftpd-hpa[20389]: Starting HPA's tftpd: in.tftpd. июл 15 10:35:58 srv-delta systemd[1]: Started LSB: HPA's tftp server. июл 15 10:36:17 srv-delta in.tftpd[20451]: RRQ from 10.1.144.3 filename mes3300-4016-R2.ros июл 15 10:36:22 srv-delta in.tftpd[20459]: RRQ from 10.1.144.3 filename mes3300-4016-R2.ros июл 15 10:36:27 srv-delta in.tftpd[20468]: RRQ from 10.1.144.3 filename mes3300-4016-R2.ros июл 15 10:36:32 srv-delta in.tftpd[20478]: RRQ from 10.1.144.3 filename mes3300-4016-R2.ros июл 15 10:36:37 srv-delta in.tftpd[20481]: RRQ from 10.1.144.3 filename mes3300-4016-R2.ros А вот почему не отдает файл понять не могу. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Crazy_Max Опубликовано 15 июля, 2021 --secure ключик уберите Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 15 июля, 2021 Без него пробовал, все то же самое. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
lugoblin Опубликовано 15 июля, 2021 @alibek Попробуйте запросить файл по абсолютному пути, tftpd-hpa в этом отношении несколько путанно устроен. Permissions на файловой системе в порядке? Кроме порта 69, оно может использовать другие порты >1024 для трансфера данных, файервол должен их пропустить. На всякий случай, посмотрите сниффером. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 15 июля, 2021 Если бы файл отсутствовал, либо к нему не было доступа, в логах был бы NAK. Так что причина не в --secure и не в путях. А вот насчет файрвола это мысль. Тестировал я с ПК, который находится за NAT. Если сервер отдает данные по другим портам, то может быть они не проходят через NAT. Проверю завтра. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
boco Опубликовано 15 июля, 2021 tftp через nat не работает (без соответствующего alg) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 15 июля, 2021 Да, причина в NAT. На хостах, которые без NAT (маршрутизируются напрямую) tftp-сервер работает. Я уже и забыл про особенности этих протоколов. На ftp хоть пассивный режим есть, а с tftp похоже ничего не сделать. В офисной сети в качестве роутера используется микротик, а там alg кривые и работают плохо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
lugoblin Опубликовано 15 июля, 2021 Можно жёстко задать порты для данных --port-range и в явном виде их разрешить на файерволе. 32 minutes ago, alibek said: На ftp хоть пассивный режим есть, а с tftp похоже ничего не сделать. nf_conntrack_tftp и nf_nat_tftp же... Но не на Микротике, да. 33 minutes ago, alibek said: В офисной сети в качестве роутера используется микротик, а там alg кривые и работают плохо. Можно сам Mikrotik в качестве TFTP сервера подрядить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jffulcrum Опубликовано 16 июля, 2021 11 часов назад, alibek сказал: В офисной сети в качестве роутера используется микротик, а там alg кривые и работают плохо. Так ALG соответствующий вообще включен в Ip - Firewall - Service Ports? И попробуйте задать в tftpd разумный port-range, у меня работает через NAT с 10000-10100 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 16 июля, 2021 ALG в микротике не работает нормально. Диапазон я задавал как 16900-16999. Судя по логам (ставил passtrough-правило с логгированием) ответный пакет от TFTP приходил, но не сопоставлялся с первоначальным запросом (чем должен заниматься ALG) и блокировался. Если на микротике сделать dst-nat на диапазон 16900-16999 с перенаправлением на мой офисный ПК, то это работает. Но привязано к конкретному ПК, на другом соответственно работать не будет. 13 часов назад, lugoblin сказал: Можно сам Mikrotik в качестве TFTP сервера подрядить. Если бы он умел работать как прокси или релей, то да. На TFTP лежат прошивки на разное оборудование, там несколько сотен мегабайт. Придется все это дублировать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 16 июля, 2021 10 минут назад, alibek сказал: ALG в микротике не работает нормально. Эммм... Вообщем был неправ. Разумеется я на ПК прописал в файрволе разрешающее правило на 16900:16999/udp. Вот только я его прописал на dst-port, а не на src-port. Исправил, теперь работает, ALG все же в микротике работает правильно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...