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...