ot Valüo(30-01-2007)

reiting (7)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Statiiata ima za tsel da Vi pokazhe edno ot resheniiata za ogranichavane na trafika generiran ot peer-to-peer (p2p).Nai udachniia nachin za tova e kato polzvame l7-filter i ipp2p.

A kavo e p2p (peer-to-peer):

Peer to Peer (P2P) e termin, opisvasht tehnologiia, koiato izgrazhda mrezha ot potrebiteli, koito svobodno mogat da razmeniat pomezhdu si failove bez nuzhdata ot survur, koito da igrae roliata na posrednik. Namesto edin potrebitel da triabva da kachi dadena informatsiia na survur, a vsichki ostanali da ia iztegliat ottam, pri P2P mrezhite, transferut se osushtestviava direktno ot hard diska na potrebitelia, kum vsichki, koito sa zainteresuvani ot tozi fail. Tova stava s pomoshtta na programa, narichana P2P ili file sharing (ang. spodeliane na failove) klient. Startiraiki tazi programa na kompyutura si, potrebiteliat opredelia chast ot sudurzhanieto na svoia hard disk kato "spodeleno", t.e. dostupno za vsichki ostanali, izpolzvashti suotvetniia klient.
Malko poveche za iptables:
IPTABLES e firewall s neveroiatni vuzmozhnosti.. S nego mozhete da filtrirate paketi ili da maskirate ip adresi ili portove(ip masquerade, NAT, PAT) i tn.. Za da izvurshva filtrirane na paketi ili maskirane iptables se vodi po taka narechenite verigi(chains)- logicheski grupiran spisuk ot pravila. Vsiako pravilo ot verigata e test, na koito ip hedurut se podlaga. Verigite sudurzhat pravila zapochvashti ot edno. Mozhete da zadavate pravilata ili chrez spetsifikatsiia, ili chrez nomer. Spetsifikatsiiata na pravilo( rule specification ) e praviloto ili ( naborut ot pravila ), na koeto paketut triabva da otgovaria - testut. Edno i sushto osnovno pravilo mozhe da sushtestvuva v niakolko verigi, taka che argumentut veriga(vizhte po-dolu) obiknoveno e zadulzhitelen. Ako tselta na verigata e edna ot slednite: ACCEPT (propuskane na paketa), DROP (othvurliane na paketa), REJECT (othvurliane na paketa i vrushtane na suobshtenie za greshka) ili MASQUERADE (maskirane na paketa), tazi tsel zavurshva verigata, taka che v tazi veriga niama da budat izpulniavani poveche pravila.
SHTo e l7-filter:
L7-filtura e klasifikator za linukskiia Netfilter koito identifitsira paketi na baza na dannite ot aplikeishun leura (osi modela). Toi mozhe da klasifitsira paketi kato Kazaa, HTTP, Jabber, Citrix, Bittorrent, FTP, Gnucleus, eDonkey2000, i t.n. bez znachenie ot porta. Toi Dopulva sushtestvuvashti klasifikatori koito sa fiksirani po IP adresi, nomer na port i t.n.


Za kakvo sluzhi IPP2P i shto za zhivotno e:
TSelta na IPP2P e da identifitsira peer-kum-peer(p2p) dannite v IP trafika. Za tazi tsel e razshirena iptables/netfilter arhitekturata chrez nov shoden modul. V sledstvie na koeto IPP2P se integrira lesno v Linukskite zashtitni steni (Firewall) i funktsionalnostta mu mozhe da se izpolzva chrez zadavane na podhodiashti pravila za filtrirane.


Let's go...


Purvoto neshto koeto triabva da napravim e da de-instalirame iptables. Tova mozhem da napravim po sledniiat nachin:
removepkg iptables ili removepkg /var/log/packages/iptables*



Sledva da svalim paketite koito shte ni triabvat, a te sa:
kernel-source-2.4.3.33 - cd1
iptables-1.3.7 - tuk
netfilter-layer7-v2.9 - tuk
l7-protocols-2007-01-08 - tuk
ipp2p-0.8.1_rc1 - tuk

Izvlechame arhivite sus slednite komandi:

installpkg kernel-source-2.4.33.3-noarch-1.tgz
ln -s /usr/src/iptables-1.3.7 /usr/src/iptables
tar -xvzf l7-protocols-2007-01-08.tar.gz -C /usr/src/
tar -xvzf netfilter-layer7-v2.9.tar.gz -C /usr/src/
tar -xvzf ipp2p-0.8.1_rc1.tar.gz -C /usr/src/

Kompilirane i pachvane na iadroto:

SHTo e to iadroto i kakvo e kompilirane ? Ima hora, koito tova ne e iasno, taka che shte obiasnia tuk.
Qdroto e obshtoto mezhdu vsichki distributsii na Linux - tova e neshto, koeto zavisi ot Linus Torvalds. Vie mozhete da se sdobiete bezplatno s nego. Obiknovenno go poluchavate v negoviia izhoden kod (taka, kakto sa go pisali Linus Torvalds, Alan Koks i dr.), no, za da se zaredi operatsionnata sistema, triabva iadroto da e v mashinen kod. T.e. triabva na prevurnete iadroto ot izhoden v mashinen kod, koito protses se naricha kompilirane. Tova obache pozvoliava da kompilirate samo tezi tezi chasti, koito sa vi nuzhni. Naprimer, vie mozhe bi ne se nuzhdaete ot poddruzhka na SCSI adapteri i ustroistva ili na poddruzhka na poveche ot 1GB RAM. Blagodarenie vie mozhete da nastroite taka iadroto, che to da e nai-optimizirano za vashata konfiguratsiia. Kogato instalirate niakakva distributsiia na Linux, vie poluchavate kompilirano iadro, koeto obache e napraveno taka, che da poddurzha pochti vsichko, koeto go pravi dosta neoptimizirano. Tova predpolaga, che bihte iskali da go prekompilirate.


Konfigurirame iadroto:
cd /usr/src/linux
patch -p1 make menuconfig

Sled tova izbirame sledniiat modul:

Networking options --->
IP: Netfilter Configuration --->
Layer 7 match support (EXPERIMENTAL) (NEW)
[*] Layer 7 debugging output (EXPERIMENTAL)

Zapazvame konfiguratsiiata na iadroto...

Kompilatsiia na iadroto i modulite, instalirane na modulite

Proveriava za zavisimosti
make dep
make clean


Kompilira samoto iadro kato bzip imidzh. SHTe go namerite kato fail bzImage v direktoriiata 'arch/i386/boot'.
make bzImage

Kompilira modulite.
make modules

Instalira modulite
make modules_install


Znaem, che po nachalo lilo tursi i zarezhda /boot/vmlinuz. Mozhem da preimenuvame staroto iadro:
mv /boot/vmlinuz /boot/vmlinuz.old
mv /boot/System.map /boot/System.map.old


Da kopirame novoto:

cp arch/i386/boot/bzImage /boot/vmlinuz
cp System.map /boot/System.map

Da dobavim v /etc/lilo.conf optsiia za zarezhdane na staroto iadro po izbor, v sluchai che ne trugne novoto:
image=/boot/vmlinuz.old
Imeto na faila-iadro

label=OldLinux
Proizvolno naimenovanie na iadroto

root = /dev/hda1
root-diala na vashata Linux-instalatsiia

I da izpulnim komandata:
lilo

Instalirame iptables-1.3.7
cd /usr/src/iptables
patch -p1 chmod 755 extensions/.layer7-test
make KERNELDIR=/usr/src/linux
make KERNELDIR=/usr/src/linux install

Kopirame protokola:

cp /usr/src/l7-protocols-2007-01-08 /etc/l7-protocols



Instalirame pp2p:

cd /usr/src/ipp2p-0.8.1_rc1
pico Makefile


kadeto e reda:
IPTABLES_SRC = /usr/src/iptables-1.2.9

go zameniame po sledniiat nachin:
IPTABLES_SRC = /usr/src/linux-2.4.33.3/include/config/ip/nf

i pishem:

make
cp libipt_ipp2p.so /usr/local/lib/iptables/
insmod ipt_ipp2p.o
depmod -a



Na kraia mozhem da proverim dali vsichko e minalko kato horata po sledniiat nachin:
iptables -m layer7 --help
iptables -m ipp2p --help


Eto i edin primeren variant za polzvane:

# kbps = KByte/sek
# Ogranichavane na skorostta na kanala ----------------------------------------------------------------
$ipr qdisc add dev eth1 root handle 1: htb default 2
$ipr qdisc add dev eth0 root handle 1: htb default 2
$ipr class add dev eth1 parent 1: classid 1:1 htb rate 200kbps burst 250k
$ipr class add dev eth0 parent 1: classid 1:1 htb rate 100kbps burst 250k
#unclassified--------------------------------------------------------------------------------
$ipr class add dev eth1 parent 1:1 classid 1:2 htb rate 20kbps ceil 30kbps burst 1k prio 7
$ipr class add dev eth0 parent 1:1 classid 1:2 htb rate 10kbps ceil 20kbps burst 1k prio 7
$ipr qdisc add dev eth1 parent 1:2 handle 2: esfq perturb 10
$ipr qdisc add dev eth0 parent 1:2 handle 2: esfq perturb 10
#web------------------------------------------------------------------------------------------
$ipt -t mangle -A POSTROUTING -m layer7 --l7proto http -j MARK --set-mark 3
$ipr class add dev eth1 parent 1:1 classid 1:3 htb rate 150kbps ceil 200kbps burst 150k prio 2
$ipr class add dev eth0 parent 1:1 classid 1:3 htb rate 70kbps ceil 100kbps burst 150k prio 2
$ipr qdisc add dev eth1 parent 1:3 handle 3: esfq perturb 10 hash dst
$ipr qdisc add dev eth0 parent 1:3 handle 3: esfq perturb 10
$ipr filter add dev eth1 protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:3
$ipr filter add dev eth0 protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:3
#p2p----------------------------------------------------------------------------------------
$ipt -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 4
$ipt -t mangle -A POSTROUTING -m layer7 --l7proto directconnect -j MARK --set-mark 4
$ipr class add dev eth1 parent 1:1 classid 1:4 htb rate 10kbps ceil 20kbps burst 1k prio 3
$ipr class add dev eth0 parent 1:1 classid 1:4 htb rate 5kbps ceil 10kbps burst 1k prio 3
$ipr qdisc add dev eth1 parent 1:4 handle 4: esfq perturb 10
$ipr qdisc add dev eth0 parent 1:4 handle 4: esfq perturb 10
$ipr filter add dev eth1 protocol ip parent 1:0 prio 1 handle 4 fw flowid 1:4
$ipr filter add dev eth0 protocol ip parent 1:0 prio 1 handle 4 fw flowid 1:4
#ADMINxxx.xxx.xxx.gw------------------------------------------------------------------------
$ipt -t mangle -A OUTPUT -d xxx.xxx.xxx.adm1 -j MARK --set-mark 5
$ipt -t mangle -A OUTPUT -d xxx.xxx.xxx.adm2 -j MARK --set-mark 5
$ipr class add dev eth0 parent 1:1 classid 1:5 htb rate 30kbps burst 15k prio 1
$ipr qdisc add dev eth0 parent 1:5 handle 5: sfq perturb 100
$ipr filter add dev eth0 protocol ip parent 1:0 prio 1 handle 5 fw flowid 1:5
#-----------------------------------------------------------------------------




E prosto ne mi e ostanalo vreme za da napisha vsichko i da ia napravia chitava statiiata, no nadiavam se toz put da ste dovolni.... Purvonachalno statiiata imashe za tsel da da pokazhe na tezi koito si imat pone malka predstava kak se raboti s Gnu/Linuks, no iavno triabva da se pishe kato na purvoklasnitsi... E nadiavam se tozi put da vi haresa.... ako li puk ne to zdrave da e!


<< Instalatsiia i nastroika na Trac i SVN | Kak da kompilirame Falkon poddruzhka v MySQL 5 >>