Linux Server Hack - Kako Bandwidth limit sa Linuxom, TC, i Iproute2!

by max on četvrtak 25 rujan, 2008

Sjetite sam brzo post o tome kako pisati uravnoteženje opterećenja original (ili propusnost proporcionalnost)?

Pa, danas sam našao još jedan super skripta za ograničavanja propusnosti. Vjerujem da ovaj neki, ako više komplicirano, ali ako vam je potrebna, to bi moglo biti jako korisna.

Evo kod preko Adamsinfo.com:


# Set neke varijable
#! / bin / bash
EXT_IFACE = "eth0"
INT_IFACE = "eth1"
TC = "TC"
JEDINICA = "kbit"
Line = "10.000" # ext maksimalna brzina veze
GRANICA = "5000" # maksimum da ćemo dopustiti


# Set neke varijable za pojedine "klase" koje ćemo koristiti u obliku interne upload brzina, tj. oblikovanje eth0
CLS1_RATE = "200" # High Priority promet klasa je 200kbit
CLS2_RATE = "300" # Srednja klasa Prioritet je 300kbit
CLS3_RATE = "4.500" # Bulk klasa ima 4500kbit
# (Ćemo postaviti oni koji mogu posuditi iz koje kasnije)

# Set neke varijable za pojedine "klase" koje ćemo koristiti u obliku interne skidati podatke brzina, tj. oblikovanje eth1
INT_CLS1_RATE = "1000" # Prioritet
INT_CLS2_RATE = "4000" # Bulk

# Izbriši trenutnu qdiscs. tj. očistiti
$ TC () qdisc del dev $ () INT_IFACE root
$ TC () qdisc del dev $ () EXT_IFACE root

# Priloži korijen qdiscs. Mi koristimo HTB ovdje, i pridaje ovom qdisc za oba sučelja. Mi ćemo ga oznaka "1:0"
$ TC () qdisc add dev $ () INT_IFACE root handle 1:0 HTB
$ TC () qdisc add dev $ () EXT_IFACE root handle 1:0 HTB

# Create korijen klase, s maksimalnim granicama definiranim
# Jedan za eth1
() $ TC class add dev $ () INT_IFACE roditelj 1:0 classid 1:1 HTB stopa LIMIT $ ($) () JEDINICE staviti strop LIMIT $ () $ () UNITS
# Jedan za eth0
() $ TC class add dev $ () EXT_IFACE parent 1:0 classid 1:1 HTB stopa LIMIT $ ($) () JEDINICE staviti strop LIMIT $ () $ () UNITS

# Create dijete razredi
# To su za naše unutarnje sučelje eth1
# Stvaranje klasa s natpisom "1:2" i dati mu granica je gore utvrđeno
() $ TC class add dev $ () INT_IFACE parent 1:1 classid 1:2 HTB stopa $ (INT_CLS1_RATE) $ () JEDINICE staviti strop LIMIT $ () $ () UNITS
# Stvaranje klasa s natpisom "1:3" i dati mu granica je gore utvrđeno
() $ TC class add dev $ () INT_IFACE parent 1:1 classid 1:3 HTB stopa $ (INT_CLS2_RATE) $ (JEDINICE staviti strop) $ (INT_CLS2_RATE) $ () UNITS

# EXT_IF (upload) sada. Također smo postavili koja klasa može posuditi i posuditi.
# Ova klasa je zajamčena 200kbit i može puknuti do 5000kbit ako je dostupna
() $ TC class add dev $ () EXT_IFACE parent 1:1 classid 1:2 HTB stopa $ (CLS1_RATE) $ () JEDINICE staviti strop LIMIT $ () $ () UNITS
# Ova klasa je zajamčena 300kbit i može puknuti do 5000kbit-200kbit = 4800kbit ako je dostupna
() $ TC class add dev $ () EXT_IFACE parent 1:1 classid 1:3 HTB rate $ (CLS2_RATE) $ () JEDINICE staviti strop `echo $ (LIMIT) - ($ CLS1_RATE) | bc` $ () UNITS
# Ovaj razred može se 4500kbit zajamčena i ne može rasprsnuti prošlosti (5000kbit-200kbit-300kbit = 4500kbit).
# Ie čak i ako promet ide većina naše lude, dvije klase iznad su još uvijek zajamčena dostupnost.
() $ TC class add dev $ () EXT_IFACE parent 1:1 classid 1:4 HTB stopa $ (CLS3_RATE) $ () JEDINICE staviti strop `echo $ (LIMIT) - ($ CLS1_RATE) - ($ CLS2_RATE) | bc` $ () JEDINICE

# Dodati pfifo. Pročitajte više o pfifo drugdje, to je izvan opsega ovog HOWTO.
$ TC () qdisc add dev $ () INT_IFACE parent 1:2 handle 12: pfifo limita 10
$ TC () qdisc add dev $ () INT_IFACE parent 1:3 handle 13: pfifo limita 10
$ TC () qdisc add dev $ () EXT_IFACE parent 1:2 handle 12: pfifo limita 10
$ TC () qdisc add dev $ () EXT_IFACE parent 1:3 handle 13: pfifo limita 10
$ TC () qdisc add dev $ () EXT_IFACE parent 1:4 handle 14: pfifo limita 10

# # # Dodajući Gotovo sve klase, sada postaviti neka pravila! # # #
# INT_IFACE
# Napomena "dst 'smjeru.Promet koji ide izvan naše unutarnje sučelje i na našim serverima je iz poslužitelja skidati podatke brzina, tako da SOME_IMPORTANT_IP se raspoređuje na 1:2 klasi za download.
$ TC) (filter add dev $ () INT_IFACE parent 1:0 protocol ip prio 1 u32 utakmicu ip dst SOME_IMPORTANT_IP/32 flowid 1:2
$ TC) (filter add dev $ () INT_IFACE parent 1:0 protocol ip prio 1 u32 utakmicu ip dst SOME_OTHER_IMPORTANT_IP/32 flowid 1:2
# Sve ostale servere skidati podatke brzina ide do 1:3 - nije važno kao iznad dva
$ TC) (filter add dev $ () INT_IFACE parent 1:0 protocol ip prio 1 u32 utakmicu ip dst 0.0.0.0 / 0 flowid 1:3

# EXT_IFACE
# Prioritete DNS zahtjevi
$ TC) (filter add dev $ () EXT_IFACE parent 1:0 protocol ip prio 1 u32 utakmicu ip src IMPORTANT_IP/32 utakmicu ip sportske 53 0xffff flowid 1:2
# SSH je važno
$ TC) (filter add dev $ () EXT_IFACE parent 1:0 protocol ip prio 1 u32 utakmicu ip src IMPORTANT_IP/32 utakmicu ip sportske 22 0xffff flowid 1:2
# Naša Exim SMTP poslužitelj je bitno previše
$ TC) (filter add dev $ () EXT_IFACE parent 1:0 protocol ip prio 1 u32 utakmicu ip src 217.10.156.197/32 utakmicu ip sportske 25 0xffff flowid 1:3
# Bulk
$ TC) (filter add dev $ () EXT_IFACE parent 1:0 protocol ip prio 1 u32 utakmicu ip 0.0.0.0 src / 0 flowid 1:4

Mjera

1 Star 2 Stars 3 Zvijezda 4 Stars 5 Stars
Loading ... Loading ...

Spremi $ 15 off naloga u iznosu od $ 75 + na HP Male Store!
oglas oglas
oglas oglas


20.000 GPS POI's $ 9,99

Related News and Resources

Ostale novosti i zanimljivosti From Our Friends

  • Yaron
    Bok,
    Velika objašnjava, to radi jako dobro:).
    Imam pitanje:
    Što će se dogoditi potoke koji već postoje? će se filtrirati ih brojati?
    (od sporta i dport je već promijenio, prije primjene filtra)

    Na primjer:
    $ TC) (filter add dev $ () EXT_IFACE parent 1:0 protocol ip prio 1 u32 utakmicu ip src 217.10.156.197/32 utakmicu ip sportske 25 0xffff flowid 1:3

    luka izvor ne može biti 25 za vezu koja je već započela.
Blog komentari powered by Disqus
Ako vam se sviđa ovaj post onda molimo pretplatiti na moje pune RSS feed.

Također, možete se pretplatiti putem e-maila ispunjavanjem svoje ime i e-mail ispod:

Ime: E-mail:


Imaš novi hack, DIY, HOWTO, ili gadget? Savjet nas ovdje.

Pokušajte Goohack pronaći nove Hack:


Featured Sites Od Zedomax Blog Mreža