[linux-network] Re: [linux-network] Re: 2 internet erisimi hakkżnd a!

---------

From: skoylu@gizemcafe.net
Date: Wed 14 Jan 2004 - 08:02:56 EST

  • Next message: Umut: "[linux-network] Re: trafik"

    Selamlar..

    Bu konuda bir seyler yazmak zamani geldi gorundugu kadariyla. Ama benim
    HOWTO yazacak vaktim yok maalesef, kabaca cerceveyi toparlayabilirim
    belki.

    Simdi olay sudur. Siz iki default gw verirseniz, genel olarak dengeli bir
    sekilde her ikisi bir tur round-robin mekanizmasi ile kapasiteleri
    oraninda kullanilirlar. Bu su demektir. Iki internet baglantisini da aktif
    hale getirmek.

    Ama biz genelde bu tur bir durumda daha fazlasini isteriz, tipki sizler
    gibi. Mesela, bantgenisligi kullanimi. Atiyorum, SSH gibi interactive
    trafige oncelik vermek vs. Bir grup kullanicinin bant genisligini
    garantilemek veya limitlemek vs. vs. Diger cok rastlanan istekler ise, bu
    sekilde cesitli kurallara gore istenen baglanti uzerinden cikilabilmesini
    saglamak olacaktir genelde.

    Biz bu ikinciye policy routing deriz. Routing isinde Linux kerneli
    birtakim routing tablolari kullanir. Paketi gondermeden once bu tablolara
    bakar. Siz, paketlerin cesitli ozelliklerini goz onune alarak bu paket
    icin hangi tabloya bakilacagini belirtebilirsiniz.

    Varsayilan olarak 3 tane tablonuz var:

    0 local -> Yerel yonlendirme ihtiyaclariniz.
    252 main -> Genel yonlendirme ihtiyaclariniz
    253 default -> varsayilan diger yonlendirme tablonuz.

    Bu listeye 255 taneye kadar yeni tablo ekleyebilirsiniz. Su sekilde de bu
    tablolarin icinde ne var ne yok gorebilirsiniz:

    # ip route ls table local
    [ayse@ayse ayse]$ /sbin/ip route ls table local
    local 10.1.5.76 dev eth0 proto kernel scope host src 10.1.5.76
    broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
    broadcast 10.1.0.0 dev eth0 proto kernel scope link src 10.1.5.76
    broadcast 10.1.255.255 dev eth0 proto kernel scope link src 10.1.5.76
    broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
    local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
    local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
    [ayse@ayse ayse]$

    Bunlar sizin local networkunuz ve hostunuz icin gerekli olan routing
    bilgileri.Dilerseniz digerlerine de bakabilirsiniz.. route komutu size
    sadece main tablosu hakkinda bilgi verecektir.

    Policy, yani yonlendirme kurallari ise ayri bir dizide tutulur. Bu dizi
    0..32767 arasi bir listedir. Bu listenin en basindan (0) sirayla
    yonlendirilecek paketin hangi kurala uyduguna bakilip o kuralin yaninda
    yazilan tablodaki girdiler uzerinden routing islemi yapilir:

    [ayse@ayse ayse]$ /sbin/ip rule
    0: from all lookup local
    32766: from all lookup main
    32767: from all lookup 253
    [ayse@ayse ayse]$

    Simdi bu listeye bakarsak, "all" icin once local tablosuna bakilacak. Eger
    bu tabloda uygun bir girdi bulunursa routing edilecek. Bulunamazsa main
    tablosuna (siradaki tablo) bakilacak vs. boyle devam edip gidecek..

    Iste sizin aradiginiz sey burasidir. Oncelikle ozel muamele istediginiz
    tabloyu olusturmalisiniz. Simdi diyelim ki bizim ozel islemimiz paketlerin
    a.b.c.d interface'i (karsi router a.b.c.e) uzerinden yollanmasi. Su banka
    meselesi icin mesela..

    # ip route add default via a.b.c.e table 10

    Simdi biz 10 numarali tabloya bir varsayilan aggecidi ekledik. Eger bir
    kural yazarda paketleri bu 10 numarali tabloya yollarsak o zaman bu
    paketler bu gw uzerinden internete gideceklerdir.

    # ip rule add to banka.adresi.com table 10

    Iste bu lazim demekki. "ip rule add" yeni kural ekle, "to adres" kural,
    "table 10" da bu tabloya ekle demek.

    Diger yontemler:

    IP="ip rule add "

    $IP from ab.cd.ef.gh table n
    ab.cd.ef.gh adresinden gelenleri bu tablodan bak.

    $IP fwmark x table n
    iptables ile x olarak isaretlenmis olanlari bu (n) tablodan bak..

    Bunlarin disinda, dev, tos gibi bir kac tane daha specifier olacakti ama
    pek kullanisli degillerdir.

    Eger tablo numarasi yerine isim kullanmak isterseniz,
    /etc/iproute2/rt_tables icersine bu tablonun adini ekleyin:

    # echo "10 dsl-hat" >> /etc/iproute2/rt_tables
    # echo "20 musteriler" >> /etc/iproute2/rt_tables

    gibi..

    En kullanisli olani iptables ile bu isi yapmaktir:

    iptables -t mangle -A PREROUTING -s 1.2.3.4 -j MARK --set-mark 0x5
    (1.2.3.4'ten gelenleri 5 olarak isaretle)

    iptables -t mangle -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j MARK
    --set-mark 0x10
    (1.2.3.4'un 80/tcp (http) portuna gidenleri 16 olarak isaretle)

    ip rule add fwmark 0x5 table dsl-hat
    ip rule add fwmark 0x10 table musteriler

    Dikkat edeceginiz hususlardan biri su 0x meselesidir. Bu sayinin 16'li
    (hexadecimal) oldugunu gosterir. Eger belirtmezseniz, iptables bunlari 10
    lu sistemde isaretler, ip rule ise 16'li olarak. Bu durumda ornegin

    iptables ... -j MARK --set-mark 20

    ip rule add fwmark 14 table ....

    gibi kafa karistirici durum olusacaktir.

    Diger taraftan, bu sekilde zorlanmis bir tablo sonrasinda MASQUERADING
    calismayabilir. Bunun yerine SNAT kullanmalisiniz:

    iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to 1.2.3.4

    Zor olan, interface'in her up oldugunda bu satirin eklenmesi ve her down
    oldugunda da bu satirin silinmesi geregidir. Bu daha cok ADSL uzerinde
    sorun olur. /etc/ppp/ip-up.local ve ip-down.local scritpleri size faydali
    olacaktir.

    Sizin canli orneginize bakalim. Siz bankaya gidecek olanlari mutlaka SDSL
    uzerinden yollamak istiyorsunuz. SDSL icin gw gw.sdsl adresi, ADSL icin gw
    ise gw.adsl olsun..

    # echo "10 sdsl" >> /etc/iproute2/rt_tables
    # echo "20 adsl" >> /etc/iproute2/rt_tables

    # ip route add default via gw.sdsl table 10
    # ip route add default via gw.adsl table 20

    # ip rule add fwmark 0x10 table sdsl
    # ip rule add fwmark 0x20 table adsl

    # iptables -t mangle -A PREROUTING -d banka.com -j MARK --set-mark 0x10

    Size bu kadari yeterli olacaktir. banka.com'a giden paketler 0x10 olarak
    isaretlecek, kural listesinden bunun 10 nolu tablodan bakilacagi
    bulunacak, 10 nolu tablodaki gw tanimida onu sdsl uzerinden yollayacaktir.

    Dilerseniz, main tablosuna sdsl'i de gw olarak ekleyebilirsiniz. Boylece
    her sey her iki hatta da dagitilirken, ayrica sadece banka.com'a gidenler
    her zaman sdsl uzerinden gideceklerdir.

    Sanirim bu aciklamalar mevzuyu bulanikliktan cikarmistir biraz olsun.
    Detay mevzulari sorarsaniz, bu bir tur mail-seminer gibi uzayabilir
    (Sevgili Murat KOC'un kulaklari cinlasin, onun icadidir bu mevzu)..
    Netekim meshurdur bizde 4 saatlik seminerler :)) Kisacasi cevaplamaktan
    kacmayiz saniyorum..

    Saygi ve sevgiler..

    ----- Original Message -----
    From: "R. Tolga KORKUNCKAYA" <tolga@mavibilgisayar.com>
    To: <linux-network@liste.linux.org.tr>
    Sent: Friday, January 09, 2004 8:11 PM
    Subject: [linux-network] Re: 2 internet erisimi hakkżnda!

    >
    > aklima ilk gelen default gateway ne olursa olsun
    > bankalar icin routing'e host
    > tanimlamasi yapmak olabilir
    >
    > route add -host 128.193.0.3 gw 192.168.1.0 gibi.
    >
    > Ancak daha guzel bir cozul iki isp'deki hatti tum networkden
    > gelecek istekleri load balancing ile iki gw'ye dagitmak olur.
    > Bunun icin iptables'da state-established-related kurallari eklemek
    > gerekir, ayrica marking yapilmali. Yine bankalar icin ise yukari
    > daki route -host tanimlari isinizi gorecektir.
    >
    > ihtiyac duyarsaniz kendi yazsigim multiroute scriptini gonderebilirim
    > ayni anda adsl ve sdsl iki hat kullaniliyor. ve uzaktaki makinalara
    > ulasabilmemiz icin karsi tarafin kurallarindan dolayi, sdsl uzerinden
    > cikmamiz gerekiyor, zira adsl hala statik ip vermediler...
    >
    > selamlar.
    >
    > --
    > r.tolga
    >
    > On Fri, 9 Jan 2004, AHMET PEHLIVAN wrote:
    >
    >


  • Next message: Umut: "[linux-network] Re: trafik"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.