發新話題
打印

簡單做 QOS

簡單做 QOS

建議存放位置及檔名:/usr/local/bin/qos.sh
建議權限:711
擁有者:root:root

在 /etc/rc.d/rc.local 新增一行
/usr/local/bin/qos.sh
以便一開機即執行
複製內容到剪貼板
代碼:
#!/bin/sh

# #符號後面為註解

# ==============================================================================
# 變數設定區
# ==============================================================================

# 設定對外網卡介面名稱
EXT_IF="eth0"

# 設定網段
# 網段1 的優先權比較高,網段2 的極速會被限制在 384kbps (48KB/S)

SUBNET_1="10.0.0.x/27"
SUBNET_2="192.168.0.x/27"




# ==============================================================================
# 上傳方向
# ==============================================================================
# 清除對外網卡所有佇列規則
tc qdisc del dev $EXT_IF root 2>/dev/null

# 定義最頂層的佇列規則
tc qdisc add dev $EXT_IF root handle 10: htb default 20

# 定義第一層根部類別  (rate 與 ceil 設一樣,是上傳最大頻寬,單位:KB/s)
tc class add dev $EXT_IF parent 10: classid 10:1 htb rate 64kbps ceil 64kbps

# 定義第二層葉類別  (rate 是保證頻寬,ceil 是最大限制頻寬,prio 是優先權,0最高)
tc class add dev $EXT_IF parent 10:1 classid 10:10 htb rate 4kbps ceil 56kbps prio 0
tc class add dev $EXT_IF parent 10:1 classid 10:20 htb rate 4kbps ceil 48kbps prio 1


# 定義各葉類別的佇列規則
tc qdisc add dev $EXT_IF parent 10:10 handle 101: pfifo
tc qdisc add dev $EXT_IF parent 10:20 handle 102: pfifo

# 設定過濾器
tc filter add dev $EXT_IF parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev $EXT_IF parent 10: protocol ip prio 100 handle 20 fw classid 10:20


# ==============================================================================
# iptables 貼標籤
# ==============================================================================
# 符合規則的封包,就會被貼上標籤
# 過濾器若偵測到標籤,會送到指定的 QoS 類別,進行限速

iptables -F -t mangle

# uploads
iptables -t mangle -A PREROUTING -s $SUBNET_1 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s $SUBNET_2 -j MARK --set-mark 20


echo "QoS set done"
使用方法:
--------------------------
修改其中的變數設定值
# 設定對外網卡介面名稱
EXT_IF="eth0"

# 設定網段
# 網段1 的優先權比較高,網段2 的極速會被限制在 384kbps (48KB/S)

SUBNET_1="10.0.0.x/27"
SUBNET_2="192.168.0.x/27"

填入適當的值

打 qos.sh,即可執行
(前提:要放 /usr/local/bin,權限 711)

這邊是假設你的上傳為 512K
若不是請自行修改上傳的數值,和要流量限制的數值

取自酷學園網站

TOP

發新話題