From: Baris Metin (baris@metin.org)
Date: Fri 18 Apr 2003 - 17:03:36 EEST
Thu, Apr 17, 2003 at 07:22:17PM +0300 , Gürkan KARABATAK :
> Selam
> Iptables ta gelmeyecek diye birsey olamaz tabii ki gelecek. Ancak =
> datapipe turu olaylarda paket tamamen aradaki bilgisayardan dogal =
> olarakta tum veri bir porttan cikip diger makineya ulasacaktir. Iptables =
> ise sadece paketin hedef adresinin icerigi degistirip yonlendirecektir. =
> Paket uzerinde baksa hicbir degisiklik olmayacaktir. Ancak datapipe =
Aslinda yalnizca hedef adresi degistirilmez. Genel olarak header
degistiriliyor demek daha dogru.
> islemi cok farkli tum veri alinacak data elde edilecek sonra tekrar =
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 =
> cikiyormus gibi gonderilecektir. Bir nevi Proxy mantigi. Ama iptables =
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.
/* .... */
if ((nbyt = recv(clients[i].csock, buf, sizeof(buf), 0)) <= 0 ||
send(clients[i].osock, buf, nbyt, 0) <= 0) closeneeded = 1;
/* .... */
if ((nbyt = recv(clients[i].osock, buf, sizeof(buf), 0)) <= 0 ||
send(clients[i].csock, buf, nbyt, 0) <= 0) closeneeded = 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 =
> isteklerinin diger makinaya yonlendirilmesi web uzerinden redirect =
> yapilmasindan cok daha uygun. Cunku iptables da paket sadece 3. =
> katmanina kadar islenip adres degistirilip yollanacak. Ama redirect =
> olayinda paket tamamen 7 katmanda islenip ayrica web serverda yorumlanip =
> haa redirectmis bu diyip diger tarafa gonderilecek. Sadece ayni site =
...[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,
-- 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= =SsrR -----END PGP SIGNATURE-----