OpenBSD Packet Filter yük dengelemede FTP kullanımı

FTP, sık kullanılan protokoller(HTTP, SMTP, DNS vs) arasında en sorunlu protokoldür. Diğer protokoller tek bir TCP/UDP portu üzerinden çalışırken FTP birden fazla ve dinamik portlarla çalışır.   Bir Firewall’da HTTP bağlantısını açmak için sadece 80. portu açmanız yeterlidir fakat FTP için 21. portu açmak yetmez.

Zira FTP komutlarin gidip geldiği ve verinin aktığı port olmak üzere iki farklı port üzerinden çalışır. İlk port sabit ve bellidir:21. port fakat veri bağlantısının gerçekleştiği port olan diğer port Aktif FTP ve PAsif FTP kullanımına göre değişir ve eğer firewall FTP protokolünden anlamıyorsa genelde sorun yaşanır.

Çoğu zaman arkadaşlarınızın FTP ye bağlanıyorum ama ls çektiğimde bağlantı kopuyor ya da öylesine bekliyor dediğine şahit olmuşsunuzdur. Bu gibi istenmeyen durumlar FTP’nin karmaşık yapısı ve Firewall’ların protokolden anlamamasından kaynaklanır.

Yeni nesil Firewall’larda bu sıkıntı büyük ölçüde giderilmiş olsa da ara ara eksik yapılandırmalardan aynı hataların yaşandığını görüyoruz. Linux Iptables’da ftp problemini aşmak için mod ftp_conntrack modülünün sisteme yüklenmesi gerekir. OpenBSD Packet Filter ise bu tip aykırı protokoller için en uygun yapı olan proxy mantığını kullanır. FTP için ftp-proxy, upnp için upnp proxy, sip için sip-proxy vs.

FTP protokolü eğer çıkış hattı bir tane ise oldukça rahat çalışır fakat hatlar birden fazla ve bunlar arasında load balance işlemi yapılıyorsa problem yaşatır. Aşağıdaki örnek iki farklı çıkışı olan ve iç ağında VLAN’lere bölünmüş(her bir VLAN ayrı hattan çıkıyor) OpenBSD PF için ftp-proxy’nin sorunsuz kullanımını anlatmaktadır.


Problem:ftp-proxy default cikis ip adresinden o interface ait ip adresi ile cikmaya calisir. Sizin isteginiz herbir VLAN ya da ip/subnet için farklı cikis ipleri kullanmaksa klasik ftp-proxy yapılandırması çalışmayacaktır.

VLAN_1 _Cikis_IP1
||Firewall-1 || ——Internet
VLAN_2 _ Cikis_IP2

Mesela VLAN1 den gelen paketler Cikis_2 den gitsinler , VLAN_1 den
gelenler Cikis_1den. Cikis_1 ayni zamanda sistemin default_Gw’i olsun.

Bu durumda VLAN1 ve VLAN2 icin iki ayri ftp-proxy calistiracagiz.

VLAN1 icin

ftp-proxy -a Cikis_IP2 -b 127.0.0.1 -p 8021

VLAN2 icin

ftp-proxy -a Cikis_IP1 -b 127.0.0.1 -p 8022

sonra pf.confu su sekilde duzenlemeniz gerekecek.


nat-anchor “ftp-proxy/*”
rdr-anchor “ftp-proxy/*”
rdr pass on $int_if proto tcp from VLAN1 to port ftp -> 127.0.0.1 port 8021
rdr pass on $int_if proto tcp from VLAN2 to port ftp -> 127.0.0.1 port 8022

….

anchor “ftp-proxy/*”
pass out on $ext_if1 route-to{($ext_if2 GW2)} from VLAN1 to any

Sonra rdr kurallarinda ilgili vlan’den gelen tcp 21 paketlerini sirasi ile 8021, 8022 portlarina yonlendirmek.

This entry was posted in OpenBSD and tagged , . Bookmark the permalink.

3 Responses to OpenBSD Packet Filter yük dengelemede FTP kullanımı

  1. mehmet says:

    Bu konudaki yazinizi gercek ornek ve bir network tablosuyla ornekleyerek aciklar misiniz?
    Birde 2 tane Vlan iceride yoksa tek Vlan ile 2 gw üzerinden yuk dengelemesi yapiliyorsa durum nasil olmali?
    Tesekkurler

  2. Huzeyfe ONAL says:

    Yukarda yazılı olan gercek bir networkden alınmıstır. Detay sorularınızı e-posta listelerine sorarak daha hızlı cevap alabilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *

14 − seven =