Перейти к содержимому
Калькуляторы

Не заводится 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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

32 minutes ago, alibek said:

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

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

 

33 minutes ago, alibek said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

11 часов назад, alibek сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

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

 

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

10 минут назад, alibek сказал:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.