TFTP ile Ubuntu’da Basit Dosya Aktarımı Nasıl Yapılır?

Sistem uzmanları, dosya transferlerinde basit ve az kaynak tüketen araçlara ihtiyaç duyar. Bu tür senaryolarda TFTP etkili bir alternatif olarak öne çıkar. Yazımızda TFTP protokolünün mimarisini ve hem istemci hem de sunucu tarafındaki kullanım avantajlarını detaylandıracağız.

TFTP Nedir?

TFTP, işlevsel olarak sadece temel dosya transferini sağlayan hafif bir protokoldür. Veri iletişimi için TCP yerine UDP’nin 69 numaralı portunu kullanır. Dosya transferi dışında herhangi bir kullanıcı doğrulama, dizin tarama veya dosya silme yeteneği bulunmaz. Bu sebeple, kaynakları sınırlı olan ağ cihazlarında veya gömülü sistemlerde, güvenlik gerektirmeyen hızlı aktarımlar için idealdir. OpenStack gibi altyapılarda ise, yapılandırma dosyalarının hızlıca dağıtılması gereken anlarda, TFTP’nin basitliği ve düşük gereksinimi önemli bir avantaj sunar.

TFTP Ne Zaman Tercih Edilir?

  • Ağ ekipmanlarının firmware güncellemeleri
  • Yönlendirici ve switch konfigürasyonlarının yedeklenmesi ve geri yüklenmesi
  • PXE ile sistem önyükleme
  • IoT cihazlarında küçük boyutlu dosya transferleri
  • Sistem otomasyonu

TFTP Avantaj Ve Dezavantajları

TFTP, sistem kaynaklarını az kullandığı için ağ donanımları üzerinde sıklıkla tercih edilen bir protokoldür. Ek bileşenlere ihtiyaç duymadan doğrudan çalışır ve pek çok cihaz TFTP sunucularını varsayılan olarak destekler. Basit bir kuruluma sahiptir ve yapılandırma işlemleri kolaylıkla tamamlanabilir.

Ancak TFTP’nin en büyük zayıflığı, güvenlik önlemlerinin eksikliğidir. Veriler şifresiz biçimde taşındığı için dış müdahalelere açık hale gelir. Ayrıca, kimlik doğrulama sunmaması da yetkisiz kişilerin erişimini kolaylaştırır. Bu tür risklerin önüne geçmek amacıyla, Fail2ban ile özel Regex kuralları kullanılarak kötü niyetli girişimler tespit edilebilir ve ilgili IP adresleri otomatik olarak engellenebilir.

Gelişmiş protokollerle kıyaslandığında, TFTP dosya listeleme veya silme gibi özellikleri desteklemez. Ayrıca büyük dosyaların aktarımında çeşitli kısıtlamalar da içerir.

TFTP’nin Teknik Yapısı ve Mesaj Türleri

TFTP, istemci ile sunucu arasında istek-cevap (request-response) temelli çalışır. Temel mesaj türleri şunlardır.

AçıklamaDetaylar
RRQ – Okuma İsteğiDosya almak için istemci tarafından gönderilir
WRQ – Yazma İsteğiDosya göndermek için kullanılır
DATA – Veri512 bayta kadar veri içerir
ACK – OnayVerinin alındığını belirtir

TFTP Aktarım Modları

TFTP protokolü yalnızca iki farklı aktarım modunu destekler: Netascii ve Octet. Netascii modu, ASCII karakter setine dayalı olarak metin dosyalarının iletiminde kullanılır ve özellikle insan tarafından okunabilir veri aktarımları için uygundur. Bu modda veriler, sistemler arası uyumluluğu artırmak için belirli karakter dönüşümleri uygulanarak gönderilir. Diğer yandan Octet modu, verileri ham (binary) formatta iletir. Bu sayede herhangi bir dönüşüm yapılmaksızın orijinal hâliyle veri aktarımı sağlanır.

Octet modu, genellikle firmware güncellemeleri, sistem imajları veya görüntü dosyaları gibi ikili veri içeren dosyaların taşınmasında tercih edilir.

Ubuntu Üzerinde TFTP Sunucusu Kurulumu

Ubuntu‘da belirli bir yazılımı kurmak istediğinizde, hangi paketin bu yazılımı içerdiğinden emin değilseniz, apt paket yöneticisi üzerinden anahtar kelime ile arama yaparak ilgili paketleri kolayca tespit edebilirsiniz.

petru@petru-ubuntu:~$ apt-cache search tftp | grep tftp erlang-tftp - Erlang/OTP TFTP client and server python3-txtftp - Twisted-based TFTP implementation tftp-hpa - HPA's tftp client tftp-hpa-dbg - HPA's tftp (debug) tftpd-hpa - HPA's tftp server atftp - advanced TFTP client atftpd - advanced TFTP server golang-github-pin-tftp-dev - TFTP server and client library for Golang (library) libnet-tftp-perl - Perl module for accessing TFTP servers libnet-tftpd-perl - Perl extension for Trivial File Transfer Protocol Server puppet-module-puppetlabs-tftp - Puppet module for managing tftp-hpa python3-fbtftp - Framework to build dynamic TFTP servers (Python3) tftp - transitional package petru@petru-ubuntu:~$

İlk olarak sisteminizdeki paket listelerini güncelleyerek en güncel paketlere erişimi sağlamak önemlidir.

sudo apt update

TFTP hizmetini sağlayan tftpd-hpa paketini yükleyerek sunucuyu sisteminize kurabilirsiniz.

sudo apt install tftpd-hpa

Kurulum sonrası TFTP servisi otomatik olarak başlatılır. Durumunu aşağıdaki komutla kontrol edebilirsiniz. Eğer servis aktif ve çalışır durumda ise, yeşil bir “active (running)” mesajı görürsünüz. Aksi durumda hata mesajlarına dikkat edin.

sudo systemctl status tftpd-hpa

TFTP sunucusunun hangi dizini kullanacağı, hangi IP ve port üzerinden dinleyeceği gibi bilgileri ayarlamak için konfigürasyon dosyasını açın:

sudo nano /etc/default/tftpd-hpa

Aşağıdaki örnek yapılandırma satırlarını bu dosyaya girin veya var olanları düzenleyin:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Yukarıda belirttiğiniz /tftp dizini sistemde yoksa, elle oluşturulmalı ve gerekli izinler atanmalıdır.

sudo mkdir /tftp
sudo chown tftp:tftp /tftp
sudo chmod 755 /tftp

Yapılandırma değişikliklerinin aktif olabilmesi için TFTP servisini yeniden başlatmanız gerekmektedir. Bu işlem sonrası TFTP sunucunuz yapılandırılmış olur ve veri aktarımlarına hazırdır.

TFTP İstemcisi Kullanımı

Kurulum tamamlandıktan sonra, bir TFTP sunucusuna bağlanmak için aşağıdaki komutu kullanabilirsiniz. <sunucu_ip_adresi> kısmına gerçek IP adresini girmeniz gerekir.

tftp <sunucu_ip_adresi>

Sunucudan bir dosya indirmek için get komutunu kullanabilirsiniz.

get dosya.txt

Sunucuya dosya yüklemek için put komutu kullanılır.

put dosya.txt

TFTP, özellikle aynı yapılandırmanın birden fazla ağ cihazına hızlı şekilde aktarılması gereken durumlarda büyük kolaylık sağlar. Örneğin, birden fazla switch’e aynı konfigürasyonu yüklemek için merkezi bir TFTP sunucusundan cihazlara özel betikler aracılığıyla yapılandırma dosyaları saniyeler içinde dağıtılabilir.

Ancak bu pratikliğe rağmen, TFTP’nin şifreleme ve kimlik doğrulama desteğinin olmaması nedeniyle yalnızca güvenli, izole edilmiş ağ ortamlarında kullanılmalıdır. Günlük ağ yönetim görevlerinde zaman kazandırsa da, kritik sistemlerde veri güvenliği için FTP, SFTP veya SCP gibi daha güvenli alternatiflerin tercih edilmesi tavsiye edilir.

Sık Sorulan Sorular

TFTP ile firmware yüklemek için, firmware dosyası bir TFTP sunucusuna yerleştirilir. Ardından cihaz üzerinde aşağıdaki gibi bir komut çalıştırılır:

copy tftp://<sunucu_ip>/firmware.bin flash:
  • Windows için tftpd64, SolarWinds TFTP Server
  • Linux için tftpd-hpa, atftpd, dnsmasq (entegre TFTP)
  • macOS için Homebrew üzerinden tftp-server kurulabilir.

Yorum yapın