FTP Protokolü ve NAT Sorunu
FTP (File Transfer Protocol), kontrol bağlantısı için TCP 21 portunu, veri aktarımı için ise ayrı bir port kullanır. Bu ikili port yapısı, NAT (Network Address Translation) arkasındaki ortamlarda ciddi sorunlara yol açar.
İki FTP modu vardır:
- Aktif FTP: Sunucu, istemcinin belirttiği porta doğru veri bağlantısı kurar. NAT arkasındaki istemcilerde sunucu özel IP'ye erişemediği için bağlantı başarısız olur.
- Pasif FTP: İstemci, sunucunun belirttiği porta bağlanır. Modern FTP istemcilerinde varsayılandır ancak NAT ortamında hâlâ sorun yaşanabilir.
FTP Helper (ALG) Nedir?
FTP Helper, FortiGate'in Application Layer Gateway (ALG) özelliğinin bir parçasıdır. FTP kontrol trafiğini (TCP 21) izleyerek, içindeki IP adresi ve port bilgilerini NAT çevirisine göre dinamik olarak günceller. Bu sayede FTP veri bağlantıları otomatik olarak kurulabilir hale gelir.
FortiGate, FTP Helper sayesinde şunları yapar:
- FTP PORT ve PASV komutlarını dinler
- Paket içindeki özel IP adresini public IP ile değiştirir
- Dinamik veri kanalı için geçici firewall politikası açar
- Veri transferi tamamlandığında geçici politikayı kapatır
FortiGate'te FTP Helper Yapılandırması
GUI Üzerinden Kontrol
FortiOS'ta FTP Helper varsayılan olarak etkindir. Durumu kontrol etmek için:
- Network → Helpers menüsüne gidin (bazı sürümlerde Policy & Objects → Helper)
- Listede ftp helper'ını bulun
- Port 21 üzerinde aktif olduğunu doğrulayın
CLI Üzerinden Kontrol
config system session-helper
show
end
Çıktıda şuna benzer bir satır görmelisiniz:
edit 13
set name ftp
set protocol 6
set port 21
next
FTP Helper'ı Devre Dışı Bırakmak
Belirli durumlarda FTP Helper'ı devre dışı bırakmak gerekebilir:
config system session-helper
delete 13
end
Not: ID numarası (13) sisteme göre değişebilir. Önce show ile doğru ID'yi tespit edin.
FTP Helper Ne Zaman Sorun Çıkarır?
1. FTPS (FTP over SSL) Kullananlar
FTP Helper, şifresiz FTP trafiğini parse eder. FTPS (implicit/explicit TLS) kullanılıyorsa trafik şifreli olduğundan Helper içeriği okuyamaz ve bağlantıyı bozabilir. Bu durumda FTP Helper'ı devre dışı bırakmak gerekir.
2. Standart Dışı Port Kullananlar
FTP sunucunuz 21 dışında bir port kullanıyorsa (örn. 2121), Helper bu trafiği yakalamaz. Helper'ı farklı porta taşıyabilirsiniz:
config system session-helper
edit 13
set port 2121
next
end
3. UTM/SSL İnceleme ile Çakışma
Bazı FortiGate sürümlerinde derin paket inceleme (DPI) ve FTP Helper aynı anda çalışırken çakışma yaşanabilir. Bu durumda loglarda "FTP bağlantısı kurulamadı" hatası görülür.
FTP Helper ve Firewall Politikası İlişkisi
FTP Helper aktif olduğunda, FortiGate veri kanalı için dinamik pinhole açar. Yani manuel olarak FTP veri portlarını (20 veya ephemeral portlar) firewall politikasına eklemenize gerek kalmaz.
Eğer FTP Helper'ı devre dışı bıraktıysanız, firewall politikanızda:
- Aktif FTP için: TCP 20 portunu inbound olarak açın
- Pasif FTP için: Sunucunun kullandığı ephemeral port aralığını açın (genellikle 49152-65535)
Tanılama Komutları
# FTP oturumlarını izle
diagnose sys session filter dport 21
diagnose sys session list
# FTP Helper loglarını gör
diagnose debug application ftp -1
diagnose debug enable
Özet: FTP Helper Açık mı Kapalı mı Olmalı?
| Senaryo | FTP Helper |
|---|---|
| Standart FTP, NAT arkası | ✅ Açık olmalı |
| FTPS (TLS şifreli) | ❌ Kapalı olmalı |
| Standart dışı port | ⚙️ Port ayarı güncellenmeli |
| SFTP (SSH üzerinden) | ❌ Helper gerekmez (TCP 22) |
Sonuç
FTP Helper, NAT arkasındaki FTP bağlantılarını sorunsuz hale getiren FortiGate'in akıllı bir özelliğidir. Ancak FTPS veya standart dışı konfigürasyonlarda dikkatli yapılandırma gerektirir. Lider Network olarak FortiGate politika tasarımı, NAT yapılandırması ve uygulama katmanı sorunlarında NSE sertifikalı mühendislerimizle destek veriyoruz.