Страница 1 из 1

TFTP сервер

Добавлено: 12 мар 2021, 05:52
Olej
Для служебной необходимости, по делу, понадобилось установить локальный TFTP сервер - для работы с embedded устройствами: доработки софта + сборки всего этого в имиджи, прошивки + заливки в флеши этих девайсов.
("локальный" TFTP в том смысле, что в собственной локальной сети, LAN ... в разветвлённой корпоративной VPN сети фирмы для этого есть удалённые TFTP для размещения продакшен вариантов, а этот локальный - для совершенно черновых. драфт набросков)

Собственно, вопросов 2:

1). какой выбрать (под Linux их много) проект и чем они вообще отличаются?

2). установить и настроить

Или даже 3 ;-) :

3). собрать сюда, под одну тему, полезные публикации, ссылки, ... чтобы завтра не потерять.

Поехали...

Re: TFTP сервер

Добавлено: 12 мар 2021, 06:28
Olej
Olej писал(а):
12 мар 2021, 05:52
3). собрать сюда, под одну тему, полезные публикации, ссылки, ... чтобы завтра не потерять.

Поехали...
Установка TFTP сервера (tftpd) в Ubuntu Linux
Очень подробно и обстоятельно. Но :-? :
Опубликовано: 20.11.2010
Для Linux доступно несколько TFTP демонов (серверов): tftpd, atftpd, tftpd-hpa. Вы можете использовать любой из них. Я расскажу, как устанавливать tftpd.
Вот это достаточно существенно:
Я буду использовать службу openbsd-inetd. Есть еще служба xinetd, вы можете ее использовать, но настраивается она несколько иначе.
Установка TFTP сервера в Debian или Ubuntu
13.06.2018
29.01.2021
Одним из самых популярных вариантов TFTP сервера на Linux является tftp-hpa - улучшенная версия обычного tftpd, его то мы и настроим и установим ниже. Он очень прост в использовании и его установка с настройкой может занять всего несколько минут.
Установка сервера TFTP на Ubuntu Linux
Отправьте файл на сервер TFTP с помощью клиентского программного обеспечения под названием ATFTP.

Код: Выделить всё

atftp  192.168.100.10
tftp> put test.txt
tftp> quit

Re: TFTP сервер

Добавлено: 12 мар 2021, 06:43
Olej
Olej писал(а):
12 мар 2021, 05:52
1). какой выбрать (под Linux их много) проект и чем они вообще отличаются?
Их, собственно, 3:

Код: Выделить всё

olej@nvme:~/2021/Zodiac_Systems$ aptitude search tftp
p   atftp                                                                - улучшенный TFTP-клиент                                                         
p   atftpd                                                               - расширенный TFTP-сервер                                                        
p   erlang-tftp                                                          - Erlang/OTP TFTP client and server                                              
v   erlang-tftp:any                                                      -                                                                                
p   libnet-tftp-perl                                                     - Perl module for accessing TFTP servers                                         
p   libnet-tftpd-perl                                                    - Perl extension for Trivial File Transfer Protocol Server                       
p   puppet-module-puppetlabs-tftp                                        - Puppet module for managing tftp-hpa                                            
p   python3-txtftp                                                       - Twisted-based TFTP implementation                                              
p   tftp                                                                 - Trivial file transfer protocol client                                          
p   tftp-hpa                                                             - Клиент tftp-HPA                                                                
p   tftp-hpa-dbg                                                         - HPA's tftp (debug)                                                             
v   tftp-server                                                          -                                                                                
p   tftpd                                                                - сервер простого протокола передачи файлов (TFTP)                               
p   tftpd-hpa                                                            - HPA's tftp server                                                              
p   uec-provisioning-tftpd                                               - the UEC Provisioning TFTP server                                               
atftp + tftp + tftp-hpa
Лучшие TFTP-серверы для Windows, Linux и Mac в 2021 году
Популярный сервер TFTP в мире Linux называется Advanced TFTP server. Обычно он поставляется в пакете с именем aftpd. Это отличный многопоточный сервер, который поддерживает многоадресную рассылку. Таким образом, это отличный вариант для нестандартных развертываний.
tftpd-hpa - еще один популярный TFTP-сервер для Linux. Благодаря такому простому протоколу, как TFTP, каждый сервер имеет практически одинаковый набор функций.
...
Обычно вы используете tftpd-hpa всякий раз, когда вы не можете заставить atftpd работать надежно. Его легко установить с помощью только одной команды apt-get.
...
... tftpd-hpa настраивается через файл конфигурации в /etc/default/tftpd-hpa. Вот что вы обычно найдете в этом файле:

Код: Выделить всё

TFTP_USERNAME="tftp" 
TFTP_DIRECTORY="/var/lib/tftpboot" 
TFTP_ADDRESS=":69" 
TFTP_OPTIONS="--secure"
Любые из этих настроек можно изменить по своему вкусу, отредактировав файл. После изменения сервер должен быть перезапущен с помощью этой команды:

Код: Выделить всё

sudo service tftpd-hpa restart

Re: TFTP сервер

Добавлено: 13 мар 2021, 23:18
Olej
Как оказалось, в RTP репозитории Fedora всего гораздо меньше:

Код: Выделить всё

[olej@xenix ~]$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 32 (Thirty Two)
Release:	32
Codename:	ThirtyTwo

Код: Выделить всё

[olej@xenix ~]$ dnf list tftp*
Последняя проверка окончания срока действия метаданных: 0:00:50 назад, Сб 13 мар 2021 19:55:57.
Имеющиеся пакеты
tftp.x86_64                                                               5.2-30.fc32                                                        updates
tftp-server.x86_64                                                        5.2-30.fc32                                                        updates
Но мне нужна работа и в Fedora тоже!

Re: TFTP сервер

Добавлено: 13 мар 2021, 23:21
Olej
Olej писал(а):
13 мар 2021, 23:18
Но мне нужна работа и в Fedora тоже!

Код: Выделить всё

[olej@xenix ~]$ sudo dnf install tftp tftp-server
[sudo] пароль для olej: 
Последняя проверка окончания срока действия метаданных: 0:27:08 назад, Сб 13 мар 2021 19:31:40.
Зависимости разрешены.
====================================================================================================================================================
 Пакет                                Архитектура                     Версия                                 Репозиторий                      Размер
====================================================================================================================================================
Установка:
 tftp                                 x86_64                          5.2-30.fc32                            updates                           33 k
 tftp-server                          x86_64                          5.2-30.fc32                            updates                           41 k

Результат транзакции
====================================================================================================================================================
Установка  2 Пакета

Объем загрузки: 74 k
Объем изменений: 123 k
Продолжить? [д/Н]: y
Загрузка пакетов:
(1/2): tftp-server-5.2-30.fc32.x86_64.rpm                                                                           340 kB/s |  41 kB     00:00    
(2/2): tftp-5.2-30.fc32.x86_64.rpm                                                                                  270 kB/s |  33 kB     00:00    
----------------------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                                        124 kB/s |  74 kB     00:00     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Подготовка       :                                                                                                                            1/1 
  Установка        : tftp-server-5.2-30.fc32.x86_64                                                                                             1/2 
  Запуск скриптлета: tftp-server-5.2-30.fc32.x86_64                                                                                             1/2 
  Установка        : tftp-5.2-30.fc32.x86_64                                                                                                    2/2 
  Запуск скриптлета: tftp-5.2-30.fc32.x86_64                                                                                                    2/2 
  Проверка         : tftp-5.2-30.fc32.x86_64                                                                                                    1/2 
  Проверка         : tftp-server-5.2-30.fc32.x86_64                                                                                             2/2 

Установлен:
  tftp-5.2-30.fc32.x86_64                                               tftp-server-5.2-30.fc32.x86_64                                              

Выполнено!
После установки:

Код: Выделить всё

[olej@xenix ~]$ systemctl status tftp
● tftp.service - Tftp Server
     Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)
     Active: inactive (dead)
TriggeredBy: ● tftp.socket
       Docs: man:in.tftpd
Но мне это не годится!

Re: TFTP сервер

Добавлено: 13 мар 2021, 23:23
Olej
Olej писал(а):
13 мар 2021, 23:21
Но мне это не годится!

Код: Выделить всё

[olej@xenix ~]$ sudo systemctl start tftp

Код: Выделить всё

[olej@xenix ~]$ systemctl status tftp
● tftp.service - Tftp Server
     Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)
     Active: active (running) since Sat 2021-03-13 20:00:36 EET; 2s ago
TriggeredBy: ● tftp.socket
       Docs: man:in.tftpd
   Main PID: 25062 (in.tftpd)
      Tasks: 1 (limit: 9497)
     Memory: 168.0K
     CGroup: /system.slice/tftp.service
             └─25062 /usr/sbin/in.tftpd -s /var/lib/tftpboot

мар 13 20:00:36 xenix.localdomain systemd[1]: Started Tftp Server.

Код: Выделить всё

[olej@xenix ~]$ sudo systemctl enable tftp
Created symlink /etc/systemd/system/sockets.target.wants/tftp.socket → /usr/lib/systemd/system/tftp.socket.

Код: Выделить всё

[olej@xenix ~]$ which tftp
/usr/bin/tftp
Все инструменты на месте ... но это вовсе не значит, что всё настроено для работы.

Re: TFTP сервер

Добавлено: 13 мар 2021, 23:45
Olej
Olej писал(а):
13 мар 2021, 23:23
но это вовсе не значит, что всё настроено для работы.
Утверждается, что каталогом по умолчанию tftp для get/put является:

Код: Выделить всё

[olej@xenix ~]$ ls -l /var/lib/tftpboot
итого 0

[olej@xenix ~]$ ls -ld /var/lib/tftpboot
drwxr-xr-x 1 root root 0 мая  4  2020 /var/lib/tftpboot
Помещаю туда простенький текстовый файлик (просто echo и с sudo - не прокатит):

Код: Выделить всё

[olej@xenix ~]$ echo 11111111111111111111111111111111111111 | sudo tee /var/lib/tftpboot/test.txt
[sudo] пароль для olej:.
11111111111111111111111111111111111111

[olej@xenix ~]$ ls -l /var/lib/tftpboot
итого 4
-rw-r--r-- 1 root root 39 мар 13 22:37 test.txt
А теперь в игру вступает tftp клиент:

Код: Выделить всё

[olej@xenix ~]$ tftp 127.0.0.1
tftp> ascii
tftp> get test.txt
tftp> quit
И проверяем ... где бы мы не находились:

Код: Выделить всё

[olej@xenix ~]$ ls -l test.txt.
-rw-rw-r-- 1 olej olej 39 мар 13 22:40 test.txt
Обращаем внимание на владение полученным файлом и флаги - они от лица запросившего файл.

Re: TFTP сервер

Добавлено: 13 мар 2021, 23:57
Olej
Olej писал(а):
13 мар 2021, 23:45
И проверяем ... где бы мы не находились:
Последние штрихи...
Мне нужно туда записывать собранные имиджи для embedded загрузок из-под любых имён (это не лучшее решение, но самое простое):

Код: Выделить всё

[olej@xenix ~]$ ls -ld /var/lib/tftpboot
drwxr-xr-x 1 root root 16 мар 13 22:37 /var/lib/tftpboot

[olej@xenix ~]$ sudo chmod a+w /var/lib/tftpboot
Обычно на каталог загрузки создают ссылку из корня файловой системы ... я не буду исключением:

Код: Выделить всё

[olej@xenix ~]$ sudo ln -s /var/lib/tftpboot /tftpboot

[olej@xenix ~]$ ls -l /tftpboot
lrwxrwxrwx 1 root root 17 мар 13 22:52 /tftpboot -> /var/lib/tftpboot

Re: TFTP сервер

Добавлено: 14 май 2021, 09:09
Olej
Olej писал(а):
12 мар 2021, 06:28
Установка TFTP сервера (tftpd) в Ubuntu Linux
Обратим внимание ещё на такую штуку (цитата оттуда):
TFTP — простой протокол для передачи файлов по сети, использует протокол UDP (по порту 69), не поддерживает аутентификацию и шифрование. TFTP часто используется для загрузки файлов (прошивок, конфигураций) на устройства (маршрутизаторы, мини-АТС и другие)
Т.е. TFTP - вещь старая, простая (чтоб не сказать примитивная), не ищем там ни паролей для соединения, ни каких других привычных хитростей... Всё это, вообще то говоря, для локального применения, когда всё разложено на одном рабочем верстаке :lol:

Re: TFTP сервер

Добавлено: 14 май 2021, 09:40
Olej
Olej писал(а):
14 май 2021, 09:09
TFTP - вещь старая
Trivial File Transfer Protocol
Создан в ~ 1980
Порт/ID 69/UDP
в отличие от FTP, не содержит возможностей аутентификации (хотя возможна фильтрация по IP-адресу) и основан на транспортном протоколе UDP.
И имеет изрядные ограничения помимо того:
Всего по TFTP можно передать 32 Мб (65536 * 512 / 1024²), однако, из-за использования знакового int вместо беззнакового, размер подтверждения ограничен 16 мегабайтами. Однако если клиент и сервер поддерживают расширения протокола RFC 2347 и RFC 2348, то максимальный размер передаваемого файла увеличивается до 4Gb.
(выделено мной) - ... и тот и другой одновременно.
А как это узнать для конкретной реализации?