Linux Serverio Hack - Kaip apriboti Bandwidth su Linux, TC, ir iproute2!

Įsiminti aš greitai paštu, kaip rašyti apkrovos balansavimo scenarijų (ar greičio ribojimo)?
Na, šiandien aš rasiu kitą cool scenarijų apriboti pralaidumo. Manau, kad jei vienas sudėtingesnis, bet jei reikia, ji gali būti labai naudinga.
Štai per Adamsinfo.com kodas:
# Set some variables
#!/bin/bash
EXT_IFACE=”eth0″
INT_IFACE=”eth1″
TC=”tc”
UNITS=”kbit”
LINE=”10000″ #maximum ext link speed
LIMIT=”5000″ #maximum that we'll allow
# Nustatyti kai kurių atskirų "klasės kintamųjų", kad mes naudosime formuoti vidaus upload greitis, ty formuojant eth0
CLS1_RATE = "200" # aukšto prioriteto eismo klasėje yra 200kbit
CLS2_RATE = "300" # vidutinis prioritetas klasė 300kbit
CLS3_RATE = "4.500" # Bulk klasė 4500kbit
# (Mes nustatyti kurie iš jų galima skolintis, iš kurių vėliau)
# Nustatyti kai kurių atskirų "klasės kintamųjų", kad mes naudosime formuoti vidaus Download Speed, ty formuojant eth1
INT_CLS1_RATE = "1000" # Prioritetas
INT_CLS2_RATE = "4000" # Bulk
# Delete current qdiscs.
ty išvalyti
$ (TC) qdisc del dev) $ (INT_IFACE root
$ (TC) qdisc del dev) $ (EXT_IFACE root
# Prisegti root qdiscs.
Naudojame HTB čia, ir prideda šį qdisc abi sąsajos.
Mes etiketė ją "1:0"
$ (TC) qdisc Pridėti dev) $ (INT_IFACE šaknies rankena 1:0 HTB
$ (TC) qdisc Pridėti dev) $ (EXT_IFACE šaknies rankena 1:0 HTB
# Sukurti pagrindines klases, kurių didžiausias ribas nustato
Už eth1 Vienas #
$ (TC klasė Pridėti dev) $ (INT_IFACE) tėvų 1:0 CLASSID 1:1 HTB norma $ (LIMIT) $ (VIENETAI Stropować) $ (LIMIT) $ (VIENETAI)
Vienas eth0 #
$ (TC klasė Pridėti dev) $ (EXT_IFACE) tėvų 1:0 CLASSID 1:1 HTB norma $ (LIMIT) $ (VIENETAI Stropować) $ (LIMIT) $ (VIENETAI)
# Sukurti vaikas klases
# Tai yra mūsų vidaus sąsają eth1
# Sukurti klasė paženklintas "1:2" ir suteikia jai riba apibrėžta pirmiau
$ (TC klasė Pridėti dev) $ (INT_IFACE) tėvų 1:1 CLASSID 1:2 HTB norma $ (INT_CLS1_RATE) $ (VIENETAI Stropować) $ (LIMIT) $ (VIENETAI)
# Sukurti klasė paženklintas "1:3" ir suteikia jai riba apibrėžta pirmiau
$ (TC klasė Pridėti dev) $ (INT_IFACE) tėvų 1:1 CLASSID 1:3 HTB norma $ (INT_CLS2_RATE) $ (VIENETAI Stropować) $ (INT_CLS2_RATE) $ (VIENETAI)
# EXT_IF (upload) dabar.
Mes taip pat nustatyti, kurioms klasėms, gali skolintis ir skolinti.
# Ši klasė yra garantuotas 200kbit ir gali pralaimėti su 5000kbit jei yra
$ (TC klasė Pridėti dev) $ (EXT_IFACE) tėvų 1:1 CLASSID 1:2 HTB norma $ (CLS1_RATE) $ (VIENETAI Stropować) $ (LIMIT) $ (VIENETAI)
# Ši klasė yra garantuotas 300kbit ir gali pralaimėti su 5000kbit-200kbit = 4800kbit jei yra
$ (TC klasė Pridėti dev) $ (EXT_IFACE) tėvų 1:1 CLASSID 1:3 HTB norma $ (CLS2_RATE) $ (VIENETAI) Stropować `echo $ (LIMIT) - $ (CLS1_RATE) | BC" $ (VIENETAI)
# Ši klasė garantuoja 4500kbit ir negali sprogo anksčiau ji (5000kbit-200kbit-300kbit = 4500kbit).
# Ty net jei mūsų didžioji eismo eina crazy, dvi klasės pirmiau dar garantuojamas laisvas.
$ (TC klasė Pridėti dev) $ (EXT_IFACE) tėvų 1:1 CLASSID 1:4 HTB norma $ (CLS3_RATE) $ (VIENETAI) Stropować `echo $ (LIMIT) - $ (CLS1_RATE) - $ (CLS2_RATE) | BC" $ () VIENETAI
# Pridėti pfifo.
Skaityti daugiau apie pfifo kitur, tai ne šio HOWTO sritį.
$ (TC) qdisc Pridėti dev) $ (INT_IFACE tėvų 1:2 rankena 12: pfifo apriboti 10
$ (TC) qdisc Pridėti dev) $ (INT_IFACE tėvų 1:3 rankena 13: pfifo apriboti 10
$ (TC) qdisc Pridėti dev) $ (EXT_IFACE tėvų 1:2 rankena 12: pfifo apriboti 10
$ (TC) qdisc Pridėti dev) $ (EXT_IFACE tėvų 1:3 rankena 13: pfifo apriboti 10
$ (TC) qdisc Pridėti dev) $ (EXT_IFACE tėvų 1:4 rankena 14: pfifo apriboti 10
# # # Priimta pridedant visas klases, dabar steigti tam tikros taisyklės!
# # #
# INT_IFACE
Pastabos # "DST" kryptis.
Srautą, kuris eina iš mūsų vidaus sąsaja ir mūsų serveriai yra iš serverio Download Speed, todėl SOME_IMPORTANT_IP skiriama iki 1:2 klasės atsisiųsti.
$ (TC filtras Pridėti dev) $ (INT_IFACE) tėvų 1:0 protokolas IP prio 1 u32 match ip dst SOME_IMPORTANT_IP/32 flowid 1:2
$ (TC filtras Pridėti dev) $ (INT_IFACE) tėvų 1:0 protokolas IP prio 1 u32 match ip dst SOME_OTHER_IMPORTANT_IP/32 flowid 1:2
# Visi kiti serveriai atsisiuntimo greitis eina iki 1:3 - ne tokia pat svarbi kaip dviejų pirmiau
$ (TC filtras Pridėti dev) $ (INT_IFACE) tėvų 1:0 protokolas IP prio 1 u32 match ip dst 0.0.0.0 / 0 flowid 1:3
# EXT_IFACE
# Prioritetą DNS užklausas
$ (TC filtras Pridėti dev) $ (EXT_IFACE) tėvų 1:0 protokolas IP prio 1 u32 match ip src IMPORTANT_IP/32 rungtynės IP sportas 53 0xffff flowid 1:2
# SSH svarbu
$ (TC filtras Pridėti dev) $ (EXT_IFACE) tėvų 1:0 protokolas IP prio 1 u32 match ip src IMPORTANT_IP/32 rungtynės IP sportas 22 0xffff flowid 1:2
# Mūsų EXIM SMTP serveris yra labai svarbus
$ (TC filtras Pridėti dev) $ (EXT_IFACE) tėvų 1:0 protokolas IP prio 1 u32 match ip src 217.10.156.197/32 rungtynės IP sportas 25 0xffff flowid 1:3
# Urmu
$ (TC filtras Pridėti dev) $ (EXT_IFACE) tėvų 1:0 protokolas IP prio 1 u32 match ip src 0.0.0.0 / 0 flowid 1:4



