Jump to content
Калькуляторы

Не заводится tftpd на Debian 10

Даже не думал, что с 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

 

А вот почему не отдает файл понять не могу.

Share this post


Link to post
Share on other sites

Без него пробовал, все то же самое.

Share this post


Link to post
Share on other sites

@alibek Попробуйте запросить файл по абсолютному пути, tftpd-hpa в этом отношении несколько путанно устроен.

Permissions на файловой системе в порядке?

Кроме порта 69, оно может использовать другие порты >1024 для трансфера данных, файервол должен их пропустить. На всякий случай, посмотрите сниффером.

 

Share this post


Link to post
Share on other sites

Если бы файл отсутствовал, либо к нему не было доступа, в логах был бы NAK.

Так что причина не в --secure и не в путях.

 

А вот насчет файрвола это мысль.

Тестировал я с ПК, который находится за NAT.

Если сервер отдает данные по другим портам, то может быть они не проходят через NAT.

Проверю завтра.

Share this post


Link to post
Share on other sites

tftp через nat не работает (без соответствующего alg)

Share this post


Link to post
Share on other sites

Да, причина в NAT.

На хостах, которые без NAT (маршрутизируются напрямую) tftp-сервер работает.

 

Я уже и забыл про особенности этих протоколов.

На ftp хоть пассивный режим есть, а с tftp похоже ничего не сделать.

В офисной сети в качестве роутера используется микротик, а там alg кривые и работают плохо.

Share this post


Link to post
Share on other sites

Можно жёстко задать порты для данных --port-range и в явном виде их разрешить на файерволе.

 

32 minutes ago, alibek said:

На ftp хоть пассивный режим есть, а с tftp похоже ничего не сделать. 

nf_conntrack_tftp и nf_nat_tftp же... Но не на Микротике, да.

 

33 minutes ago, alibek said:

В офисной сети в качестве роутера используется микротик, а там alg кривые и работают плохо.

Можно сам Mikrotik в качестве TFTP сервера подрядить.

Share this post


Link to post
Share on other sites
11 часов назад, alibek сказал:

В офисной сети в качестве роутера используется микротик, а там alg кривые и работают плохо.

Так ALG соответствующий вообще включен в Ip - Firewall - Service Ports? И попробуйте задать в tftpd разумный port-range, у меня работает через NAT с 10000-10100

Share this post


Link to post
Share on other sites

ALG в микротике не работает нормально.

Диапазон я задавал как 16900-16999.

Судя по логам (ставил passtrough-правило с логгированием) ответный пакет от TFTP приходил, но не сопоставлялся с первоначальным запросом (чем должен заниматься ALG) и блокировался.

 

Если на микротике сделать dst-nat на диапазон 16900-16999 с перенаправлением на мой офисный ПК, то это работает.

Но привязано к конкретному ПК, на другом соответственно работать не будет.

 

13 часов назад, lugoblin сказал:

Можно сам Mikrotik в качестве TFTP сервера подрядить.

Если бы он умел работать как прокси или релей, то да.

На TFTP лежат прошивки на разное оборудование, там несколько сотен мегабайт.

Придется все это дублировать.

Share this post


Link to post
Share on other sites
10 минут назад, alibek сказал:

ALG в микротике не работает нормально.

Эммм... Вообщем был неправ.

Разумеется я на ПК прописал в файрволе разрешающее правило на 16900:16999/udp.

Вот только я его прописал на dst-port, а не на src-port.

Исправил, теперь работает, ALG все же в микротике работает правильно.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this