[linux-network] Re: Bounding

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Serdar KOYLU (serdar@uludag.org.tr)
Date: Wed 12 May 2004 - 15:49:00 EEST


Selamlar..

> Merhaba arkadaslar,
> Linux bir makine uzerine 1 adet adsl ve 1 adet kablo hat geliyor.
> eth0 ve eth1 seklinde bagli durumdalar. Ayni zamanda bu makine gateway gorevi gormekte.
> eth0'daki hatta bir sorun yasandigi zaman eth1 uzerinden internet cikisinin saglanmasini istiyorum.
> Sanirim bounding olarak adlandirilan bir olay bu, cat pat ingilizcemle yabanci dokumanlardan birsey anlamadim. :) Bu konuda bilgi ve birikimlerinizi paylasacaginizi umut ediyorum.
> Tesekkur ederim..

Interface Bounding, sizin soylediginizden biraz farkli. Size gerekli
olan, sadece iki adet gateway tanimlamak. Fakat burada sorun, gw'in
dustugunu anlayamamak olacaktir.

Eger, eth0 uzerindeki ADSL duzenegini, router olarak degilde, bridge
olarak kullanirsaniz, pppd hattin dustugunu kolayca -nispeten-
anlayabilir. Bu durumda da /etc/ppp/ip-down gibi scriptlerden birini
calistirir. Hos, pppX kapaninca, gateway tanimlari genelde otomatikman
duzeltilir.

Ama IP seviyesinde kullaniyorsaniz hattin gittigini anlama isini, isler
biraz daha zor.

Kabaca, surekli calisacak bir daemon yazin. Atiyorum, her 10 sn.de bir
hatlari test etsin. Hoaaa, daemon yazmak vs. bizi asar diye dusunmeyin.
Beraberce yazalim:

#!/bin/bash

# 1. Gateway. Mesela DSL.
GW1_IP=1.2.3.4

# 2. Gateway. Mesela Kablo
GW2_IP=4.3.2.1

# Bunlari internet baglantisi olarak goster:

route add default gw 1.2.3.4
route add default gw 4.3.2.1

# Birer statik route. Bunlar test icin lazim. TTNET DNS'leri.
# Bunlarin her zaman ayakta olacaklarina guvenmek zor. Ama
# en azindan yakin..

route add -host 212.156.4.6/32 gw 1.2.3.4
route add -host 212.156.4.7/32 gw 4.3.2.1

# Yukaridaki duzenleme ile 4.6'ya hep DSL uzerinden,
# 4.7'ye hep Kablo uzerinden cikilacaktir.

while 1; do
   GW1DATA=$(ping -c 1 $GW1_IP|grep "1 received")
   if [ "X$GW1DATA" == "X" ];
      route del default gw 1.2.3.4
   fi
   GW2DATA=$(ping -c 1 $GW2_IP|grep "1 received")
   if [ "X$GW2DATA" == "X" ];
      route del default gw 4.3.2.1
   fi
   sleep 10
done

-------

Kabaca TTNET DNS'lerine o baglanti uzerinden ping atiyoruz, birer tane.
Eger ping o makineye ulasirsa bir sey yapmiyoruz. Ama ulasamazsa o zaman
o baglantiya dogru olan gateway tanimi siliniyor otomatikman.

Elbette bu kod bu haliyle pek pratik degil. Ornegin, baglanti duzelince
otomatik tekrar devreye girmez. Fakat, bu durumda ayni yontemle (ping
ile kontrol et/gateway'i ekle) cozumu uygulanabilir. Uygulanabilecek
yontemlerden biri bu sadece. Diger yandan basitce bir "for" koyarak
oraya daha kisa ve etkili kodlarda yazilabilir. Ama simdi oturup
Interface Level Authentication konusunu abstract etmem lazim.

Saygi ve sevgiler..
   


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.