Nefunguje HTB

Stepan Cirkl cirkl na ccu.cz
Středa Červenec 14 23:26:23 CEST 2004


Dobry den,

takze jestli dobre chapu situaci, tak nasleduje celkem podrobny popis.
HTP.init neumim, ten neresim. Doufam, ze tam nebude nekde naka chybka, ale
dnesek bel celkem narocny... Kazdopadne byste mel z toho aplespon pochopit
princip.

Mate router a v men ctyri sitove karty. Napriklad:

Eth0  - internet (ma verejnou IP adresu)
Eth1  - vnitrni sit 1  (192.168.1.1/24)
Eth2  - vnitrni sit 2  (192.168.2.1/24)
Eth3  - vnitrni sit 3  (192.168.3.1/24)

a na jednotlive sitove karty chcete udelat shape na maximalne 512kbit. Pri
pristupu do Internetu se z vnitrnich siti na routeru aplikuje maskarada.

Pravidla:
1.
Omezovat muzete jen na rozhrani, pres ktere data odchazi a jen v odchozim smeru

2.
Paket, ktery prosel maskaradou ma prepsanou SRC IP adresu, tj. neda se
podle ni omezovat.

Na zaklade techto pravidel tedy:

1.
Potrebuji zabrzdit na eth1-3 odchozi trafick do prislusne site na 512Kbit a
paket vidim bez modifikace.

Staci na dana zarizeni udelat pravidla, jenz vsechen provoz do dane site
zabrzdi na 512kit, tj. vytvorim si na to tridu a budu je tam posilat.
Predpokladam, ze provoz z ostatnich siti brzdit nechcete, takze pakety z
ostatnich siti musime poslat do jine tridy. Rekne ze to ted budu omezovat
na 10Mbit/s. To si upravte.

Takzke defakto potrebuji dve tridy a jednu frontu. Do  tridy 1 budu posilat
provoz z ostatnich lokalnich siti a do tridy 2 z internetu. Tridu jedna
budu plnit pomoci U32 filtru a zbytek (default) jde do tridy 2.

tc qdisc add dev eth1 root handle 1: htb default 2
tc class add dev eth1 parent 1: classid 1:1 htb rate 10Mbit
tc class add dev eth1 parent 1: classid 1:1 htb rate 512kbit
tc  filter add dev eth1 protocol ip parent 1:0 u32 match ip src
    \192.168.2.0/24 flowid 1:1
tc  filter add dev eth1 protocol ip parent 1:0 u32 match ip src
    \192.168.3.0/24 flowid 1:1

na ostatnich rozhranich do vnitrni site to bude analogicke.



2.
Potrebujeme pribrzdit odchozi trafic do Internetu. To musime delat na eth0.
Hacek je v tom, ze pakety jiz predtim prosly pres maskaradu a podle
zdrojove IP adresy nepozname, z ktere site pochazi, tj. do ktere fronty je
mame zaradit.
Tohle obejdem pomoci jednoducheho triku, kdy si pakety oznackujeme pomoci
iptables driv, nez je iptables prezenou pres maskaradu.
K brzdeni budeme potrebovat tri tridy, pro kazde rozhrani jednu a
rozhazovat je budeme pomoci filtru fw.

iptables -t mangle -A PREROUTING -i eth1 -p all -s 192.168.1.0/24 -j MARK
      \--set-mark 1
iptables -t mangle -A PREROUTING -i eth2 -p all -s 192.168.2.0/24 -j MARK
      \--set-mark 2
iptables -t mangle -A PREROUTING -i eth3 -p all -s 192.168.3.0/24 -j MARK
      \--set-mark 3

tc qdisc add dev eth0 root handle 5: htb
tc class add dev eth0 parent 5: classid 5:1 htb rate 512kbit
tc class add dev eth0 parent 5: classid 5:2 htb rate 512kbit
tc class add dev eth0 parent 5: classid 5:3 htb rate 512kbit

tc filter add dev eth0 protocol ip parent 5:0 handle 1 fw classid 5:1
tc filter add dev eth0 protocol ip parent 5:0 handle 2 fw classid 5:2
tc filter add dev eth0 protocol ip parent 5:0 handle 3 fw classid 5:3


a to by melo byt. Takhle zgarantujete kazde vnitrni siti 512Kbit z toho
2Mbitu. Pokud  byste tam chtel delat pujcovani nevyuzite rychlosti, tak s
prichzim smerem z interentu to bude problem. Mam pocit, ze se to dela pres
IMQ, nebo jak se  to virtualni rozhrani jmenuje, ale v to uz Vam neporadim.

s pozdravem


Stepan Cirkl
IT consultant
CC unLimited, v.o.s.

email: cirkl na ccu.cz
web: http://www.ccu.cz
icq: #31789939
mobil: +420 604 968 090



 >> Takze tohle jsem celou tu dobu prehlizel/nevidel. Mohl by jste mi
 >> poradit, jak teda jednoduse rozdelit trafic na rozhrani eth1 (net) na
 >> kterem je maskarada?
 >> V routeru jsou potom jeste dalsi 3 rozhrani, ze kterych jde provoz do
 >> netu. Mel bych to teda udelat tak, ze bych musel pro vsechna tri
 >> rozhrani rozdelovat trafic zvlast? Moje predstava byla (a vsechno co sem
 >> cetl), ze veskery provoz staci rozdelit na jednom rozhrani (do netu)...
 >> Takhle se mi to znacne komplikuje...
 >> Diky aspon za tohle nakopnuti...
 >>
 >> S pozdravem Michal Koblizek


Další informace o konferenci Linux