שרת לינוקס האק - כיצד מגבלת רוחב פס עם לינוקס, TC, ו iproute2!

אני לא זוכר פוסט מהיר על איך לכתוב תסריט איזון עומסים (או ויסות רוחב פס)?
ובכן, היום מצאתי עוד סקריפט מגניב להגביל את רוחב הפס. אני מאמין שאם זה יותר מסובך, אבל אם אתה צריך את זה, זה יכול להיות מאוד מועיל.
הנה דרך קוד Adamsinfo.com:
# 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
# הגדרת משתנים לאדם כמה "כיתות" כי נשתמש לעצב את מהירות ההעלאה פנימי, כלומר בעיצוב eth0
= "200 CLS1_RATE" # התנועה עדיפות גבוהה המחלקות 200kbit
= "300 CLS2_RATE" # ברמה בינונית יש עדיפות 300kbit
= "4500 CLS3_RATE" # גורפת בכיתה יש 4500kbit
# (נגדיר אילו יכול ללוות ממנו מאוחר יותר)
# הגדרת משתנים לאדם כמה "כיתות" כי נשתמש לעצב את מהירות ההורדה פנימי, כלומר בעיצוב eth1
= "1000 INT_CLS1_RATE" # עדיפות
= "4000 INT_CLS2_RATE" # גורפת
# Qdiscs מחק הנוכחי.
כלומר לנקות
$) (TC qdisc דל dev $ INT_IFACE) (שורש
$) (TC qdisc דל dev $ EXT_IFACE) (שורש
# צרף qdiscs השורש.
אנחנו משתמשים HTB כאן, חיבור זה qdisc לשני ממשקים.
אנחנו נעשה את זה התווית "1:0"
$) (TC qdisc להוסיף dev $) (INT_IFACE לטפל בשורש 1:0 htb
$) (TC qdisc להוסיף dev $) (EXT_IFACE לטפל בשורש 1:0 htb
# יצירת כיתות שורש, עם מקסימום גבולות מוגדרים
# אחד עבור eth1
$) (TC בכיתה להוסיף dev $ (1:0) INT_IFACE ההורה CLASSID 1:1 שער htb LIMIT ($ $)) (UNITS CEIL LIMIT ($ $)) (UNITS
# אחד עבור eth0
$) (TC בכיתה להוסיף dev $ (1:0) EXT_IFACE ההורה CLASSID 1:1 שער htb LIMIT ($ $)) (UNITS CEIL LIMIT ($ $)) (UNITS
# יצירת כיתות ילד
# אלה עבור הממשק הפנימי שלנו eth1
# יצירת המעמד המתאים: "1:2" ולתת לה גבול מוגדר מעל
$) (TC בכיתה להוסיף dev $ (1:1) INT_IFACE ההורה CLASSID 1:2 שער htb $ (INT_CLS1_RATE UNITS $ ()) (CEIL LIMIT $ $)) (UNITS
# יצירת המעמד המתאים: "1:3" ולתת לה גבול מוגדר מעל
$) (TC בכיתה להוסיף dev $ (1:1) INT_IFACE ההורה CLASSID 1:3 שער htb $ (INT_CLS2_RATE UNITS $ ()) (INT_CLS2_RATE CEIL $ $)) (UNITS
# EXT_IF (Upload) עכשיו.
אנחנו גם להגדיר מחלקות אשר יכול ללוות להלוות.
# מחלקה זו מובטחת 200kbit והוא יכול להתפוצץ עד 5000kbit אם זמין
$) (TC בכיתה להוסיף dev $ (1:1) EXT_IFACE ההורה CLASSID 1:2 שער htb $ (CLS1_RATE UNITS $ ()) (CEIL LIMIT $ $)) (UNITS
# מחלקה זו מובטחת 300kbit והוא יכול להתפוצץ עד 5000kbit-200kbit = 4800kbit אם זמין
$) (TC בכיתה להוסיף dev $ (1:1) EXT_IFACE ההורה 1:3 classid htb שער CLS2_RATE) ($ $) (UNITS CEIL הד `LIMIT $ () - $ () CLS1_RATE | bc` $) (UNITS
# 4500kbit מחלקה זו יכולה מובטחת והוא יכול לא פרצה בעבר (5000kbit-200kbit-300kbit = 4500kbit).
# כלומר גם אם התנועה שלנו גורפת משתגע, שתי כיתות מעל מובטח עדיין זמינות.
$) (TC בכיתה להוסיף dev $ (1:1) EXT_IFACE ההורה 1:4 classid htb שער CLS3_RATE) ($ $) (UNITS CEIL הד `LIMIT $ () - $ (CLS1_RATE) - $ (CLS2_RATE) | $` לפנה"ס () UNITS
הוסף pfifo #.
קרא עוד על pfifo במקום אחר, זה מחוץ לתחום של Howto זה.
$) (TC qdisc להוסיף Dev INT_IFACE $ (1:2) ההורה לטפל 12: להגביל pfifo 10
$) (TC qdisc להוסיף Dev INT_IFACE $ (1:3) ההורה לטפל 13: להגביל pfifo 10
$) (TC qdisc להוסיף Dev EXT_IFACE $ (1:2) ההורה לטפל 12: להגביל pfifo 10
$) (TC qdisc להוסיף Dev EXT_IFACE $ (1:3) ההורה לטפל 13: להגביל pfifo 10
$) (TC qdisc להוסיף Dev EXT_IFACE $ (1:4) ההורה לטפל 14: להגביל pfifo 10
# # # בוצע להוסיף את כל השיעורים, עכשיו להגדיר כמה כללים!
# # #
# INT_IFACE
# הערה כיוון 'שעון'.
התנועה כי יוצא של הממשק הפנימי שלנו לשרתים שלנו היא להוריד את המהירות של השרת, כך SOME_IMPORTANT_IP מוקצה לכיתה 1:2 להורדה.
$) (TC להוסיף מסנן dev $ INT_IFACE) (ההורה 1:0 prio פרוטוקול IP 1 u32 IP SOME_IMPORTANT_IP/32 התאמה DST flowid 1:2
$) (TC להוסיף מסנן dev $ INT_IFACE) (ההורה 1:0 prio פרוטוקול IP 1 u32 IP SOME_OTHER_IMPORTANT_IP/32 התאמה DST flowid 1:2
# כל שרתים אחרים הולך להוריד מהירות 1:3 - לא חשוב כמו מעל שני
$) (TC להוסיף מסנן dev $ INT_IFACE) (ההורה 1:0 prio פרוטוקול IP 1 u32 התאמה DST IP 0.0.0.0 / 0 flowid 1:3
# EXT_IFACE
תיעדוף בקשות שליטת #
$) (TC להוסיף מסנן dev $ EXT_IFACE) (ההורה 1:0 prio IP פרוטוקול IP התאמה 1 u32 src IMPORTANT_IP/32 ספורט התאמה IP 53 0xFFFF flowid 1:2
# SSH חשוב
$) (TC להוסיף מסנן dev $ EXT_IFACE) (ההורה 1:0 prio IP פרוטוקול IP התאמה 1 u32 src IMPORTANT_IP/32 ספורט התאמה IP 22 0xFFFF flowid 1:2
# שרת SMTP של Exim שלנו חשוב מדי
$) (TC להוסיף מסנן dev $ EXT_IFACE) (ההורה 1:0 prio IP פרוטוקול IP התאמה 1 u32 src 217.10.156.197/32 ספורט התאמה IP 25 0xFFFF flowid 1:3
# בתפזורת
$) (TC להוסיף מסנן dev $ EXT_IFACE) (ההורה 1:0 prio פרוטוקול IP flowid 1 u32 src התאמה IP 0.0.0.0 / 0 1:4






