PCZONE 討論區

PCZONE 討論區 (https://www.pczone.com.tw/vbb3/)
-   -- 網 路 技 術 版 (https://www.pczone.com.tw/vbb3/forum/29/)
-   -   【教學】Coyote Linux 頻寬管制 (QoS) 設定教學 (https://www.pczone.com.tw/vbb3/thread/29/116666/)

nsh1204 2006-03-09 01:19 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=linux_xp]建議可以改用 2.24 版看看,至少我用 2.24版是沒問題的

2.24版 是美商 Coyote Linux 推出的官方版

2.25~之後的版本,是巴西民間組織接手後,推出的版本
我記得他們網頁,在版本後面,有寫 beta (測試)這個字樣
換言之,那個並不是 stable 穩定版本...[/QUOTE]

網管上會有非常嚴格之政策
只准上 http,其餘通通封鎖,甚至 web-ftp 之類的都必須管制
以防員工以任何手段,偷傳商業機密出去

請問一下我是使用2.26版的,要如何全部鎖住 開放局部 ?謝謝:)

nsh1204 2006-03-09 01:55 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=linux_xp]要用 BrazilFW 2.26版

2.26版,支援 DMZ,需三片網卡

第一片網卡:對內 NAT
第二片網卡:對外
第三片網卡:DMZ 專用

主機板如有內建網卡,插兩片即可,共三個實體網卡

ATU-R → (對外孔) BrazilFW 2.26 (DMZ 孔) → 交換...[/QUOTE]
1.請問一下 如果我的架設方式為
adsl---BrazilFW 2.26-----bm200----hub---用戶
這樣可以嗎?想用軟體路由器先過濾一些網站(全部封鎖 開放局部 不知如何設定???),再使用bm200控管頻寬?可行嗎?

2.我使用pppoe 2m/256 有申請固定ip 請問在開機片設定上使用者名稱是要輸入固定ip還是連線帳號?
謝謝

jastry 2006-03-18 01:18 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
如果是已經使用了英文的Coyote Linux有辦法將它中文化嗎?

因為是使用別人製作出來的,現今要管理有些傷神QQ

linux_xp 2006-03-18 01:00 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=jastry]如果是已經使用了英文的Coyote Linux有辦法將它中文化嗎?

因為是使用別人製作出來的,現今要管理有些傷神QQ[/QUOTE]

是有方法可以直接中文化
可參考大陸那邊的「軟件路由論壇」Linux版的精華區
[url]http://www.routerclub.com/index.php[/url]

但是那個方法很麻煩,還不如重新製作比較快
重新製作一片新的 Coyote 開機片,應該不用三分鐘
安裝到電子硬碟或硬碟,應該也不用5分鐘

建議使用 2.6 stable版,可免費下載及使用
[url]http://www.brazilfw.com.br/forum/dload.php?sid=5b442db65a35f654870f9353ba7fe1d0[/url]

ppp099 2006-04-04 07:54 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
請問要如何測試,才能知到 QOS 是否有運作 ...???

linux_xp 2006-04-04 08:55 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=ppp099]請問要如何測試,才能知到 QOS 是否有運作 ...???[/QUOTE]

QoS script 執行後,若沒有出現任何錯誤訊息,就是正確的

接著可實際連線來測試

下載方面:
下載學術網路的東西,例如各大學 FTP 的 ISO 檔
未限速前應該可以跑到幾百 KB/s
限速後只能達到最大頻寬
(起先會有一些偏差值,穩定後就符合最大頻寬)

上傳方面:
開 P2P 上傳不限速,若沒有吃掉全部上傳頻寬,測試 OK

ppp099 2006-04-05 09:11 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
seednet 8M/640
實際大約 3M 左右吧,大約5-8 人
Qos 部分
# 定義最頂層(根)佇列規則,並指定 default 類別編號
tc qdisc add dev eth1 root handle 10: htb default 30

# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev eth1 parent 10: classid 10:1 htb rate 80kbps ceil 80kbps

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 16kbps ceil 60kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 10kbps ceil 50kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 6kbps ceil 30kbps prio 2
#tc class add dev eth1 parent 10:1 classid 10:40 htb rate 4kbps ceil 16kbps prio 4
# 定義各葉類別的佇列規則
tc qdisc add dev eth1 parent 10:10 handle 101: pfifo
tc qdisc add dev eth1 parent 10:20 handle 102: pfifo
tc qdisc add dev eth1 parent 10:30 handle 103: pfifo
#tc qdisc add dev eth1 parent 10:40 handle 104: pfifo

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


# QoS eth0 下載方面
#

# 清除 eth0所有佇列規則
tc qdisc del dev eth0 root 2>/dev/null

# 定義最頂層(根)佇列規則,並指定 default 類別編號
tc qdisc add dev eth0 root handle 10: htb default 30

# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev eth0 parent 10: classid 10:1 htb rate 640kbps ceil 640kbps

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth0 parent 10:1 classid 10:10 htb rate 32kbps ceil 600kbps prio 0
tc class add dev eth0 parent 10:1 classid 10:20 htb rate 12kbps ceil 560kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:30 htb rate 8kbps ceil 480kbps prio 2
#tc class add dev eth0 parent 10:1 classid 10:40 htb rate 2kbps ceil 38

防火牆部份
iptables -t mangle -A PREROUTING -m --mac-source 00:13:D4:58:2A:57 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -m --mac-source 00:11:2F:00:41:C4 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -m --mac-source 00:90:F5:03:4B:F4 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -s 192.168.0.101/30 -j MARK --set-mark 30
這樣不知道是否正確,我設 MAC 部分在下載卻比沒有設的還慢

joeing 2006-05-18 01:00 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
在ISP有一種新的上網方式~ "DHCP"
DHCP就是不用PPPoE撥接上網~
電腦開機就可以上網~
現在問題來了~
如果我把Coyote Linux 頻寬管器 NAT 關閉裡面DHCP功能也關閉~讓變成Coyote Linux 頻寬管器一個純Router 而且可以使用 Qos~
我的電腦接法如下~
ISP(使用DHCP上網)->接ADSL moden->接Coyote Linux 頻寬管器已變純Router->接"後端電腦"

這樣我的電腦上網嗎~可以使用Coyote Linux 頻寬管器的 Qos
因為ISP提供的DHCP為浮動IP~
所以利用Coyote Linux 頻寬管器 的網卡序號管理其使用頻寬~

這樣我的電腦上網嗎

謝謝

joeing 2006-05-19 09:43 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
您好~
使用Coyote Linux 頻寬管制 的 DMZ 功能~
後方管控的電腦~
可以個別使用PPPoE 取得浮動實體IP嗎~
且用每台電腦的網卡序號做好頻寬管控~
還是一定要通透模式~
謝謝~

littlesa 2006-07-16 10:16 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
先感謝linux_xp ~這篇文章對我非常的實用~
雖然我不是用Coyote Linux~我是用RedHat 9.0~
所以要使用l7-filter協定過濾~就必須重新編輯Kernel核心~
在網路上找了很多方法~最後也成功了~:D ~真happy

不過我有幾個問題想問一下~
如果我的這台server裡面有裝samba~
但如果沒有加以對smb作頻寬控制~他會照我所限制的頻寬下載(所以下載的頻寬就等於8M,而不是內網的速度100M)
所以我加了一行
/usr/local/sbin/iptables -t mangle -A POSTROUTING -m layer7 --l7proto smb -j MARK --set-mark 10
然後在下載的頻寬做了改變
tc qdisc add dev eth1 root handle 10: htb default 60
tc class add dev eth1 parent 10: classid 10:1 htb rate 12800kbps ceil 12800kbps #(100Mbps)
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 1kbps ceil 12800kbps prio 3
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 10kbps ceil 640kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 128kbps ceil 758kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:40 htb rate 128kbps ceil 758kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:50 htb rate 128kbps ceil 758kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:60 htb rate 1kbps ceil 630kbps prio 2
這樣的設定合理嗎??因為我不知道怎麼排除samba在內網的速度~

還有一個問題是~
如果我的rate 設為 0kbps ~他會出現以下的訊息~
"rate" is required.
RTNETLINK answers: Invalid argument
出現這樣是警告的訊息嗎~有成功嗎?

linux_xp 2006-07-17 12:05 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
1 個附加檔案
[QUOTE=littlesa]先感謝linux_xp ~這篇文章對我非常的實用~
雖然我不是用Coyote Linux~我是用RedHat 9.0~
所以要使用l7-filter協定過濾~就必須重新編輯Kernel核心~
在網路上找了很多方法~最後也成功了~:D ~真happy
....
[/QUOTE]

喔喔,真高興碰到內行人,瞭解 Linux QoS 的價值

其實這篇開頭就說了,Linux QoS 是一個原理,或者技術
適用於所有的 Linux distro 版本
不過很多人卻誤以為,這是只能在 Coyote 執行的東西,殊為可惜

查網路教學,拜咕狗大神,想必很累吧
我以前也是這樣作,後來學聰明了
網路上的知識,都是片段的,出自於免費分享,自然不可能要求太多
真正要有系統的學習,必須買書來看

推薦一本書,有心學 Linux 頻寬管理,一定要看
旗標出版社,施威銘研究室出的:iptables 技術實務

關於 l7-filter,與核心編譯的實做,這本書都有說明
甚至還有 iproute2 多重路由,也就是多 wan 的知識

[quote]
不過我有幾個問題想問一下~
如果我的這台server裡面有裝samba~
[/quote]

我非常清楚的這個問題,因為我也碰到了
實做 QoS 後,會連 samba 傳輸也給限速了....冏rz

網路上(中文),或書籍,都沒有解答方法
不過在下苦思很久,終於靈光一現,想出一個辦法解決
提供給有需要的朋友參考

方法是:必須有三片網卡
其中一片是不管制流量的,稱之為:快速通道
(就是有特權的,不受流量管制)

當然,不會是只增加一片網卡這麼簡單
這其中牽涉到路由問題,必須使用到多重路由

由於過程很複雜,就不解說了
這篇底下,會附加一個閘道防火牆 script 檔
把變數填一填,即可使用

該 script 是參考書籍範例,自行修改的
我已經在自己機器使用很久了,保證沒問題

裡頭有詳細註解,若有興趣,歡迎一起討論
看這個 script 是否還有什麼需要改進的地方
或是有什麼新奇的點子,可加入什麼新功能之類的
:D

[quote]
如果我的rate 設為 0kbps ~他會出現以下的訊息~
"rate" is required.
RTNETLINK answers: Invalid argument
出現這樣是警告的訊息嗎~有成功嗎?
[/quote]

tc 指令若正常執行,不會出現任何訊息 (自己 echo 的例外)

有出現訊息的,一定是不正常,不會發生作用

這個地方的問題是
rate 不能設 0,最低只能設 1kbps
詳細原因我也不知道,可能是該程式的限制
或者語法上,最低保證頻寬或許是可以省略的,省略就代表0

littlesa 2006-07-17 09:51 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
先再次感謝linux_xp~
這個script 真的寫的太詳細了~
晚點再好好的瞭解一下~
其實我對linux瞭解算是東湊西湊~
要不是linux_xp寫的這麼清楚~說真的~
會很想放棄頻寬的管理~
還好你知道我所問的問題~我還怕你們會看不懂~
呵呵~網路就是有這個個好處~
我所遇到的問題~別人一定也會遇到的~
不過就像你說的一樣~
找得很累~而且學到的都是片段~
iptables 技術實務這本書我會去買來研究的~
我們公司現在要買幾十萬的check point~
你分享的知識~就值十幾萬~甚至幾百萬都有~
真的太感謝了~有任何問題~我會在請教你~
謝謝~

littlesa 2006-07-17 12:36 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
linux_xp~你好~我想問一下~三張網路卡要怎麼接呢~是其中兩張網卡(對內)~接到同一個hub上嗎?我看你給的script 檔ip~應該是這樣沒錯~

還有一個問題是
有一條類別定義如下:
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 2kbps ceil 4kbps prio 2
有封包貼標籤為10
iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto skype -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto msn -j MARK --set-mark 10
那skype 和msn 所用的rate保證頻寬是各自有2kbps~
還是說總共只有2kbps呢~:confused:

linux_xp 2006-07-17 07:30 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=littlesa]linux_xp~你好~我想問一下~三張網路卡要怎麼接呢~是其中兩張網卡(對內)~接到同一個hub上嗎?我看你給的script 檔ip~應該是這樣沒錯~

還有一個問題是
有一條類別定義如下:
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 2kbps ceil 4kbps prio 2
有封包貼標籤為10
iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto skype -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto msn -j MARK --set-mark 10
那skype 和msn 所用的rate保證頻寬是各自有2kbps~
還是說總共只有2kbps呢~:confused:[/QUOTE]


1 對外,2 對內
對內的兩條線,可接同一台 HUB 或 Switch

忘記說,
smb.conf 要指定使用 eth2
也就是快速通道那張網卡介面,才會有效果


總共 2KB

QoS 的限速是看 class 類別的
iptables 規則貼標籤,用途只是提供 filter 過濾器去抓取

舉個例子:
-----------------------------
高速公路,ETC 通道,限速 40 公里,這叫做 ETC 類別

而有安裝 ETC 的車子 (被貼上標籤),強迫走 ETC 通道,這是規則條件
車子有很多廠牌,有 skype 牌的,msn 牌的
不過 ETC 通道只有一條,就是限速 40 公里
不管車子是什麼牌,凡符合條件就必須走這一條通道,共享頻寬

過濾器的用途,可看作是收費站那個檢查車子有沒有 ETC 的裝置

(其實這是個爛例子 :p ,因為裝 ETC 高興不走 ETC 通道也行,不過看得懂就好了,實際上封包若被貼了標籤,100% 會被 過濾器抓取,沒有例外)

littlesa 2006-07-17 11:23 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
1 個附加檔案
linux_xp你好~
我剛剛試了你給的script~
修改完後~卻沒辦法上網~
但那台server是可以連到外面去~
內部的電腦都無法連出去~
不過samba 卻可以用~
我把script檔傳上來~
可以幫我看一下嗎?
不過我想應該是沒有設錯~
可能還有其他設定要改吧~
"eth0" 192.168.1.5 對外那張網路卡的ip~
因為我還有接一台ip 分享器~(IP是192.168.1.1)
才在接這台server的~
"eth1" 192.168.2.254 對內
"eth2" 192.168.2.253 內部區網快速通道

littlesa 2006-07-18 09:03 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
唉~我昨天試到晚上兩點~不行了~還是要去睡~
我發現~如果我把第三個網路卡關起來~不去啟動它~
我的網路就會很正常~可以上網~如果我把第三網路卡加入~
設定好ip~結果就無法上網了~
所以錯誤點應該在第三個網路卡的設定~
我網路卡設定如下
ip 分享器 :192.168.1.1

eth0
IP :192.168.1.5
址網路遮罩:255.255.255.0
預設閘道 :192.168.1.1

eth1
IP :192.168.2.254
址網路遮罩:255.255.255.0
預設閘道 :192.168.1.1

eth2
IP :192.168.2.253
址網路遮罩:255.255.255.0
預設閘道 :

麻煩你了~
對了~我剛剛想到~
你說加上第三張網路卡會牽涉到路由問題
也就是多重路路由的設定~
那表示兩張對內的網卡~
應該要設在不同網域是吧~
如果是這樣~那就太對不起你了~
沒有注意你說的~

linux_xp 2006-07-18 09:23 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=littlesa]linux_xp你好~
我剛剛試了你給的script~
修改完後~卻沒辦法上網~
但那台server是可以連到外面去~
內部的電腦都無法連出去~
不過samba 卻可以用~
我把script檔傳上來~
可以幫我看一下嗎?
不過我想應該是沒有設錯~
可能還有其他設定要改吧~
"eth0" 192.168.1.5 對外那張網路卡的ip~
因為我還有接一台ip 分享器~(IP是192.168.1.1)
才在接這台server的~
"eth1" 192.168.2.254 對內
"eth2" 192.168.2.253 內部區網快速通道[/QUOTE]

基本上設定並沒有錯誤,但網路環境配置錯誤

那支閘道防火牆 script,預設啟動 NAT
可以取代 IP 分享器,甚至取代頻寬管理器、防火牆設備

或者說,前端不能再接 IP 分享器
那台主機本身就必須擔任 IP 分享器的地位
對外網卡,必須為固定真實 IP (Public IP)

如果 server 是單純的 web、ftp、samba、mail ...之類
並不擔任閘道防火牆主機功能
應使用另一支單機防火牆 script
且只要一片網卡即可

註:對內區網限速的 QoS 配置,只能在閘道端生效


當然這樣會有一個疑慮
主機直接對外,會不會被攻擊,或資料被偷
因此那支閘道防火牆 script,有特別強調,它是 「防火牆」script

理論上,對外不開 port,尤其是 port 22 (SSH)
可以防止被 WAN 端登入操作

對外只開啟必要的 port
例如:
tcp 80 (web 服務)
tcp 443 (https)
tcp 25 (mail)
tcp 110 (pop3)
udp 53 (dns)

那麼除非該服務本身就有漏洞
例如:apache 有漏洞,或 PHP/JSP 程式寫的有 bug
才有可能被入侵

假如是這樣的話,那其實主機放前面,放後面,結果都是一樣的

即使 web 主機是放 IP分享器 或 硬體防火牆 後面
表面上好像受到保護
但事實上 IP 分享器當然也要設轉 port 或 DMZ
web 主機才能對外服務
那麼相對來講,該 web 主機不也是直接曝露在外
該 service 若有漏洞的話,還不是照樣被攻擊入侵
所以這可以說是多此一舉的

反而如果 IP 分享器不夠力,效能不好
還會影響到上網的速度,網速都給低階的 IP分享器拖垮了

但多數的資料,或書籍,都會說放 IP 分享器後面,能夠受到保護
理由是這樣子內部電腦就沒有 public IP,只有虛擬 IP (Private IP)
而 Internet 上,虛擬 IP 是無法直接連接的

這種說法,基本上並沒有錯
只不過這是針對不開 port 轉換或 DMZ 的情況下來講
如果開了 port 轉換 或 DMZ,不管主機放哪,都是直接對外
而一台 server 如果對外不開 port,又要如何對外服務呢
所以結論是,這句話只適用於單純的 client 端電腦
如果是擔任 server 服務的電腦,則不適用

養成定時更新 (update) 的習慣,才是防止服務漏洞被攻擊的不二法門
例如:yum -y update
會自動更新所有套件 (distro 必須支援 yum 更新系統)
將這個指令,寫入 crontab 排程,每日或每週自動執行
則可以避免忘記,或者不用手動,而達到全自動更新
:)

littlesa 2006-07-18 10:50 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
嗯嗯~先謝謝你的回答~我會在了解一下這隻script~
其實我也很想把我前端的ip分享器拿走~
不過因為我是剛剛接觸linux的防火牆~
對它的設定還不是很了解~
所以還不放心把它放在跟外部連線~
(很久以前~我就是把它放在跟外部連線~結果被人竄改密碼~唉~不過那時才剛碰linux啦~什麼東不懂~連防火牆都沒架~所以被侵入是一定的)
等我了解完這隻script~對防火牆的設定了解後~我會將它放在最前面的~
我沒有申請固定的ip所以我用的是浮動的~不過我有去申請ddns~
我想不管是浮動ip或是前面有接ip分享器~這應該不是最大的問題~
這隻script應該還是有辦法改成我要的~我會試著改改看~到時我會分享我改的script~畢竟初學者在架linux~還是先架在IP分享器後~要不然會跟我一樣~一開始就被侵入~到時就有人會說~Linux怎麼這麼容易被侵入壓~哈~

littlesa 2006-07-20 07:51 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
linux_xp
你好~
我現在把eth2 設在不同網段~
不過跟eth1接在同一個hub上~
現在是可以上網了~
我想請問一下~
smb.conf 要指定使用 eth2
是要在smb.conf上設定嗎??
我找了很久~好像沒有這樣的設定~
還是有其他的設定方法壓??

linux_xp 2006-07-20 09:35 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=littlesa]linux_xp
你好~
我現在把eth2 設在不同網段~
不過跟eth1接在同一個hub上~
現在是可以上網了~
我想請問一下~
smb.conf 要指定使用 eth2
是要在smb.conf上設定嗎??
我找了很久~好像沒有這樣的設定~
還是有其他的設定方法壓??[/QUOTE]

假設
eth0 對外網卡
eth1 對內網卡,有 NAT 、QoS 的
eth2 對內網卡,快速通道

估計可能是預設閘道設錯,才導致無法上網
eth1 是內部電腦的預設閘道 default Gateway

eth2 同一網段即可,IP 任意,沒衝到即可
這是它最主要的用處
如果要分網段,其實插張網卡就行了,不需要多重路由
但是這樣內部 Client 端電腦,都要插雙網卡,或者虛擬一塊網卡
麻煩之程度,就不用說了吧..... :D

「內部區網快速通道」不受 QoS 管制
用來解決 smb 被限速的問題

只適用於像 smb 這類,可以自行調整要走哪一條介面的 service

vi /etc/samba/smb.conf
----------------------------------------
# Configure Samba to use multiple interfaces
# If you have multiple network interfaces then you must list them
# here. See the man page for details.

interfaces = eth2
-------------------------------------------

/etc/rc.d/init.d/smb restart


ssh 也可以調要走哪一條介面

vi /etc/ssh/sshd_config
-------------------------------------------
ListenAddress 0.0.0.0 # (指定監聽 eth2 的 IP)

# 監聽介面可以設多組,假如要允許 外部 to 內部 ssh
# 可以多設一組
-------------------------------------------

諸如此類,有很多 service 都可以自定監聽介面
如果不想讓閘道主機的某 service 被 QoS 限速
指定到快速通道,方可解決被限速的問題
:)


PS.
當插很多片同樣晶片的網卡時
有時候會很難搞清楚,那片到底是 eth 多少
網路線就有可能插錯格,對外孔,插到對內線...之類的

建議要把網卡的 MAC 位址,都記下來
能貼個標籤或貼紙,在網卡孔旁邊,方便辨識,這樣更好
有些網卡買的時候,會附送 MAC 貼紙,作用就是在這個地方

指令:ifconfig
可以查網卡的:介面編號,IP,MAC 位址
對照一下紀錄的 網卡 MAC,可以確認該網卡是何介面,避免插錯
:p

linux_xp 2006-07-20 09:53 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=littlesa]嗯嗯~先謝謝你的回答~我會在了解一下這隻script~
其實我也很想把我前端的ip分享器拿走~
不過因為我是剛剛接觸linux的防火牆~
對它的設定還不是很了解~
所以還不放心把它放在跟外部連線~
(很久以前~我就是把它放在跟外部連線~結果被人竄改密碼~唉~不過那時才剛碰linux啦~什麼東不懂~連防火牆都沒架~所以被侵入是一定的)
等我了解完這隻script~對防火牆的設定了解後~我會將它放在最前面的~
我沒有申請固定的ip所以我用的是浮動的~不過我有去申請ddns~
我想不管是浮動ip或是前面有接ip分享器~這應該不是最大的問題~
這隻script應該還是有辦法改成我要的~我會試著改改看~到時我會分享我改的script~畢竟初學者在架linux~還是先架在IP分享器後~要不然會跟我一樣~一開始就被侵入~到時就有人會說~Linux怎麼這麼容易被侵入壓~哈~[/QUOTE]

最主要是要把握一個原則
防火牆鐵則:封鎖全部,開放特定

一般是對外封鎖全部
在開放特定如:
25 (smtp)
53(dns)
80(web)
443 (https)
110 (pop3)
.....
等等,常用的 port,假如你的主機有對外服務的話

在嚴格一點,對內也全部封鎖,開放特定 port
避免內部電腦中木馬病毒,被當成跳板,從內部攻擊主機
或者公司內有間諜,內神通外鬼
不過一般是不會做到這種程度啦
除非是講究高度安全性的企業

telnet 絕對不要使用,因為它是明碼傳輸,帳密會被攔截竊取
要遠端登入,要用 ssh 加密傳輸

ssh 若無必要,不要對外開放,不然會被攻擊破解 (字典攻擊,或暴力算法)

ssh 若對外開放,絕對不要允許 root 登入
因為 root 的這名字,大家都知道,直接破解密碼
而一般使用者,光要知道名字就有困難
以一般帳號登入後,在 su- 轉成 root 權限即可

可以的話,限制特定 IP 才能從外部 ssh 登入,會比較安全

密碼至少 6 個字以上,參雜英文和數字
一個好的方式,是用中文拼法
例如:你好嗎
注音拼法:su3cl3a87
(看起來就像一堆亂碼,誰會知道那是中文,好記又安全)

以上是一些 Linux 資安的基本觀念,提供作參考
:p

littlesa 2006-07-23 06:26 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
我可以請問一下~我加上第三張網路卡後~
我的route -n變成這樣~
eth0 192.168.1.5
eth1 192.168.2.254
eth2 192.168.2.200(快速通道)

192.168.2.0 * 255.255.255.0 U 0 0 0 eth2
192.168.2.0 * 255.255.255.0 U 0 0 0 eth2
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth2
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
而我內網的電腦閘道是設為 192.168.2.254 所以我把第一條刪除改成這樣
192.168.2.0 * 255.255.255.0 U 0 0 0 eth1
192.168.2.0 * 255.255.255.0 U 0 0 0 eth2
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth2
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

不過問題來了~如果以上面的route規則來說~他到192.168.2.0這個網段會走eth1 這條~而不會走eth2這條~是不是這裡的設定也要改~
再來~我內部的電腦~閘道是設為192.168.2.254~所以我要傳檔案至samba server 就只會走192.168.2.254~而不會走192.168.2.200~
不過因為只到samba serve~r所以從內部電腦到server ~走這條192.168.2.254是不會被限制速度~(所以出去並不會走快速通道囉)
所以如果以正常來說~要抓取samba的檔案~
它會走eth2(192.168.2.200) ~
而要把檔案傳至samba會走eth1(192.168.2.254)囉~:confused:

linux_xp 2006-07-23 08:24 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
提供我家裏的網路環境,給你作參考:

[img]http://img84.imageshack.us/img84/2109/adsl1qq.png[/img]

1.Linux 主機,閘道主機,擔任 IP 分享器/頻寬管理器,其上有 SMB 服務

2.共有三片實體網卡,一個虛擬網卡介面(非必要)

eth0:固定制真實 IP,對外網卡

eth0:0 虛擬網卡,用來和小白龜 telnet,區網電腦可直接打 [url]http://192.168.1.1[/url] 連進小白龜設定網頁

eth1:對內網卡,虛擬 IP 192.168.0.254,有 QoS

eth2:smb 專用快速通道,無 QoS,192.168.0.6


[img]http://img215.imageshack.us/img215/5859/routexd2.gif[/img]

首先看到,route -n

顯示出連接 192.168.0.0/24 ,有 eth1、eth2
就一般常識來說,這看似錯誤的路由規則,應該是不會通的
因為封包不知道要走那條.....

但事實上,這樣會通
因為這不是「傳統路由表」,是「多重路由表」

Linux 實際上,提供 255 個 route table
也就是說,可以設定 255個路由表
指令為:ip
屬於 iproute2 套件

使用指令 route 的時候,只能看到「傳統路由表」
table main,或者 table 254

一般來說使用 Linux,不會去動到「多重路由表」
所以指令 route 也就夠用了

不過這支 script,預設會使用 table 139
來為 eth2 建立多重路由表
因此必須使用 iproute2 套件的 ip 指令
才能看到詳細的路由狀況

至於為什麼要動用到「多重路由表」
這是因為只有這樣子,才能解決 smb 被 QoS 限速的問題

因為 iproute2 的原理,有點複雜,若有興趣,請自行參閱書籍
:)

基本上 Linux 若是為「閘道主機」
「閘道主機」:Linux 主機對外網卡,直接和 ADSL 數據機連接
使用那支 script 是沒問題的
並不需要去瞭解原理,變數改一改即可使用

但是我不知道你的網路環境是怎樣
若可以話,請畫張圖來看,會比較清楚,討論會比較方便
:)

littlesa 2006-07-23 09:20 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
我家的網路圖跟你的差不多~
借用你的網路圖修改了一下~
[URL=http://imageshack.us][IMG]http://img249.imageshack.us/img249/7032/netzj9.jpg[/IMG][/URL]

1.Linux 主機,閘道主機,擔任 IP 分享器/頻寬管理器,其上有 SMB 服務

2.共有三片實體網卡

eth0:固定制真實 IP,對外網卡

eth1:對內網卡,虛擬 IP 192.168.2.254,有 QoS

eth2:smb 專用快速通道,無 QoS,192.168.2.200
[URL=http://imageshack.us][IMG]http://img83.imageshack.us/img83/369/net1ey3.jpg[/IMG][/URL]
我設定的大致上跟你差不多~但是~他還是沒辦法走快速通道~:(
先跟你說我怎麼測試流量~
我是按ctrl +alt +delete
有個網路功能…
平常我沒限定流量時~對samba拿取資料~
他的百分比會在30% 40%左右徘徊~
如果我開啟QoS後~他就只會停在7%左右
而使用你的script時~他也只停在7%左右
因此由此可證明他沒有走快速通道~
我想請問一下~你的網路圖…並由沒有畫出第三張網路卡~你是否也是接至同一個SWITCH呢~:confused:

linux_xp 2006-07-24 12:01 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
嗯,這樣接並沒有錯,eth1、eth2 接同一台 HUB 即可

那張圖是直接取用另一篇文章的,並不是針對這個主題特別去畫
[url]http://phorum.study-area.org/viewtopic.php?t=40062[/url]


我的網路環境,和你的差別,看來只有兩點

1.
我的 Linux 主機,是直接擔任 IP 分享器,前面沒有再接 IP 分享器

因為 Linux 作 NAT 性能比較好
前端接低階的 IP分享器,上網速度會被嚴重拖慢
另多接一台 IP 分享器,會浪費電力
再來是前面接 IP分享器,「透明 proxy」會很難作,需下非常複雜的重新導向語法
如果直接連 ATU-R,「透明 proxy」就很容易
基於以上理由,前端接 IP分享器,百害無一利,建議不要接比較好

註:
前端若有接 IP 分享器
防火牆 script 中,關於 NAT 部份的原始碼,必須註解掉
否則無法上網

2.
我的是固接 IP,你前面好像有提到是用 PPPoE 撥接的

如果是 Linux PPPoE 的,介面為 ppp0
在啟動防火牆 script 之前,必須先確認 ppp0 已經存在
否則 script 執行會發生錯誤,iptables 會回報介面不存在

ppp0 是一個特殊的網路介面
它只有在撥接成功時,才會出現

但如是靠前端 IP 分享器撥接的話
Linux 對外網卡仍是 eth0
因為此時 Linux 不負責撥接,ppp0 永遠不可能出現
以這個情況來說,設 eth0 是正確的

-----------------------------------------------------

smb 無法走快速通道的問題
估計是因為 smb 的設定檔,沒有指定 interface 的關係

samba 的設定檔,位置在 /etc/samba/smb.conf

找其中一行
#interfaces = eth2

它原先是註解,把註解拿掉,值改成 eth2 即可
或是直接新增一行,打入內容,也可以
更改後,要重新啟動或讀取,才會生效

--------------------------------------------------

再來是 client 端的設定

如果是用:\\IP
指定 IP 的方式,來連接,應該沒問題

用 :\\電腦名稱
這樣子的話,要確定該電腦名稱的 IP 解析,是指向 eth2 的

於 smb.conf 中
項目:netbios name = xxxxxx
可以指定 smb 要出現在網路芳鄰中的電腦名稱

client 端電腦
打:
\\hostname (主機名稱)
\\netbios-name (smb 名稱)
都可以指向該台主機的 smb 服務
但有時候,這兩者代表的 IP 是不同的...

最妥當的方法,是直接打:\\IP
省的解析名稱,連接也會比較快速
可以建立成桌面捷徑,直接按兩下即可連接
:)

littlesa 2006-07-24 12:11 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
真的太感謝你了~找到問題點了~哈哈
原來我原本在xp上面設的網路磁碟機是用電腦名稱而又在host上面指向192.168.2.254~而不是只向192.168.2.200快速通道~難怪~每次都會被限制住~呵呵~真的感謝你~我用ip就ok了~等我會去host上面更正ip就大功告成~!真的再次感謝~近期內~我會把他直接擔任 IP 分享器~呵呵~真的太高興了~

littlesa 2006-07-24 03:19 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
對了~我一直很想問一個問題~
如果以第一個例子來講~
你的範例應該是用
ADSL 2M/512K
再QoS裡的定義
tc class add dev eth1 parent 10: classid 10:1 htb rate 64kbps ceil 64kbps
因為單位是kbps而不是KByte/s
所以這裡的64k應該是要等於512k是吧~所以規則應該如下~
tc class add dev eth1 parent 10: classid 10:1 htb rate 512kbps ceil 512kbps
因為我一開始設為64kbps 他會建議我設高一點的訊息~
所以我才發現這個問題~因為我看到每個人回答的規則幾乎都已經換算成KByte/s 的單位~可是卻在規則上用kbps~
不知道我這樣的發現是不是對的~

linux_xp 2006-07-24 07:13 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
佇列規則有兩種形式:CBQ 和 HTB

HTB 採用的單位是 KB/s
不過那邊要寫 kbps
《iptables 技術實務》 那本書,有特別提到

實際用 MRTG 流量統計驗證
那邊的 kbps 的確就是 KB/s

[img]http://img64.imageshack.us/img64/9721/mrtgzw1.gif[/img]
如圖,這是我的閘道主機對外網卡 MRTG 流量統計表
上傳的上限,設在 64kbps
假設此處的 kbps 是指 kbit/s ,那它根本不可能跑到 300 多


至於 HTB 佇列規則,為什麼單位明明就是 KB/s,卻要寫 kpbs 才行
這個大概要去問 HTB 或 tc 的作者了
tc 的作者高興程式寫這樣,也就只好照著用了,除非自己改原始碼 :eye:

-----------------------------------------------------

個人猜測是因為網卡佇列的頻寬控管,無法精準到 bit 的關係

因為網路傳輸最小單位是:封包
每次傳輸至少就是一個封包,沒有半個,或 1/10 個這種單位
不完全的封包,會被網路設備當成錯誤資料,直接丟棄
一個標準的封包大約是 1.8 KB/s (MTU 15000)

這就好像我們知道水分子是 H2O
但是我們算水的流量時,不會去算說有幾個 H2O 分子
而是算幾毫升,ml 或 cc
因為這是度量的極限


關於頻寬控管無法精準到 bit 這一點,可以理解了
但是為什麼 KB/s 要寫成 kbps?

peer sec 是指每秒有幾個單位
KBps (大寫 KB) 也可以解釋成 KB/s

但是 unix 的原則是:指令和參數都儘量小寫
這樣輸入時,會比較好打 (unix 系統下,大小寫是有差別的)
所以會寫成 kbps ,還算合理
:)

littlesa 2006-07-24 10:52 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
謝謝~了解~還好有問~
接下來就來裝裝MRTG 流量統計~
:D

ropin 2006-08-01 07:04 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
您好。
請問如果單純要有保證頻寬及最大頻寬,一視同仁的去管理,只用內建的 QOS 功能可以做嗎?
還有在 subnetting configuration 中,單獨的一個設定中 ip 可以這樣 192.168.0.100-200 輸入嗎?才不用一個個輸入?還是有更快方式?盡量不要用 ip table 方式,小弟覺得太難了。謝謝。

810125 2006-10-28 01:16 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
可以重新提供QOS的教學圖片嗎?存PCHOME的圖片都消失了,麻煩前輩再次提供一下

locking 2006-10-28 05:11 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=linux_xp][b]Coyote Linux 頻寬管制 (QoS) 設定教學[/b]

[color=#333399][B]規劃篇:[/B][/color] (分配頻寬,定義類別)
-----------------------------------------------------------------------
由於 QoS 要先計算出整體頻寬,給予分配,才有辦法設定
所以在設定之前,必須先進行規劃的前置作業

[/QUOTE]

您好,關於整體頻寬方面我有一點想請教,
假設我的QoS server要同時管理不同上傳頻寬的線路(如WiMax、WiFi等等....)
那請問是否有語法可以將頻寬用百分比來分配,
如class 1享有50%的頻寬,class 2享有30%的頻寬,class 3享有20%的頻寬之類的作法?

espresso 2006-11-02 05:01 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
請教一下linux_xp大大,
如果我把您曾經提供的 gw firewall script, 其中這一段
[CODE]## 以下開始設定防火牆規則

# 設定 INPUT、OUTPUT、FORWARD 鏈預設的過濾原則, 凡封包
# 不符合各鏈中的規則, 皆予以拋棄
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# 允許流經 lookback 介面的封包進出
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -i ! lo -s 127.0.0.0/8 -j DROP
iptables -A OUTPUT -o ! lo -d 127.0.0.0/8 -j DROP

# 新增一個名為 BADPKT 的新鏈
iptables -N BADPKT

# 丟棄所有進入 BADPKT 鏈的封包
iptables -A BADPKT -j DROP

# 將可疑封包交由 BADPKT 鏈處理 (不可能出現的 TCP 旗標狀態封包)
iptables -A INPUT -m state --state INVALID -j BADPKT
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j BADPKT
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j BADPKT
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j BADPKT
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j BADPKT
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j BADPKT
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j BADPKT
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j BADPKT
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j BADPKT
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j BADPKT
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j BADPKT
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j BADPKT
iptables -A INPUT -p tcp --tcp-flags ALL FIN -j BADPKT
iptables -A FORWARD -m state --state INVALID -j BADPKT
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags ALL FIN,URG,PSH -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags ALL ALL -j BADPKT
iptables -A FORWARD -p tcp --tcp-flags ALL FIN -j BADPKT

# 允許已建立連線和回應的封包通過
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT[/CODE]
直接 貼到 BrazilFW 2.28 Custom Firewall Rules 裡面,
也就是 /etc/coyote/firewall.local

請問這樣有效用嗎?謝謝!

happyzeus 2006-11-08 10:45 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
可否幫我看看哪邊有問題
1.線路12M/1M(未達極速-設定為4800kbps/640kbps)
2.eth0=>接LAN
 eth1=>接WAN
3.10台電腦

問題:
用電腦(192.168.1.21)(用DHCP保留)下載速率400KB/秒(算正確吧?)
用電腦(192.168.1.36)(DHCP自動取得)下載怎麼也是400KB/秒????(非同時)
是哪邊設定有問題呢?麻煩知道的大大們給我點意見!

rate 80kbps ceil 800kbps不是保證速率80kbps,最高速率800kbps @@?
/etc/rc.d/rc.local
[CODE]
#!/bin/sh
#
# Coyote local command init script

# 清除 eth1 所有佇列規則
tc qdisc del dev eth1 root 2>/dev/null

# 定義最頂層(根)佇列規則,並指定 default 類別編號
tc qdisc add dev eth1 root handle 10: htb default 70

# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev eth1 parent 10: classid 10:1 htb rate 640kbps ceil 640kbps

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 16kbps ceil 280kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:40 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:50 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:60 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:70 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:80 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:90 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:100 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:110 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:120 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:130 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:140 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:150 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:160 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:170 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:180 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:190 htb rate 16kbps ceil 128kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:200 htb rate 16kbps ceil 128kbps prio 1


# 定義各葉類別的佇列規則
# parent 類別編號,handle 葉類別佇列規則編號
# 由於採用 fw 過濾器,所以此處使用 pfifo 的佇列規則即可
tc qdisc add dev eth1 parent 10:10 handle 101: pfifo
tc qdisc add dev eth1 parent 10:20 handle 102: pfifo
tc qdisc add dev eth1 parent 10:30 handle 103: pfifo
tc qdisc add dev eth1 parent 10:40 handle 104: pfifo
tc qdisc add dev eth1 parent 10:50 handle 105: pfifo
tc qdisc add dev eth1 parent 10:60 handle 106: pfifo
tc qdisc add dev eth1 parent 10:70 handle 107: pfifo
tc qdisc add dev eth1 parent 10:80 handle 108: pfifo
tc qdisc add dev eth1 parent 10:90 handle 109: pfifo
tc qdisc add dev eth1 parent 10:100 handle 1010: pfifo
tc qdisc add dev eth1 parent 10:110 handle 1011: pfifo
tc qdisc add dev eth1 parent 10:120 handle 1012: pfifo
tc qdisc add dev eth1 parent 10:130 handle 1013: pfifo
tc qdisc add dev eth1 parent 10:140 handle 1014: pfifo
tc qdisc add dev eth1 parent 10:150 handle 1015: pfifo
tc qdisc add dev eth1 parent 10:160 handle 1016: pfifo
tc qdisc add dev eth1 parent 10:170 handle 1017: pfifo
tc qdisc add dev eth1 parent 10:180 handle 1018: pfifo
tc qdisc add dev eth1 parent 10:190 handle 1019: pfifo
tc qdisc add dev eth1 parent 10:200 handle 1020: pfifo

# 設定過濾器
# 指定貼有 10 標籤 (handle) 的封包,歸類到 10:10 類別,以此類推
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 20 fw classid 10:20
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 30 fw classid 10:30
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 40 fw classid 10:40
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 50 fw classid 10:50
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 60 fw classid 10:60
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 70 fw classid 10:70
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 80 fw classid 10:80
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 90 fw classid 10:90
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 100 fw classid 10:100
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 110 fw classid 10:110
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 120 fw classid 10:120
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 130 fw classid 10:130
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 140 fw classid 10:140
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 150 fw classid 10:150
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 160 fw classid 10:160
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 170 fw classid 10:170
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 180 fw classid 10:180
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 190 fw classid 10:190
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 200 fw classid 10:200



# QoS eth0 下載方面
#

# 清除 eth0所有佇列規則
tc qdisc del dev eth0 root 2>/dev/null

# 定義最頂層(根)佇列規則,並指定 default 類別編號
tc qdisc add dev eth0 root handle 10: htb default 70

# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev eth0 parent 10: classid 10:1 htb rate 4800kbps ceil 4800kbps

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth0 parent 10:1 classid 10:10 htb rate 400kbps ceil 4000kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:20 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:30 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:40 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:50 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:60 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:70 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:80 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:90 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:100 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:110 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:120 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:130 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:140 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:150 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:160 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:170 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:180 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:190 htb rate 80kbps ceil 800kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:200 htb rate 80kbps ceil 800kbps prio 1

# 定義各葉類別的佇列規則
# parent 類別編號,handle 葉類別佇列規則編號
tc qdisc add dev eth0 parent 10:10 handle 101: pfifo
tc qdisc add dev eth0 parent 10:20 handle 102: pfifo
tc qdisc add dev eth0 parent 10:30 handle 103: pfifo
tc qdisc add dev eth0 parent 10:40 handle 104: pfifo
tc qdisc add dev eth0 parent 10:50 handle 105: pfifo
tc qdisc add dev eth0 parent 10:60 handle 106: pfifo
tc qdisc add dev eth0 parent 10:70 handle 107: pfifo
tc qdisc add dev eth0 parent 10:80 handle 108: pfifo
tc qdisc add dev eth0 parent 10:90 handle 109: pfifo
tc qdisc add dev eth0 parent 10:100 handle 1010: pfifo
tc qdisc add dev eth0 parent 10:110 handle 1011: pfifo
tc qdisc add dev eth0 parent 10:120 handle 1012: pfifo
tc qdisc add dev eth0 parent 10:130 handle 1013: pfifo
tc qdisc add dev eth0 parent 10:140 handle 1014: pfifo
tc qdisc add dev eth0 parent 10:150 handle 1015: pfifo
tc qdisc add dev eth0 parent 10:160 handle 1016: pfifo
tc qdisc add dev eth0 parent 10:170 handle 1017: pfifo
tc qdisc add dev eth0 parent 10:180 handle 1018: pfifo
tc qdisc add dev eth0 parent 10:190 handle 1019: pfifo
tc qdisc add dev eth0 parent 10:200 handle 1020: pfifo

# 設定過濾器
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 20 fw classid 10:20
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 30 fw classid 10:30
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 40 fw classid 10:40
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 50 fw classid 10:50
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 60 fw classid 10:60
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 70 fw classid 10:70
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 80 fw classid 10:80
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 90 fw classid 10:90
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 100 fw classid 10:100
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 110 fw classid 10:110
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 120 fw classid 10:120
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 130 fw classid 10:130
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 140 fw classid 10:140
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 150 fw classid 10:150
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 160 fw classid 10:160
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 170 fw classid 10:170
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 180 fw classid 10:180
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 190 fw classid 10:190
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 200 fw classid 10:200

[/CODE]

進階防火牆=>編輯自定義防火牆腳本
[CODE]
# uploads
# 設定上傳方面,先利用 iptables 給封包貼標籤,再交由 fw 過濾器進行過濾

#iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto dns -j MARK --set-mark 10
#iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto smtp -j MARK --set-mark 20
#iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto http -j MARK --set-mark 30

iptables -t mangle -A PREROUTING -s 192.168.1.21 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.22 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -s 192.168.1.23 -j MARK --set-mark 30
iptables -t mangle -A PREROUTING -s 192.168.1.24 -j MARK --set-mark 40
iptables -t mangle -A PREROUTING -s 192.168.1.25 -j MARK --set-mark 50
iptables -t mangle -A PREROUTING -s 192.168.1.26 -j MARK --set-mark 60
iptables -t mangle -A PREROUTING -s 192.168.1.27 -j MARK --set-mark 70
iptables -t mangle -A PREROUTING -s 192.168.1.28 -j MARK --set-mark 80
iptables -t mangle -A PREROUTING -s 192.168.1.29 -j MARK --set-mark 90
iptables -t mangle -A PREROUTING -s 192.168.1.30 -j MARK --set-mark 100
iptables -t mangle -A PREROUTING -s 192.168.1.31 -j MARK --set-mark 110
iptables -t mangle -A PREROUTING -s 192.168.1.32 -j MARK --set-mark 120
iptables -t mangle -A PREROUTING -s 192.168.1.33 -j MARK --set-mark 130
iptables -t mangle -A PREROUTING -s 192.168.1.34 -j MARK --set-mark 140
iptables -t mangle -A PREROUTING -s 192.168.1.35 -j MARK --set-mark 150
iptables -t mangle -A PREROUTING -s 192.168.1.36 -j MARK --set-mark 160
iptables -t mangle -A PREROUTING -s 192.168.1.37 -j MARK --set-mark 170
iptables -t mangle -A PREROUTING -s 192.168.1.38 -j MARK --set-mark 180
iptables -t mangle -A PREROUTING -s 192.168.1.39 -j MARK --set-mark 190
iptables -t mangle -A PREROUTING -s 192.168.1.40 -j MARK --set-mark 200


# downloads
# 下載方面

#iptables -t mangle -A POSTROUTING -d 192.168.1.6 -m layer7 --l7proto dns -j MARK --set-mark 10
#iptables -t mangle -A POSTROUTING -d 192.168.1.6 -m layer7 --l7proto smtp -j MARK --set-mark 20
#iptables -t mangle -A POSTROUTING -d 192.168.1.6 -m layer7 --l7proto http -j MARK --set-mark 30

iptables -t mangle -A POSTROUTING -d 192.168.1.21 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.22 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -d 192.168.1.23 -j MARK --set-mark 30
iptables -t mangle -A POSTROUTING -d 192.168.1.24 -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -d 192.168.1.25 -j MARK --set-mark 50
iptables -t mangle -A POSTROUTING -d 192.168.1.26 -j MARK --set-mark 60
iptables -t mangle -A POSTROUTING -d 192.168.1.27 -j MARK --set-mark 70
iptables -t mangle -A POSTROUTING -d 192.168.1.28 -j MARK --set-mark 80
iptables -t mangle -A POSTROUTING -d 192.168.1.29 -j MARK --set-mark 90
iptables -t mangle -A POSTROUTING -d 192.168.1.30 -j MARK --set-mark 100
iptables -t mangle -A POSTROUTING -d 192.168.1.31 -j MARK --set-mark 110
iptables -t mangle -A POSTROUTING -d 192.168.1.32 -j MARK --set-mark 120
iptables -t mangle -A POSTROUTING -d 192.168.1.33 -j MARK --set-mark 130
iptables -t mangle -A POSTROUTING -d 192.168.1.34 -j MARK --set-mark 140
iptables -t mangle -A POSTROUTING -d 192.168.1.35 -j MARK --set-mark 150
iptables -t mangle -A POSTROUTING -d 192.168.1.36 -j MARK --set-mark 160
iptables -t mangle -A POSTROUTING -d 192.168.1.37 -j MARK --set-mark 170
iptables -t mangle -A POSTROUTING -d 192.168.1.38 -j MARK --set-mark 180
iptables -t mangle -A POSTROUTING -d 192.168.1.39 -j MARK --set-mark 190
iptables -t mangle -A POSTROUTING -d 192.168.1.40 -j MARK --set-mark 200

[/CODE]

espresso 2006-11-09 09:58 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=happyzeus]
不是保證速率80kbps,最高速率800kbps @@?
[/QUOTE]
小的記的沒錯的話,這樣的實際頻寬會是 rate 80 [B]KB[/B], ceil 800 [B]KB[/B]
所以數值要是 KB 為單位,但是單位必須是 kbps,要問why? 要去問 tc 的作者 :jump2:

所以應該更正為 rate 10 , ceil 100.

若小的有錯誤請各位大大指正。謝謝!

yowlc 2006-11-09 07:26 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=happyzeus]可否幫我看看哪邊有問題
1.線路12M/1M(未達極速-設定為4800kbps/640kbps)
2.eth0=>接LAN
 eth1=>接WAN
3.10台電腦

問題:
用電腦(192.168.1.21)(用DHCP保留)下載速率400KB/秒(算正確吧?)
用電腦(192.168.1.36)(DHCP自動取得)下載怎麼也是400KB/秒????(非同時)
是哪邊設定有問題呢?麻煩知道的大大們給我點意見!


[/CODE][/QUOTE]



1. 定為4800kbps/640kbps -> 4800/8 = 600, 640/8 = 80, 所以
# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev eth1 parent 10: classid 10:1 htb rate 80kbps ceil 80kbps

# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev eth0 parent 10: classid 10:1 htb rate 600kbps ceil 600kbps


2.
tc qdisc add dev eth1 root handle 10: htb default 70
tc qdisc add dev eth0 root handle 10: htb default 70
但是你又把 70 這台規則給 192.168.1.27
所以到時如果有些規則沒有想到的, 就會去和 192.168.1.27 搶 default 70 這條頻寬喔.
舉例: 192.168.1.6 這台電腦
(1). 有用 dns, smtp, http => 會走 mark 10, 20, 30
(2). 用 (ftp, game, msn, skype..) => 會走 mark 70 喔, 這樣會跟 192.168.1.27 搶頻寬

3. 同理可證
1). 192.168.1.6 用 IE 上網時會和 192.168.1.23 搶同一條頻寬囉...
xxx.. -s 192.168.1.6 -m layer7 --l7proto http -j MARK --set-mark 30
xxx.. -s 192.168.1.23 -j MARK --set-mark 30
2). 其它同理可證..

happyzeus 2006-11-10 01:33 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
多謝2位的解答跟提醒^^
目前調整後是為我所要的!
有時間再來對服務作優先權的限制

abolu 2006-11-17 09:45 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
各位對QoS的作法真是詳細, 先來好好study一下,

有個問題想請教,
看到以上討論都是提到有最大頻寬和保證頻寬的方式,
是否有不設定最大頻寬和保證頻寬的方式,
直接用以Port或IP來設定不同的優先權,
例如設定成優先權 online game > http (port 80) > ftp (20-21) > emule ,
所有online game 封包 > http封包優先權 > ftp 封包 > emule封包,
就算有在使用emule也不影響到online game, http和ftp的速度,
tc是否也可以作到這樣的事,
請各位大大指教指教, 感恩!

yowlc 2006-11-17 06:09 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=abolu]各位對QoS的作法真是詳細, 先來好好study一下,

有個問題想請教,
看到以上討論都是提到有最大頻寬和保證頻寬的方式,
是否有不設定最大頻寬和保證頻寬的方式,
直接用以Port或IP來設定不同的優先權,
例如設定成優先權 online game > http (port 80) > ftp (20-21) > emule ,
所有online game 封包 > http封包優先權 > ftp 封包 > emule封包,
就算有在使用emule也不影響到online game, http和ftp的速度,
tc是否也可以作到這樣的事,
請各位大大指教指教, 感恩![/QUOTE]

重點來了....
1. 可以請您告訴我, online game 的 port 是多少嗎??
2. 當你可以告訴我多少之後, 我是不是可以把 emule 或 BT 的 port 設定成您說的那個 online game 的 port, 那是不是 P2P 又可以偷渡, 使用最高權限囉.

所以囉, 我的作法會是, 有十個人, 我就設定十一條規則, 然後用 Layer7 把 P2P 給一條規則, 優先權最低, 另外十條個別分給這十個人, 所以當有新的 P2P 軟體出來時, 雖然管不住, 但是至少會走使用那個人的那條規則, 這樣就不會影響另外九人的頻寬.

事情可以做, 但是要思考是不是會有可偷渡漏洞喔!!

abolu 2006-11-20 10:04 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
謝謝yowlc的指導,

我了解你的說法和作法,
我表達不清楚, 讓yowlc兄誤會了我的意思,

以上討論都是看到設定那一個IP或PORT給一個保證的頻寬或是最大頻寬, 以確保不會影響到其他人的使用,
我想請教的問題是, 可不可以不用限制頻寬的方式,
而是使用只有設定某一個IP或PORT的[COLOR="Red"]PRIO(優先權)[/COLOR], 不設定頻寬的方式,
來達到QoS的功能,
當然也可能遇到yowlc兄所提到偷渡的可能, 還須想辦法解決,
只是想知道是不是有不同的設定方式,
還是想請yowlc兄或各位大大指教指導一下,
感謝.


所有時間均為 +8。現在的時間是 02:02 PM



 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。