U novije vrijeme konačno je i kod nas počelo sve jače prodiranje širokopojasnih internet veza, kako u tvrtke, tako i u kućanstva.
Ovime dobivamo mogućnost jeftinijeg pristupa internetu, sa sve većim brzinama. Naravno, otvorila se i mogućnost dijeljenja zajedničkih internet veza na više korisnika, što se posebno koristi u tvrtkama, udrugama, i sl.
No, pojavom velikih brzina prijenosa podataka putem interneta, pojavili su se i programi te protokoli koji takve mogućnosti iskorištavaju do krajnjih granica. Glavni predstavnici takvih programa su programi za peer-to-peer dijeljenje datoteka. Iako to zvuči vrlo dobro, u praksi dolazimo do velikih problema. Glavni problem je u tome što takvi programi otvaraju iznimno velik broj konekcija na internet , pa time "ubijaju" vezu, pa makar sam "bandwidth" i nije potpuno iskorišten.
No, tu možemo odlično primijeniti linux kao router koji će određivati prioritete prema protokolima, oblikovati internet promet, a samim time znanto poboljšati performanse našeg internet linka. Primjer iz prakse je kada jedan klijent uključi neki p2p program, svi ostali gotovo da i ne mogu otvoriti internet stranicu, ili sve to radi užasno sporo. Za rješenje ovog problema treba nam noviji kernel, iptables paket sa odgovarajućim patchevima za prepoznavanje prometa prema protokolima, i jedna skripta koja će sve to obaviti. Pošto je ovo sve dosta komplicirano, odlučio sam napisati mali howto, kako bih pomogao drugima, ali i sebi, ako zaboravim kako sam to izveo . Howto je izveden iz više sličnih koji se mogu pronaći na internetu, no pošto nijedan nije kompletan, nadam se da će ovaj biti. Howto je pisan za ubuntu-server 6.06 , ali na gotovo isti način se može primijeniti na bilo kojoj drugoj distribuciji.
Pa krenimo redom:
Dakle, treba nam:
- bilo koja linux distribucija
- kernel sa patchem za IMQ device
- iptables sa layer7 patchem za prepoznavanje protokola
- layer7 protokoli
Ako vam se neda sve ovo skidati i patchirati, imate već gotov kernel sa svim potrebnim patchevima na ovoj adresi: http://dragec.dyndns.org/linux-2.6.14-layer7+IMQ.tar.gz
U tome slučaju možete odmah krenuti na korak broj 8. Ako želite raditi sve ispočetka, krenite po redu:
1. Skinuti zadnji kernel sa kojim provjereno radi layer7
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2
1.a) Instalirajte sve potrebno za kompajliranje kernela (vrijedi za Ubuntu i Debian)
apt-get install gcc make libncurses5-dev
2. U istom direktoriju skinuti iptables source:
wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.4.tar.bz2
3. skinite layer7 patch za kernel:
wget http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.1.tar.gz
4. Skinite IMQ patch za kernel i za iptables:
wget http://www.linuximq.net/patchs/linux-2.6.14-imq6.diff
wget http://www.linuximq.net/patchs/iptables-1.3.0-imq1.diff
5. skinite layer7 protokole:
wget http://ufpr.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2006-01-22.tar.gz
6. sve to otpakirati i napraviti softlinkove:
tar -xzvf netfilter-layer7-v2.1.tar.gz
tar -xjvf iptables-1.3.4.tar.bz2
tar -xjvf linux-2.6.14.tar.bz2
tar -xzvf l7-protocols-2006-01-22.tar.gz
mv l7-protocols-2006-01-22 /etc/l7-protocols
ln –s iptables-1.3.4 iptables
ln –s linux-2.6.14 linux
7. Primijenite layer7 i IMQ patch na iptables-e i na kernel:
cd /usr/src/iptables
patch -p1 < ../iptables-1.3.0-imq1.diff
patch -p1 < ../netfilter-layer7-v2.1/iptables-layer7-2.1.patch
chmod +x extensions/.layer7-test
cd /usr/src/linux
patch -p1 < ../linux-2.6.14-imq6.diff
patch -p1 < ../netfilter-layer7-v2.1/kernel-2.6.13-2.6.15-layer7-2.1.patch
8. Sad slijedi konfiguracija i kompajliranje kernela:
cd /usr/src/linux
make menuconfig
Ako ste skinuli već patchirani kernel s gornjeg linka, obavezno dodajte podršku za uređaje koje imate (pogotovo IDE kontrolere), jer u mojem kernelu je uključen driver samo za Realtekov 8139 chipset (koji najčešće i pronalazimo u mrežnim karticama).
također, pazite na sljedeće opcije:
Networking --->
Networking options --->
[*] Network packet filtering (replace ipchains) --->
IP: Netfilter Configuration --->
<M> Layer 7 match support (EXPERIMENTAL)
[ ] Layer 7 debugging output
Device Drivers --->
Network device support --->
<M> IMQ (intermediate queueing device) support
Nakon toga slijedi instalacija kernela:
make
make modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.14
cp System.map /boot/System.map-2.6.14
I editirajte datoteku menu.lst za bootloader:
cd /boot/grub
vim menu.lst
Dodajte ovo:
title Ubuntu, kernel 2.6.14
root (hd0,0)
kernel /boot/vmlinuz-2.6.14 root=/dev/hda1 ro
savedefault
boot
Naravno, hda1 ovisi na kojem disku se nalazi vaš kernel. Nakon toga slijedi reboot, i dignite novi kernel.
Ako je sve uspjelo, imate vrlo dobar sustav za traffic shaping, klasifikaciju prema protokolima i sl. No, pitate se kako. Ako vas zanimaju VRLO detaljna objašnjenja kako to radi, obavezno pročitajte sljedeće: http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm i http://gentoo-wiki.com/HOWTO_Packet_Shaping
No, za detaljnjo objašnjavanje svega ovoga trebalo bi mi još 20 stranica, pa ću priječi odmah na konkretni primjer, gdje imamo za prioritet postavljen ICMP, ssh i slično, na normalnim prioritetima su nam http promet i ostali „normalni“ protokoli, a na najniže prioritete stavljamo naravno, p2p protokole.
Evo, dat ću jedan primjer skripte koju koristim, sa komentarima:
Napomena: ADSL interface nam je ppp0. Ako kod vas nije tako, možete ga preimenovati, ili ga staviti kao varijablu. Većinu postavki nije potrebno mijenjati, dovoljno je podesiti UPRATE i DOWNRATE.
#!/bin/bash
### Brišemo sve firewall chainove
iptables -F
iptables -X
iptables -F -t nat
### Podešavanje MTU-a za adsl ###
iptables -A FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
###
################# Q O S ################################################
# Ponistim postavke za imq device #####
tc qdisc del dev imq0 root 2> /dev/null
tc qdisc del dev imq1 root 2> /dev/null
ip link set imq0 down
ip link set imq1 down
ip link set dev imq0 qlen 30
ip link set dev imq0 mtu 1492
ip link set dev imq1 qlen 30
ip link set dev imq1 mtu 1492
###############################################
# Traffic shaping
###############################################
# Interfaceovi - imq0 je za upload, imq1 za download
IFACE=imq0
IFACE1=imq1
# Prioriteti
MARKPRIO1="1"
MARKPRIO2="2"
MARKPRIO3="3"
MARKPRIO4="4"
# Bandwith i klasifikacije bandwitha za prioritete
## P2PRATE je max rate za P2P
##
## UP-limiti – UPRATE nam je ukupni Upload
UPRATE="512"
let P2PRATE=($UPRATE / 8)
let PRIORATE1=($UPRATE / 4)
let PRIORATE2=($UPRATE / 4)
let PRIORATE3=($UPRATE / 4)
let PRIORATE4=($UPRATE / 4)
## Downlimiti – DOWNRATE nam je ukupni Download
###
DOWNRATE="2048"
let P2PRATE2=($DOWNRATE/8)
let PRIORATE5=($DOWNRATE/4)
let PRIORATE6=($DOWNRATE/4)
let PRIORATE7=($DOWNRATE/4)
let PRIORATE8=($DOWNRATE/4)
# Quantums - vidi http://gentoo-wiki.com/HOWTO_Packet_Shaping
QUANTUM1="12187"
QUANTUM2="8625"
QUANTUM3="5062"
QUANTUM4="750"
# Burst - dozvoljena prekoracenja po klasama
### UPLOAD
BURST1=($UPRATE / 32)
BURST2=($UPRATE / 48)
BURST3=($UPRATE / 64)
BURST4="0"
### DOWNLOAD
BURST5=($DOWNRATE / 32)
BURST6=($DOWNRATE / 48)
BURST7=($DOWNRATE / 64)
BURST8="0"
### UPLOAD CBURST
CBURST1=($UPRATE / 32)
CBURST2=($UPRATE / 48)
CBURST3=($UPRATE / 64)
CBURST4="0"
### DOWNLOAD CBURST
CBURST5=($DOWNRATE / 32)
CBURST6=($DOWNRATE / 48)
CBURST7=($DOWNRATE / 64)
CBURST8="0"
###### Kraj osnovnih postavki #####
ip link set imq0 up
ip link set imq1 up
# PODESENJA ZA IMQ0 - TO JE ZA UPLOAD
tc qdisc add dev $IFACE root handle 1:0 htb default 103
# Set root class
tc class add dev $IFACE parent 1:0 classid 1:1 htb rate ${UPRATE}kbit burst ${BURST1}kbit cburst ${CBURST1}kbit
# Specify sub classes
tc class add dev $IFACE parent 1:1 classid 1:101 htb rate ${PRIORATE1}kbit ceil ${UPRATE}kbit quantum $QUANTUM1 burst ${BURST1}kbit prio 0
tc class add dev $IFACE parent 1:1 classid 1:102 htb rate ${PRIORATE2}kbit ceil ${UPRATE}kbit quantum $QUANTUM2 burst ${BURST2}kbit cburst ${CBURST2}kbit prio
1
tc class add dev $IFACE parent 1:1 classid 1:103 htb rate ${PRIORATE3}kbit ceil ${UPRATE}kbit quantum $QUANTUM3 burst ${BURST3}kbit cburst ${CBURST3}kbit prio
2
tc class add dev $IFACE parent 1:1 classid 1:104 htb rate ${PRIORATE4}kbit ceil ${P2PRATE}kbit quantum $QUANTUM4 burst ${BURST4}kbit cburst ${CBURST4}kbit pri
o 3
# Filter packets
tc filter add dev $IFACE parent 1:0 protocol ip prio 0 handle $MARKPRIO1 fw classid 1:101
tc filter add dev $IFACE parent 1:0 protocol ip prio 1 handle $MARKPRIO2 fw classid 1:102
tc filter add dev $IFACE parent 1:0 protocol ip prio 2 handle $MARKPRIO3 fw classid 1:103
tc filter add dev $IFACE parent 1:0 protocol ip prio 3 handle $MARKPRIO4 fw classid 1:104
# Queuing disciplines
tc qdisc add dev $IFACE parent 1:101 sfq perturb 16 quantum $QUANTUM1
tc qdisc add dev $IFACE parent 1:102 sfq perturb 16 quantum $QUANTUM2
tc qdisc add dev $IFACE parent 1:103 sfq perturb 16 quantum $QUANTUM3
tc qdisc add dev $IFACE parent 1:104 sfq perturb 16 quantum $QUANTUM4
### Kraj podesenja za upload ###
# PODESENJA ZA IMQ1 - DOWNLOAD
tc qdisc add dev $IFACE1 root handle 1:0 htb default 103
# root class
tc class add dev $IFACE1 parent 1:0 classid 1:1 htb rate ${DOWNRATE}kbit burst ${BURST5}kbit cburst ${CBURST5}kbit
# sub classes
tc class add dev $IFACE1 parent 1:1 classid 1:101 htb rate ${PRIORATE5}kbit ceil ${DOWNRATE}kbit quantum $QUANTUM1 burst ${BURST5}kbit cburst ${CBURST5}kbit p
rio 0
tc class add dev $IFACE1 parent 1:1 classid 1:102 htb rate ${PRIORATE6}kbit ceil ${DOWNRATE}kbit quantum $QUANTUM2 burst ${BURST6}kbit cburst ${CBURST6}kbit p
rio 1
tc class add dev $IFACE1 parent 1:1 classid 1:103 htb rate ${PRIORATE7}kbit ceil ${DOWNRATE}kbit quantum $QUANTUM3 burst ${BURST7}kbit cburst ${CBURST7}kbit p
rio 2
tc class add dev $IFACE1 parent 1:1 classid 1:104 htb rate ${PRIORATE8}kbit ceil ${P2PRATE2}kbit quantum $QUANTUM4 burst ${BURST8}kbit cburst ${CBURST8}kbit p
rio 3
# Filters
tc filter add dev $IFACE1 parent 1:0 protocol ip prio 0 handle $MARKPRIO1 fw classid 1:101
tc filter add dev $IFACE1 parent 1:0 protocol ip prio 1 handle $MARKPRIO2 fw classid 1:102
tc filter add dev $IFACE1 parent 1:0 protocol ip prio 2 handle $MARKPRIO3 fw classid 1:103
tc filter add dev $IFACE1 parent 1:0 protocol ip prio 3 handle $MARKPRIO4 fw classid 1:104
# Queuing disciplines
tc qdisc add dev $IFACE1 parent 1:101 sfq perturb 16 quantum $QUANTUM1
tc qdisc add dev $IFACE1 parent 1:102 sfq perturb 16 quantum $QUANTUM2
tc qdisc add dev $IFACE1 parent 1:103 sfq perturb 16 quantum $QUANTUM3
tc qdisc add dev $IFACE1 parent 1:104 sfq perturb 16 quantum $QUANTUM4
### novi chainovi u mangle tablici za klasifikaciju paketa ###
iptables -F -t mangle
iptables -t mangle -N adsl-out
iptables -t mangle -N adsl-in
### Layer 7 filteri za upload
iptables -t mangle -A adsl-out -p tcp --syn -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-out -p icmp -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-out -m layer7 --l7proto dns -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-out -m layer7 --l7proto sip -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-out -m layer7 --l7proto rdp -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-out -m layer7 --l7proto vnc -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-out -m layer7 --l7proto exe -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto flash -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto ogg -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto pdf -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto rar -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto tar -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto zip -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto validcertssl -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A adsl-out -m layer7 --l7proto ftp -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto http -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A adsl-out -m layer7 --l7proto imap -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto nntp -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto pop3 -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto smtp -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto ssh -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-out -m layer7 --l7proto irc -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto aim -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto msnmessenger -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto msn-filetransfer -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto jabber -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto bittorrent -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-out -m layer7 --l7proto directconnect -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-out -m layer7 --l7proto edonkey -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-out -m layer7 --l7proto fasttrack -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-out -m layer7 --l7proto gnutella -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-out -m layer7 --l7proto tesla -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto unknown -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-out -m layer7 --l7proto ntp -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A adsl-out -m mark --mark 0 -j MARK --set-mark $MARKPRIO3
### Pa za download ############
iptables -t mangle -A adsl-in -p icmp -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-in -m layer7 --l7proto dns -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-in -m layer7 --l7proto sip -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-in -m layer7 --l7proto rdp -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-in -m layer7 --l7proto vnc -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-in -m layer7 --l7proto exe -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto flash -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto ogg -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto pdf -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto rar -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto tar -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto zip -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto validcertssl -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A adsl-in -m layer7 --l7proto ftp -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto http -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A adsl-in -m layer7 --l7proto imap -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto nntp -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto pop3 -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto smtp -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto ssh -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A adsl-in -m layer7 --l7proto irc -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto aim -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto msnmessenger -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto msn-filetransfer -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto jabber -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto bittorrent -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-in -m layer7 --l7proto directconnect -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-in -m layer7 --l7proto edonkey -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-in -m layer7 --l7proto fasttrack -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-in -m layer7 --l7proto gnutella -j MARK --set-mark $MARKPRIO4
iptables -t mangle -A adsl-in -m layer7 --l7proto tesla -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto unknown -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A adsl-in -m layer7 --l7proto ntp -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A adsl-in -m mark --mark 0 -j MARK --set-mark $MARKPRIO3
### Klasifikacija po gornjim pravilima ###
iptables -t mangle -A PREROUTING -i ppp0 -j adsl-in
iptables -t mangle -A POSTROUTING -o ppp0 -j adsl-out
iptables -t mangle -A INPUT -i ppp0 -j adsl-in
iptables -t mangle -A OUTPUT -o ppp0 -j adsl-out
## Predamo pakete IMQ device-ima ###
iptables -t mangle -A adsl-in -j IMQ --todev 1
iptables -t mangle -A adsl-out -j IMQ --todev 0
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
NAPOMENE: Ovaj firewall je potpuno otvoren, dakle, vrši samo traffic shaping, nema nikakve zaštite. Ako želite promijeniti prioritete pakete, dovoljno im je promijeniti $MARKPRIO vrijednost. Ako želite neki protokol u potpunosti zabraniti, umjesto -j MARK --set-mark jednostavno stavite -j DROP
ZAHVALE:
Nikola Špicar (Harry)
Franjo Posavec (Franz)
LINKOVI:
http://luxik.cdi.cz/~devik/qos/htb/
http://www.abclinuxu.cz/clanky/show/145278?varianta=print&noDiz
http://www.debianfordummies.org/wiki/index.php/Firewall_com_Layer7
http://gentoo-wiki.com/HOWTO_Packet_Shaping
Autor | Mišljenje |
---|---|
anrxc | Poslano: 31.08.2006 10:25:20 Izmjenjeno: 31.08.2006 10:25:20 |
Linux Master Aktivan od: 03.01.2005 Mjesto: Rijeka Broj postova: 310 |
Re: Traffic shaping sa p2p filterom - howto Dozvola da se prebaci na wiki? (http://www.linux.hr/modules/phpwiki/index.php/LinuxUpute)
|
|
|
Autor | Mišljenje |
---|---|
igustin | Poslano: 31.08.2006 12:39:41 Izmjenjeno: 31.08.2006 12:39:41 |
Padawan Aktivan od: 03.01.2005 Mjesto: Pazin Broj postova: 90 |
Re: Traffic shaping sa p2p filterom - howto Svaka čast na ovom prilogu, za što se često javljaju upiti na newsima i forumima.
|
Autor | Mišljenje |
---|---|
kreator | Poslano: 31.08.2006 13:07:14 Izmjenjeno: 31.08.2006 13:07:14 |
Upravo došao Aktivan od: 25.06.2005 Mjesto: Zagreb Broj postova: 14 |
Re: Traffic shaping sa p2p filterom - howto [saljem komentar po drugi ili cak treci put, buduci da mi je vec dva puta nestao zaredom nakon "posalji komentar" buttona]
Generalno je u redu. Imam sljedece komentare: - za apt-get nedostaje binutils paket bez kojeg kompiliranje u principu ne bi islo, kao i libc6-dev bez kojeg se nece skompilirati neki pomocni alati potrebni za kompiliranje kernela (gentable i jos nesto...) - ono sto se skida za L7 nisu "protokoli" vec regularni izrazi koji opisuju protokole, dakle bolji je izraz npr. "uzorci" (eng. pattern) - za kompiliranje i instalaciju kernela bih predlozio ne pozivati uzastopno make -- buduci da ce onda u slucaju greske u kompiliranju kernela svejedno pokusati kompilirati module bez potrebe.. vec pozivati vise targeta u jednoj make naredbi: make bzImage modules modules_install ili cak: make bzImage modules install modules_install - u iptables rulesetu postoji ozbiljna greska -- nakon -j MARK je potrebno ponoviti identicno pravilo sa -j RETURN odredistem buduci da MARK ne podrazumijeva povratak paketa iz tekuceg chaina u nadlezni chain. drugim rijecima, ovdje paketi bespotrebno prolaze po ostalim pravilima pokusavajuci se matchirati i time trose kernel time odnosno cpu. - IMHO ima previse l7 pravila koje su cak beskorisna i opet trose procesorsko vrijeme na matching: npr. DNS nece biti niti jedan drugi port osim 53/tcp i 53/udp u odredistu pa cemu onda koristiti L7 match? isto vrijedi za vnc, ftp, nntp, imap, pop3, smtp, ntp i jos poneki protokol koji koristi uvijek dobro znane UDP i TCP portove. ovo je na kraju prilican bloat. - nije mi jasna poanta ponavljanja pravila za upload i download? bio je dovoljan jedan te isti chain vezan na oba IMQ uredjaja. - za dobar QoS bi upload rate trebalo racunati sa 80% maksimalne teoretske propusnosti, kaze teorija. - ostalo je dobro, ali nisi ljude upozorio na overmatching koji nazalost L7 filteri rade. Generalno dobar posao, nista od ovih komentara nije pretjerano kriticno :) D. |
|