serwer tftp

Nie, nie zrobiłem literówki w tytule. W tym wpisie stworzymy sobie prosty serwer tftp, który możecie wykorzystać do przesyłania konfiguracji czy firmware do telefonów VoIP, niektórych routerów, drukarek itp. Obiecuję, że tym razem nie będzie to zbyt długi wpis ????

Czym jest tftp?

Z angielskiego Trivial File Transfer Protocol co można przetłumaczyć jako prosty/banalny/trywialny protokół przesyłania plików, który wykorzystuje do komunikacji protokół UDP oraz korzysta z portu 69. Został wydany w Styczniu 1980 i od tamtego czasu niewiele się zmienił. Nie obsługuje on szyfrowanego połączenia ani tworzenia kont użytkowników a mimo to nadal jest używany w świecie informatyki.

Instalacja i na Ubuntu/Mint

W repozytoriach tych dystrybucji znajduje się już gotowy pakiet o nazwie tftpd-hpa, który umożliwi postawienie nam serwera tftp, który jest prawie odrazu gotowy do użycia

Instalację wykonujemy poleceniem

sudo apt-get install tftpd-hpa

Teoretycznie serwer jest już gotowy i uruchomiony, a przynajmniej żeby pobierać z niego pliki. Możecie sprawdzić czy wszystko poszło zgodnie z planem poleceniem

sudo service tftpd-hpa status
● tftpd-hpa.service - LSB: HPA's tftp server

Loaded: loaded (/etc/init.d/tftpd-hpa; bad; vendor preset: enabled)
Active: active (running) since pon 2018-08-20 20:45:59 CEST; 44min ago
Docs: man:systemd-sysv-generator(8)
CGroup: /system.slice/tftpd-hpa.service
└─31279 /usr/sbin/in.tftpd --listen --user tftp --address :69 --secur

sie 20 20:45:59 systemd[1]: Starting LSB: HPA's tftp server...
sie 20 20:45:59 tftpd-hpa[31248]: * Starting HPA's tftpd in.tftp
sie 20 20:45:59 tftpd-hpa[31248]: ...done.
sie 20 20:45:59 systemd[1]: Started LSB: HPA's tftp server.

Jak widać wszystko jest ok, więc czas na testy. Wrzućmy najpierw jakiś plik do katalogu domyślnego tftp /var/lib/tftpboot(możecie go później zmienić w linku konfiguracji, jeśli macie taką potrzebę). Ja stworzyłem plik test_tftp.txt w katalogu domowym użytkownika na którym jestem obecnie zalogowany więc w moim przypadku polecenie będzie wyglądało następująco

cp test_tftp.txt /var/lib/tftpboot

Upsss… Też pojawił się Wam taki komunikat?”

cp: nie można utworzyć zwykłego pliku '/var/lib/tftpboot/test_tftp.txt': Brak dostępu

Dzieje się tak, ponieważ katalog tftpboot został stworzony przez użytkownika root, który ma prawo do zapisu. Trzeba więc to zmienić. Podczas instalacji został utworzony automatycznie nowy użytkownik oraz grupa o nazwie tftp, więc czemu by tego nie wykorzystać? Wpisz następujące polecenie:

sudo chown -R tftp:tftp /var/lib/tftpboot

które zmieni właściciela folderu oraz przypisze do grupy tftp. Następne polecenie

sudo chmod -R 777 /var/lib/tftpboot

pozwoli wszystkim na odczyt i zapis do foleru i gotowe. Raz jeszcze skopiujmy sobie plik test_tftp.txt

cp test_tftp.txt /var/lib/tftpboot

Tym razem powinno już być ok. Uważajcie tylko na uprawnienia kopiowanych plików, i w razie potrzeby użyjcie “chmod”
Instalacja klienta
Potrzebujemy teraz jakiegoś oprogramowania dzięki któremu będzie można pobrać plik z serwera. Aby to zrobić posłużymy się pakietem tftp

sudo apt-get install tftp

Połączenie

tftp adres_ip_serwera

Aby pobrać plik musicie użyć polecenia get

get test_tftp.txt

Jeśli nie było żadnych błędów to znaczy, że plik został pobrany i możecie opuścić program używając polecenia quit.

Konfiguracja

Plik konfiguracyjny znajduje się w /etc/default/tftpd-hpa. Zanim zaczniecie go edytować pamiętajcie o zrobieniu kopii pliku. Nie żeby można było w nim coś zepsuć ale warto sobie wyrabiać nawyki ;). Użyjcie polecenia cp czyli kopiuj:

sudo cp /etc/default/tftpd-hpa /etc/default/tftp-hpa.backup

Teraz możecie już bezpiecznie edytować plik konfiguracyjny swoim ulubionym edytorem. Z przyzwyczajenia ja używam mcedit, który jest częścią pakietu mc(o którym za niedługo opublikuję spory materiał)

sudo mcedit /etc/default/tftpd-hpa

Poniżej znajduje się zawartość całego pliku.

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/var/lib/tftpboot" TFTP_ADDRESS=":69" TFTP_OPTIONS="--secure"

Jeśli serwer ma być wykorzystany tylko do pobierania z niego plików nie trzeba w nim nic zmieniać. Jeśli jednak chcielibyście do niego wysyłać pliki to wystarczy zmienić ostatnią linię na

TFTP_OPTIONS=”–secure –create”

W zasadzie to już wszystko. Dodam tylko, że pliki przesyła się w podobny sposób jak pobiera tylko zamiast get musicie użyć put. Po więcej szczegółów odsyłam Was do

man tftp

Hubert Kawalec
Hubert Kawalec
Zawodowo z branżą IT związany jestem od ponad 12 lat. Pasjonuję się światem nowych technologii i gadżetów elektronicznych. Uwielbiam rozwiązywać nietypowe problemy informatyczne przy których potrafię zatracić się na całe dnie. W wolnym czasie zajmuję się naprawą laptopów i komputerów oraz nie stronię od majsterkowania. Na co dzień staram się poszerzać zakres swojej wiedzy w różnych aspektach życia. W połowy 2020 roku założyłem również kanał youtube „IT w Praktyce”

0 Comments

  1. Mariusz pisze:

    Coś to wskoczyło do kodu:

    https://i.imgur.com/nWoz947.png

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *