[linux-network] Re: Yonlendirme

---------

From: Gürkan KARABATAK (gkarabatak@firat.edu.tr)
Date: Fri 18 Apr 2003 - 17:38:01 EEST

  • Next message: Gürkan KARABATAK: "[linux-network] Re: Yonlendirme"

    Selamlar

    >Iptables ile de tum paket (data, veri, vs. ne derseniz artik) alinacak.
    >Bildigim kadari ile yalnizca paketin header'ini gondermek mumkun degil
    >tcp'de.

    Sanirim bu kisimda bir yanlis anlasilma oldu. Paket alinacak derken =
    Client tan servere gelecek anlaminda degil. Client paketi gonderdigi =
    zaman tum paket tabiki servera gelecek. Alinacak dedigim olay bundan =
    sonra gecerli.
    Yani alma olayi zaten gelmis olan paketi kullanmak uzere almak.=20

    Ayrica bildigim kadariyla bu islemler su sekilde oluyor. Yanlissa =
    duzeltmenizi isterim
    Eger netfilter kullaniyorsaniz ve sadece dnat yaptiysaniz once paketin =
    mac headerlari atilacak sonra ip headerlarina gelinecek ve ip =
    headerlarinda hedef adresi degistirilecek ve paket ust katmana cikmadan =
    yeni headerlar dogal olarak yeni hedef eklenerek tekrar olusturulup =
    gonderilecektir. Paketin ne oldugu hangi porta gittigi (Eger port bazli =
    islem yapmiyorsaniz), icerdigi data onemsizdir. Bu nedenler yonlendirici =
    bilgisayar uzerinde cok az bir islem gorecektir. Bunu cok basit =
    yazilimlarlada yapabiliriz. Ancak dedigimi gibi tum 7 katmanda da =
    islemler yapilacaktir. Netfilter bunu 3 katmanda sinirlayip islemin =
    hizlanmasini saglayacaktir. Yine netfilter de de bahsettiginiz redirect =
    olayi gibi Sanal oturum acildiktan sonra yonlendiren bilgisayar olaydan =
    cekilip oturum ve data transfer iki bilgisayar arasinda =
    gerceklesecektir.=20

    Ikinci bir olay

    <?
    header("Location:http://irc.xxx.com");
    ?>

    bu olayla bildigim kadariyla irc.xxx.com adresinin once ip si cozulecek =
    dogal olarak paket ayni makinaya geri donecektir. Sonucta is DNS te =
    bitiyor. Bizim yapmak istedigimiz web isteklerinin ise irc.xxx.com un =
    ipsinin tanimli oldugu makinaya degilde baska bir makinaya yonlenmesini =
    istemek. Zira irc.xxx.com kim kendisi. Web sayfasinin bulundugu serverda =
    irc.xxx.com diye bir dns tanimlamasi yok ki. Bu yuzden boyle bir =
    redirect olayinda dns te ip ler irc server uzerine tanimli oldugu icin =
    kendine yonlendirecektir ve sayfa bulunamadi diyecektir.

    Tabi bunlar benim nacizane bilgilerim. Bir hatam varsa duzeltilirse =
    sevinirim
    Saygilar.
    -----Original Message-----
    From: Baris Metin [mailto:baris@metin.org]=20
    Sent: Friday, April 18, 2003 5:04 PM
    To: linux-network@liste.linux.org.tr
    Subject: [linux-network] Re: Yonlendirme

    Thu, Apr 17, 2003 at 07:22:17PM +0300 , G=FCrkan KARABATAK :
    > Selam
    > Iptables ta gelmeyecek diye birsey olamaz tabii ki gelecek. Ancak =3D
    > datapipe turu olaylarda paket tamamen aradaki bilgisayardan dogal =3D
    > olarakta tum veri bir porttan cikip diger makineya ulasacaktir. =
    Iptables =3D
    > ise sadece paketin hedef adresinin icerigi degistirip =
    yonlendirecektir. =3D
    > Paket uzerinde baksa hicbir degisiklik olmayacaktir. Ancak datapipe =
    =3D
    Aslinda yalnizca hedef adresi degistirilmez. Genel olarak header
    degistiriliyor demek daha dogru.

    > islemi cok farkli tum veri alinacak data elde edilecek sonra tekrar =
    =3D

    Iptables ile de tum paket (data, veri, vs. ne derseniz artik) alinacak.
    Bildigim kadari ile yalnizca paketin header'ini gondermek mumkun degil
    tcp'de.

    "Eee, fark ne o zaman?" derseniz. Netfilter (isterseniz iptables
    demeyelim daha dogru bir sekilde netfilter diyelim artik) ile yalnizca
    istek paketleri header bilgileri duzenlenerek yonlendirilecek. Datapipe
    ise tum trafigi yonlendirecek. Ikinci olarak user level/kernel level'i
    gosterebiliriz belki...

    > kaynak hedef adresler paket halinde hedef makinaya direk kendinden =3D
    > cikiyormus gibi gonderilecektir. Bir nevi Proxy mantigi. Ama iptables =
    =3D

    Burasi dogru, bir proxy gibi dusunebilirsiniz. Datapipe kaynak koduna
    bakarsaniz (iki satir bir kod var zaten :) -
    http://www.bovine.net/~jlawson/coding/datapipe/datapipe.c ) acikca
    gozukuyor.=20

            /* .... */
            if ((nbyt =3D recv(clients[i].csock, buf, sizeof(buf), 0)) <=3D =
    0 ||
              send(clients[i].osock, buf, nbyt, 0) <=3D 0) closeneeded =3D =
    1;
            /* .... */
            if ((nbyt =3D recv(clients[i].osock, buf, sizeof(buf), 0)) <=3D =
    0 ||
              send(clients[i].csock, buf, nbyt, 0) <=3D 0) closeneeded =3D =
    1;
            /* .... */

    Istemci paketleri okunarak yonlendirilecek makinaya gonderiliyor. Cevap
    paketleri de benzer sekilde istemciye yonlendiriliyor.

    > sadece paketin yonunu degistirecektir.

    Istek paketlerinin, dogru. Ama bu paketin yonlendirme yapan sunucuya
    ulasmadigi anlamina gelmez. Yalniz bu en etkin yontem de degildir.

    > Ayrica irc server uzerinden eger web server olmayacaksa iptablesla web =
    =3D
    > isteklerinin diger makinaya yonlendirilmesi web uzerinden redirect =3D
    > yapilmasindan cok daha uygun. Cunku iptables da paket sadece 3. =3D
    > katmanina kadar islenip adres degistirilip yollanacak. Ama redirect =
    =3D
    > olayinda paket tamamen 7 katmanda islenip ayrica web serverda =
    yorumlanip =3D
    > haa redirectmis bu diyip diger tarafa gonderilecek. Sadece ayni site =
    =3D

    ...[snip]...

    Ben http redirect'den bahsetmedim ki. Dikkatli okursaniz goreceksiniz ki
    ilk istekte baska bir adrese yonlendirme iceren bir sayfa
    gonderilmesinden bahsettim. Bunu da nasil isterseniz yaparsiniz :

    <?
    header("Location:http://www.yahoo.com");
    ?>

    bir ornek ...

    Daha sonra istemci zaten yonlendirildigi sayfaya/sunucuya istek
    yapacaktir. Benim sunucum (irc sunucu sanirim bu ornekte) da gelen giden
    paketleri yonlendirmek ile ugrasmayacaktir.

    iyi calismalar,
    --=20
    Baris Metin

    -- Attached file included as plaintext by Ecartis --

    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.2.1 (GNU/Linux)
    Comment: http://metin.org

    iD8DBQE+oAW4/NpXVJSThIIRAkY7AKCYOKJbm4D96L6mPTpNEAZZ+nb1VgCfSWtb
    eu5o93b2rWe962QELutB48U=3D
    =3DSsrR
    -----END PGP SIGNATURE-----


  • Next message: Gürkan KARABATAK: "[linux-network] Re: Yonlendirme"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.