Coklu Internet Baglantilarinda Hat Yedekleme

routerInternet baglanti teknolojilerinin gelimesi ile birlikte cogu sirket tek hatla yetinmeyip farklı teknolojilerde birden fazla hat ile interneti kullanma basladı. Bunun temel sebeplerinden biri de hat yedekliligidir. Yani X teknolojisini kullandıgı hat giderse Y teknolojisini kullanan hat uzerinden islemleri devam ettirebilsin.

Hat yedeklemede en önemli konu yedekleme isini routing protokolleri ile mi yoksa manuel mi yapılacağıdır. Eğer hizmet alınan ISP ve kullanılan bağlantı teknolojisi destekliyorsa en sağlıklısı routing protokollerini kullanarak hat yedekleme işlemini yapmaktır ama ADSL vs gibi bağlantı tipleri kullanılıyorsa bu durumdarouting protokollerini kullanmak pek mümkün olmayacaktır.

Eğer routing protokolleri üzerinden hat yedekleme yapılamıyorsa bu isi elle yapmak gerekir yani belirli aralıklarda hatların durumunu kontrol eden ve gerektiğinde tüm bağlantıları birinden diğerine aktaran scripler yazılabilir. Bu ilk akla gelen yöntemdir ama bağlantı sayısı 3’ü aştığında biraz zora girmektedir. Her eklenen bağlantı sayısında scripte eklemeler yapılması hata durumunu kaçınılmaz kılar.

Bu gibi durumlar  için OpenBSD işletim sisteminde ifstated yazılımı bulunmaktadır.(FreeBSD’e de port edildi). Ifstated verilen parametrelere göre hatların durumunu kontrol eder ve hatlarda bir değişiklik olduğunda istenilen komutu/scripti otomatik çalıştırır. ifstated aslında bizim her seferinde eklemelerle genişleteceğimiz scrit yazma işlemini kendi üzerine alarak bize sadece hatlarla ilgili durum senaryolarını oluşturmayı bırakır.

Örnek:Iki farklı internet hattımız olsun ve biz bu hatların her ikisi de aktif iken trafiği bu hatlar arasında paylaştırdığımızı, hatlardan biri gittiğinde ise tüm trafiği diğer hatta aktaran ve ilk hat geldiğinde tekrar iki hatta paylaştıran bir yapı istediğimizi düşünelim.

Burada olasılıklar şu şekildedir.

Iki tane hat var ;
hat1=ADSL
hat2=Kablo
Her iki hat aktif olabilir		 -->Trafik bu iki hat arasında Packet Filter kullanılarak paylaştırılır,default GW hat1 =pf_ortak.conf
Hat1 aktif, hat 2 gitmiş olabilir	 -->Tüm trafik hat1 üzerinden üzerinden gider, uygun PAcket Filter kuralları yüklenir=pf_hat1.conf
Hat2 aktif, hat1 gitmiş olabilir	 -->Tüm trafik hat2 üzerinden üzerinden gider, uygun PAcket Filter kuralları yüklenir, default GW2 olur=pf_hat2.conf
Her iki hat gidebilir		    	 --> Tüm hatlar gitti diye mail attırılır.
Hat2 aktif, hat1 gitmiş iken Hat1 tekrar gelebilir --> Bu durumda Trafik bu iki hat arasında Packet Filter kullanılarak paylaştırılır,default GW hat1 =pf_ortak.conf

..

secenekler bu sekilde arttırılabilir. Hat sayısı üçe çıktığında ise bu seçenekler çok daha fazla artacaktır.

Tekrar kurmak istediğimiz yapıyı hatırlayalım: Yapmak istedigimiz her iki hat da aktif iken default GW hat1 olsun ve trafik iki hatta paylaştırılsın(PF aracılığı ile), hat1 gittiginde hat2 default GW olsun, hat1 tekrar geldiginde tekrar default GW hat1 olsun. Her iki hat da gittiginde mesaj atsin.

FreeBSD/OpenBSD Üzerinde Deneme

FreeBSD için ifstated kurulu olmali

#cd /usr/ports/net/ifstated
#make && make install

/etc/rc.conf dosyasına aşağıdaki satırlar eklenir.

ifstated_enable=”YES”

Sonra /usrl/local/etc/ifstated.conf(OpenBSD’de /etc/ifstated) dosyasinin icerisine asagidaki satirlari yaziyoruz.

loglevel debug init-state primary hat1='("ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null" every 10)' hat2='("ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null" every 10)' state primary { init { run "echo 'hat1 hat2 - ADSL & Kablo Hatti Aktif Durumda...'" run "route delete default && route add default 192.168.2.1" run "pfctl -f /etc/pf_ortak.conf" } if (! $hat1 && $hat2) set-state mastera if ($hat1 && ! $hat2) set-state masterb if ( ! $hat1 && ! $hat2) set-state hatyok } state mastera { init { run " echo 'hat2- KAblo Internet Hatti Aktif Durumda...'" run "route delete default" run "route add default 10.10.10.2" run "pfctl -f /etc/pf_hat2.conf" } if $hat1 set-state masterb if ! $hat2 set-state hatyok } state masterb { init { run " echo 'hat1- ADSL Internet Hatti Aktif Durumda...'" run "route delete default" run "route add default 192.168.2.1 " run "pfctl -f /etc/pf_hat1.conf" } if ( ! $hat1 && ! $hat2) set-state hatyok if ($hat1 && $hat2) set-state primary } state hatyok { init { run "echo 'Iki HAT da YOK'" run 'echo "hatlar gidik"|mail -s "Hat Gitti" [email protected]' run "route delete default" } if (! $hat1 && $hat2) set-state mastera if ($hat1 && $hat2) set-state primary if ( $hat1 && !$hat2) set-state masterb }

dosyada gecen IP adresleri ve anlamlari;

192.168.2.24 hat1’in IP Adresi

195.175.39.39 hat1’in calisir oldugunu kontrol etmek icin kullanilan IP adresi

10.10.10.1 hat2’in IP Adresi

74.125.79.147 hat2’in calisir oldugunu kontrol etmek icin kullanilan IP adresi

Hat kontrolu icin kullanılan IP adresleri icin uygun arabirimlere routing girilmeli. yani 195.175.39.40’a giderken hep hat2 kullanılacak.

route add 195.175.39.39 192.168.2.1

route add 195.175.39.40 10.10.10.2

NOT: IP Adreslerinin kendi sisteminize gore uyarlanmasi gerekir.(POing ile kontrol edilecek ip adreslerinin her zaman ulasılabilir adresler olmasi onemli)

Bu işlemlerden sonra ifstated -n komutu ile dosyada birşeyler hatalı mı diye kontrol edilir. Hata yoksa ifstated -d -vv komutu ile debug modda çalışıp sistemin çalıştığı izlenir.

Sistemde yapılan testler ve çıktıları.

Her ikli hattın olmadığı durumda

ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: changing state to hatyok ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running echo 'Iki HAT da YOK' Iki HAT da YOK ifstated: running echo "hatlar gidik"|mail -s "Hat Gitti" [email protected] ifstated: running route delete default delete net default

Ikinci hat aktif oldugunda

ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: changing state to mastera ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: running echo 'VELIBABAAA' VELIBABAAA ifstated: running route delete default route: writing to routing socket: No such process delete net default: not in table ifstated: running route add default 10.10.10.2 add net default: gateway 10.10.10.2

Ardindan I.hat tekrar aktif oluyor .

ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: changing state to primary ifstated: running ping -q -c 1 -t 3 -S 10.10.10.1 74.125.79.147 > /dev/null ifstated: running ping -q -c 1 -t 3 -S 192.168.2.24 195.175.39.39 > /dev/null ifstated: running echo 'ALIBABA' ALIBABA ifstated: running route delete default && route add default 192.168.2.1 delete net default add net default: gateway 192.168.2.1

Not-1:ifstated sadece hat yedekleme degil Failover firewall kurulumlarinda Firewall’larin birbirini kontrol etmesi icin de kullanılabilir.

Not-1: Yukarıdaki ornek calisan bir sistemden alınıp uzerine eklemeler yapılmıstır. Dolayısı ile bu hali ile dogrudan calismayabilir.

This entry was posted in FreeBSD, OpenBSD. Bookmark the permalink.

One Response to Coklu Internet Baglantilarinda Hat Yedekleme

  1. Ali Kapucu says:

    Ellerinize sağlık Huzeyfe hocam çok çok çok iyi bir döküman oldu bu arşive giriyor 🙂

Leave a Reply

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

2 × 5 =