• yam天空
  • 天空部落
  • 新聞
  • 登入 註冊 網誌隨便逛
  • 加入天空部落
  • 讓我們一起搖滾吧!

網誌 相簿 影音 PK吧! Honda嬉遊趣 設計裝潢‧宅樂活 大買家最便宜
即時新聞 影音新聞 新聞專輯 政治新聞 財經新聞 娛樂新聞 運動新聞 兩岸新聞 科技新聞
管理介面 發表網誌 發表日記 上傳相片 上傳影音 管理留言
推薦這個部落格: 1

Wesley@Net.

:: Now is better than never. & Learning by doing. ::

日記 |網誌 |相簿 |留言板
在 linux 環境下藉由 ffmpeg 指令來使用 webcam 錄影功能 | 主頁 | smbd is not running ... failed. But nmbd is running.
June 16, 2009
debian 內使用頻寬管理 - shaperd以文找文
wesley1981 在天空部落發表於00:42:02 | ‧Linux
鼓勵此網誌:0 


最近因為發現室友在下載某些 "頻寬大量使用的東西" ,

但是我又不能直接把他網路線拔掉,所以只好自己想個

辦法拿自己的 Eeebox 來裝個頻寬管理套件吧。

以下就是我亂玩的設定:


測試環境圖示:


1. 安裝 shaperd 套件

‧apt-get install shaperd

2. 設定頻寬分配規則 shaperd.conf

‧vi /etc/shaperd/shaperd.conf
==========================================================
log level = warning
packet forwarding = ipq
daemon = yes
pidfile = /var/run/shaperd.pid

class A_up {
        bandwidth = 128 kbit/s
        ipv4 classifier out_if=ppp+ saddr=192.168.100.254
        borrow from B_up
        queue limits = 0 kb 150 packets
}

class A_down {
        bandwidth = 1024 kbit/s
        ipv4 classifier inp_if=ppp+ daddr=192.168.100.254
        borrow from B_down
        queue limits = 0 kb 150 packets
}

class B_up {
        bandwidth = 128 kbit/s
        ipv4 classifier out_if=ppp+ saddr=192.168.100.253
        borrow from A_up
        queue limits = 0 kb 150 packets
}

class B_down {
        bandwidth = 1024 kbit/s
        ipv4 classifier inp_if=ppp+ daddr=192.168.100.253
        borrow from A_down
        queue limits = 0 kb 150 packets
}
==========================================================

3. 設定 iptables with shaperd

3.1.  vi firewall_with_shaperd.sh (script 是依自己需求修改 sample 檔而來)
==========================================================
#!/bin/bash

IPT="/sbin/iptables"

# clean up previous stuff
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t filter -F
$IPT -X SHAPE

# create the "shape" chain
$IPT -N SHAPE
$IPT -I SHAPE -j QUEUE

# system policies & security stuff
$IPT -P FORWARD DROP
$IPT -P INPUT DROP

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i eth1 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp -i ppp0 --dport 22 -j ACCEPT
$IPT -A INPUT -p udp -i ppp0 --dport 53 -j ACCEPT
$IPT -A INPUT -p tcp -i ppp0 --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp -i ppp0 --dport 443 -j ACCEPT
$IPT -A INPUT -p icmp -i ppp0 -j ACCEPT

# this is a workaround for some broken routers out there
$IPT -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss \
--mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

# masq'd hosts: A (192.168.100.254), B (192.168.100.253)
$IPT -t nat -A POSTROUTING -s 192.168.100.0/24 -o ppp0 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s 192.168.104.0/24 -o ppp0 -j MASQUERADE

# shape (upstream) the masqueraded hosts (192.168.100.253 & 192.168.100.254)
$IPT -A FORWARD -s 192.168.100.254/32 -i eth1 -o ppp0 -j SHAPE
$IPT -A FORWARD -s 192.168.100.253/32 -i eth1 -o ppp0 -j SHAPE

# shape (downstream) the masqueraded hosts
(192.168.100.253 & 192.168.100.254, "tcp" only)
$IPT -A FORWARD -p tcp -d 192.168.100.254/32 -o eth1 -i ppp0 -m state \
        --state ESTABLISHED,RELATED -j SHAPE
$IPT -A FORWARD -p tcp -d 192.168.100.253/32 -o eth1 -i ppp0 -m state \
        --state ESTABLISHED,RELATED -j SHAPE
$IPT -A FORWARD -p tcp -d 192.168.0.252/32 -o eth1 -i ppp0 -m state \
        --state ESTABLISHED,RELATED -j SHAPE
$IPT -A FORWARD -p tcp -d 192.168.0.251/32 -o eth1 -i ppp0 -m state \
        --state ESTABLISHED,RELATED -j SHAPE

# don't shape the rest of the (downstream) traffic (it makes no sense)
$IPT -A FORWARD -d 192.168.100.254/32 -o eth1 -i ppp0 -m state \
        --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -d 192.168.100.253/32 -o eth1 -i ppp0 -m state \
        --state ESTABLISHED,RELATED -j ACCEPT

# enable ipv4 packet forwarding
echo "1" >/proc/sys/net/ipv4/ip_forward
==========================================================

3.2.  chmod u+x firewall_with_shaperd.sh

4. 啟動 shaperd 服務 & 執行 firewall_with_shaperd.sh
‧/etc/init.d/shaperd start
‧./firewall_with_shaperd.sh

5. 後端測試下載檔案
‧於A Box 使用 flashget (分割下載設10) 下載檔案,但下載限速仍未降於1024Kb(128KB) 左右,
    此時是因為在 shaperd.conf 有設定 borrow from B_down ( B Box 目前是仍未開機狀態),
    所以會造成限速上仍可以使用 B Box 所能用的頻寬。一但我將 borrow from B_down 刪掉,
    並且再一次重新下載,此時會發現速度已降於1024Kb(128KB) 左右。

P.S.
在 firewall_with_shaperd.sh 中有一行設定 tcpmss 極為重要,
因為若未加上此設定,那麼
後端的 A,B Box 就無法使用 MSN 了。
至於為什麼呢? 下面的 Reference 中有提到此設定。



Reference:
/usr/share/doc/shaperd/README.gz
http://linux.tnc.edu.tw/techdoc/b2dfw_intro/x1057.html
http://bbs.itzero.com/viewthread.php?tid=98076
http://phorum.study-area.org/index.php?action=printpage;topic=9518.0

留言 (0) | 引用 (0) | 人氣 () | 轉寄
此分類上一篇:在 linux 環境下藉由 ffmpeg 指令來使用 webcam 錄影功能 | 主頁 | 此分類下一篇:smbd is not running ... failed. But nmbd is running.
引用 (你可以針對此文寫一篇屬於自己的blog/想法,並給作者一個通告)
引用
留言 (0筆)
發表你的留言 (字數限制 最多 2000 個中文字)
私密留言: 是 否
Name:





是 否
內容:
系統公告
個人檔案
個人圖檔
ID:wesley1981
暱稱:Wesley
  • 訂閱 |
    • 我要訂閱此部落格的
    • 日記
    • 網誌
    • 相簿
  • 好友 |
    • 好友功能
    • 觀看好友列表
    • 觀看人緣列表
  • 人氣 |
  • 簡介 

Creative Commons License
本著作由Wesley Shen製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款釋出。
人氣指數
當日人次:
累積人次:
wesley1981的最新的記事
  • linux how...
  • ppstream...
  • backup/rest...
  • How to...
  • 在 linux...
記事分類
  • ‧Linux (45)
  • ‧Mac (1)
  • ‧Windows (4)
  • ‧Networking (5)
  • ‧Scripts (2)
  • ‧Misc (5)
每月記事
  • Dec 2009(1)
  • Nov 2009(2)
  • Oct 2009(1)
  • Jun 2009(3)
  • May 2009(2)
  • Apr 2009(3)
  • Mar 2009(2)
  • Feb 2009(3)
  • Jan 2009(2)
  • Dec 2008(1)
  • Sep 2008(4)
  • Aug 2008(6)
  • Jul 2008(1)
  • Mar 2008(1)
  • Dec 2007(1)
  • May 2007(1)
  • Jan 2007(3)
  • Dec 2006(8)
  • Nov 2006(3)
  • Oct 2006(11)
  • Sep 2006(9)
搜尋欄位
搜尋:
RSS 訂閱
RSS2
ATOM
贊助商
其它資訊
本部落所刊登之內容,皆由作者個人所提供,不代表 yam 天空 本身立場。
POWERED BY
POWERED BY 天空部落
會員登入│免費註冊