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/)

linux_xp 2005-10-03 10:22 AM

【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[b]Coyote Linux 頻寬管制 (QoS) 設定教學[/b]

[color=#333399][B]前言:[/B][/color]
----------------------------------------------------------------------
此篇教學以 Coyote Linux 軟體路由器為範例系統
演示如何以 tc 指令設定 QoS 頻寬管制

由於 Coyote Linux,即是精簡型 Linux
所以此篇 Linux QoS 設定原理,亦適用任何 Linux distro 發行版

以下教學內容會有點複雜,但完成的效果,可以媲美一台幾萬元的硬體路由器,物超所值。


[color=#333399][B]名詞解釋:[/B][/color]
--------------------------------------------------------------------
[B]QoS (Quality of Service):[/B]網路服務品質保證,俗稱的頻寬管制。

[B]佇列規則 (qdisc):[/B]
佇列 (Queue) 是網卡存放外送封包的地方
可以想像成是高速公路的閘道管制
如同閘道管制是用來管制高速公路(網路)的車流量(封包流量)
佇列規則就是用來管制網路流量的規則

若沒有設定,預設的規則是 FIFO (First In First Out,先進先出) ,意即完全無管制。

Linux QoS 的佇列規則有兩種:CBQ,HTB
CBQ (Class Based Queueing) 的設定比較複雜,但可設定的東西較多,彈性較大
HTB (Hierarchy Token Bucket) 是 CBQ 的改良版 ,設定較精簡,效能也比 CBQ 來的好
此篇教學,以 HTB 為主。


[B]類別 (class):[/B]
類別是一個集合,舉例要把頻寬分成:看網頁類,玩線上遊戲類,P2P 下載類....等等
P2P 下載類:不需要即時反應,所以給予最少的頻寬,最低的優先權
看網頁類:頻寬大一點,才不會等到睡著,但優先權用普通的即可
玩線上遊戲類:玩線上遊戲最怕的就是和人 PK 時網路 LAG,LAG 一下可能就輸了,所以優先權要最高,這是無庸置疑的


[B]過濾器:[/B]
檢查封包該屬於哪個類別,並給予歸類的東西,稱作過濾器。
Linux QoS 過濾器有兩種:u32,fw
u32: 設定比較複雜,需懂封包結構,才有辦法設定
fw:fw 是靠 iptables 給封包貼標籤,設定比較簡單
此篇教學,以 fw 為主。


[B]iptables 指令:[/B]
Linux 負責防火牆功能的,是一個叫 NetFilter 的模組,而 iptables 就是用來設定 NetFilter 模組的指令。

[B]tc 指令:[/B]
Linux 負責QoS (頻寬管制) 功能的,是一個叫 Traffic Control 的模組,而 tc 就是用來設定 Traffic Control 模組的指令。

[B]shell script:[/B]
俗稱腳本檔(劇本),Linux 作業系統會依照裡面的內容,逐行執行程式
類似 windows 下的 .bat 自動批次檔,但 shell script 功能比較強

在設定 QoS 的時候,往往要打上幾十行的指令
但是打了這一大堆東西,重開機之後就會消失
所以要把這些指令,編輯成一個腳本檔,讓電腦一開機就執行。


###############################################################################

教學開始 ↓

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

[B]導讀:[/B]
講解「類別」原理的部份,因為較深入可能會比較煩,可省略跳過
最重要的部分,是要完成那個頻寬計算分配表,因為底下實作時必須填入分配的數字。

[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/001.gif[/img]

此次教學示範的網路架構如上

對外網卡:eth1
對內網卡:eth0

將分配頻寬給三台 PC 電腦
每台電腦可以得到各自的保證的頻寬,以及可借用的最大頻寬

另有一台 伺服器,上面有 web、e-mail、dns 三個服務
近來利用 ADSL 在家裡架設伺服器的人數也有增多的趨勢
故此次教學,也示範如何管制伺服器的頻寬

default (預設) 類別
指如果封包不屬於那三台電腦,也不屬於伺服器,則歸類於 default 類別,進行頻寬控管
具體來說,此種情況就是筆記型電腦,PDA,PSP掌上遊戲機....... 等等之類,有使用到網路頻寬的設備


[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/002.gif[/img]

首先,第一步要計算出「合理的頻寬分配」

分配頻寬,就像在分家產一樣,務必公平合理,否則 QoS 便無法運作,或者無法達到預期的效果

請拿出紙、筆、計算機,或者利用試算表軟體,進行計算

此次的範例是 ADSL 2M/51K

HTB 佇列規則用的是 KByte/s ,所以要先換算

ADSL 的頻寬單位,是 bps (bits per second)
--------------------------------------
8 bps = 1 Byte/s

下載 2Mbps = 256 KB/s
上傳 512Kbps = 64 KB/s


保證下載,保證上傳:是手動填入的數字

「保證」指的是無論如何,別的「類別」都不能來搶這個頻寬

這個值不宜設太大,因為還可以借用頻寬,且保證設太大,整體頻寬都用完了,就失去意義了
一般建議值是每台電腦的保證上傳,最少要有 32Kbps = 4KB/s


其餘數值,是公式計算所得,計算方式如下:
-----------------------------------------------------------------
剩餘頻寬 (可借用的頻寬量) = 總頻寬 - 保證頻寬總和

最大下載 = 保證下載 + 下載剩餘頻寬
最大上傳 = 保證上傳 + 上傳剩餘頻寬

最大下載,最大上傳:亦可填入固定數字

「最大」指的是無論如何,該「類別」能使用的頻寬不會超過這個數字


優先權:指誰可以有較大權力搶用剩餘頻寬,由 0 開始的整數,數字愈小,優先權愈高,0 為最高優先權。

以上表的例子來說
192.168.1.1 這台電腦是筆者所用,俗話說肥水不落外人田,當然優先權為 0 最高
其餘電腦設 1,優先權普通,但若有特別的下載狂,可考慮降低他的優先權
至於伺服器的 http、smtp、dns 等對外的服務,服務的是外面的人
優先權可設小一點,以不干擾自己內部的人使用網路為原則


[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/003.gif[/img]

[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/004.gif[/img]

Linux QoS 有三要素:[B]佇列規則、類別、過濾器[/B]

完成了這三項的設定,也就完成了 Linux QoS 的設定
在計算分配好頻寬表的前置作業之後,接著要做的事,是規劃「類別」

---------------------------------------------------------------------------
[b]Q.為什麼「類別」規劃,會分成 下載、上傳 兩部份?[/b]

前面提到「佇列」是網卡存放外送封包的地方,故「佇列規則」也只能管制外送的封包

『Linux Advanced Routing & Traffic Control HOWTO』文件
用一個生動的比喻,來解釋這種情況:
"我們只能規定自己寫多少信給別人,無法限制每天會有多少人寫信給我們"

簡單的說,Linux QoS 只能管制網卡往外傳送的流量

不過這並不是說 Linux QoS 只能管制上傳
因 NAT 主機上,會有兩片網卡

「對外網卡」往外傳送,稱之為:上傳
「對內網卡」往外傳送,稱之為:下載

所以若要同時進行 上傳/下載 的雙向管制,必要條件為兩片網卡

整個 Qos 的設定,亦會分成兩部分,上傳 和 下載

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

類別規劃圖,看起來像一張樹狀圖
實體網卡的佇列規則,稱作「根」佇列規則
其下的類別,就像葉子一樣,又稱「葉類別」
而最末尾的「葉類別」,必須帶有「葉佇列規則」

您可能會注意到,每個「佇列規則」、「類別」都有編號
這是因為待會實作下指令時,必須用到

編號中的冒號為必須
「佇列規則」只有冒號左邊有數字
「葉類別」冒號左邊數字是指掛在哪個「根佇列規則」,右邊則是「葉類別」的編號

編號是隨人高興取的,但習慣上,會有一些固定的取法
「根佇列規則」會取編號 10:
第 1 層,第 1 個「葉類別」,取編號 10:1
第 2 層,第 1 個「葉類別」,取編號 10:10
第 2 層,第 2 個「葉類別」,取編號 10:20 ..........以此類推
最末尾的「葉佇列規則」,取編號 101: 、102: ......以此類推


此範例圖,是只有二層架構的樹狀圖
實際上,Linux QoS 的類別規劃,最多可以到八層,應用在規劃網段的頻寬管制
但一般用途,規劃到二層即夠使用,故不再做多層規劃的範例
若對多層規劃有興趣,請參考 Linux QoS 相關書籍

類別規劃圖,可畫也可不畫
畫出來的話,可以幫助 QoS 設定更容易了解
不過下面的實作教學,將會提供參考用原始碼,小部份修改後,直接套用即可 ^^


#################################################################################

[color=#333399][B]實作篇:[/B][/color] (開始實際設定 Linux QoS )
-----------------------------------------------------------------------------------------

實作篇,將開始用 tc 指令,和 iptables 指令,撰寫 shell script,實現 Linux QoS

原理講解的部份,由於上面規劃篇的時候,已經差不多都講解完了
再者指令的語法是變化多端的,礙於篇幅
因此底下實作篇將不做任何原理方面的講解
改以直接秀出參考用原始碼的方法,小部分修改後,套用即可


[B]Coyote 自定義 QoS 設定步驟:[/B](看圖說故事)

STEP.1
[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/005.gif[/img]

STEP.2
[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/006.gif[/img]

STEP.3
[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/007.gif[/img]

STEP.4
[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/008.gif[/img]

STEP.5
[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/009.gif[/img]

STEP.6
[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/010.gif[/img]

STEP.7
[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/tc/011.gif[/img]

##############################################

[color=#333399][B]Linux QoS 參考用原始碼[/B][/color]

基本說明:

1.凡是以 # 符號開頭,代表該行為註解,不會被系統執行
2.第一行的 #!/bin/sh 為 shell script 必要語法,不可刪除
3.Coyote 不支援 Big5 中文,所以中文註解貼上後會變成亂碼,是正常的
4.若要顯示中文註解,需轉碼成 UTF-8 (無 BOM格式)


[B] tc 指令 ( /etc/rc.d/rc.local ) :[/B]
[code]#!/bin/sh
#
# Coyote local command init script

# 清除 eth1 所有佇列規則
tc qdisc del dev [color=#CC0000]eth1[/color] root 2>/dev/null

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

# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10: [/color] classid [color=#CC0000]10:1[/color] htb rate [color=#CC0000]64[/color]kbps ceil [color=#CC0000]64[/color]kbps

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:10[/color] htb rate [color=#CC0000]2[/color]kbps ceil [color=#CC0000]4[/color]kbps prio [color=#CC0000]2[/color]
tc class add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:20[/color] htb rate [color=#CC0000]2[/color]kbps ceil [color=#CC0000]4[/color]kbps prio [color=#CC0000]2[/color]
tc class add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:30[/color] htb rate [color=#CC0000]32[/color]kbps ceil [color=#CC0000]40[/color]kbps prio [color=#CC0000]3[/color]


tc class add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:40[/color] htb rate [color=#CC0000]8[/color]kbps ceil [color=#CC0000]16[/color]kbps prio [color=#CC0000]0[/color]
tc class add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:50[/color] htb rate [color=#CC0000]4[/color]kbps ceil [color=#CC0000]12[/color]kbps prio [color=#CC0000]1[/color]
tc class add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:60[/color] htb rate [color=#CC0000]4[/color]kbps ceil [color=#CC0000]12[/color]kbps prio [color=#CC0000]1[/color]
tc class add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:70[/color] htb rate [color=#CC0000]4[/color]kbps ceil [color=#CC0000]12[/color]kbps prio [color=#CC0000]1[/color]


# 定義各葉類別的佇列規則
# parent 類別編號,handle 葉類別佇列規則編號
# 由於採用 fw 過濾器,所以此處使用 pfifo 的佇列規則即可
tc qdisc add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:10[/color] handle [color=#CC0000]101:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:20[/color] handle [color=#CC0000]102:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:30[/color] handle [color=#CC0000]103:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:40[/color] handle [color=#CC0000]104:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:50[/color] handle [color=#CC0000]105:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:60[/color] handle [color=#CC0000]106:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:70[/color] handle [color=#CC0000]107:[/color] pfifo

# 設定過濾器
# 指定貼有 10 標籤 (handle) 的封包,歸類到 10:10 類別,以此類推
tc filter add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]10[/color] fw classid [color=#CC0000]10:10[/color]
tc filter add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]20[/color] fw classid [color=#CC0000]10:20[/color]
tc filter add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]30[/color] fw classid [color=#CC0000]10:30[/color]
tc filter add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]40[/color] fw classid [color=#CC0000]10:40[/color]
tc filter add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]50[/color] fw classid [color=#CC0000]10:50[/color]
tc filter add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]60[/color] fw classid [color=#CC0000]10:60[/color]
tc filter add dev [color=#CC0000]eth1[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]70[/color] fw classid [color=#CC0000]10:70[/color]



# QoS eth0 下載方面
#

# 清除 eth0所有佇列規則
tc qdisc del dev [color=#CC0000]eth0[/color] root 2>/dev/null

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

# 定義第一層的 10:1 類別 (總頻寬)
tc class add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10: [/color] classid [color=#CC0000]10:1[/color] htb rate [color=#CC0000]256[/color]kbps ceil [color=#CC0000]256[/color]kbps

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:10[/color] htb rate [color=#CC0000]2[/color]kbps ceil [color=#CC0000]32[/color]kbps prio [color=#CC0000]2[/color]
tc class add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:20[/color] htb rate [color=#CC0000]2[/color]kbps ceil [color=#CC0000]32[/color]kbps prio [color=#CC0000]2[/color]
tc class add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:30[/color] htb rate [color=#CC0000]32[/color]kbps ceil [color=#CC0000]212[/color]kbps prio [color=#CC0000]3[/color]

tc class add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:40[/color] htb rate [color=#CC0000]16[/color]kbps ceil [color=#CC0000]196[/color]kbps prio [color=#CC0000]0 [/color]
tc class add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:50[/color] htb rate [color=#CC0000]8[/color]kbps ceil [color=#CC0000]188[/color]kbps prio [color=#CC0000]1[/color]
tc class add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:60[/color] htb rate [color=#CC0000]8[/color]kbps ceil [color=#CC0000]188[/color]kbps prio [color=#CC0000]1[/color]
tc class add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:1[/color] classid [color=#CC0000]10:70[/color] htb rate [color=#CC0000]8[/color]kbps ceil [color=#CC0000]188[/color]kbps prio [color=#CC0000]1[/color]

# 定義各葉類別的佇列規則
# parent 類別編號,handle 葉類別佇列規則編號
tc qdisc add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:10[/color] handle [color=#CC0000]101:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:20[/color] handle [color=#CC0000]102:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:30[/color] handle [color=#CC0000]103:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:40[/color] handle [color=#CC0000]104:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:50[/color] handle [color=#CC0000]105:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:60[/color] handle [color=#CC0000]106:[/color] pfifo
tc qdisc add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:70[/color] handle [color=#CC0000]107:[/color] pfifo

# 設定過濾器
tc filter add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]10[/color] fw classid [color=#CC0000]10:10[/color]
tc filter add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]20[/color] fw classid [color=#CC0000]10:20[/color]
tc filter add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]30[/color] fw classid [color=#CC0000]10:30[/color]
tc filter add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]40[/color] fw classid [color=#CC0000]10:40[/color]
tc filter add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]50[/color] fw classid [color=#CC0000]10:50[/color]
tc filter add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]60[/color] fw classid [color=#CC0000]10:60[/color]
tc filter add dev [color=#CC0000]eth0[/color] parent [color=#CC0000]10:[/color] protocol ip prio 100 handle [color=#CC0000]70[/color] fw classid [color=#CC0000]10:70[/color]

[/code]

說明:
--------------------------------
這邊的 eh1 是對外網卡,eth0 是對內網卡
若與您的實際環境不同,請自行修改

主要過程:
1.清除網卡上的所有佇列規則 (不論有或沒有)
2.定義網卡的佇列規則
3.定義各類別
4.定義各類別的佇列規則
5.定義過濾器

rate 後面的數字:保證頻寬
ceil 後面的數字:最大頻寬
單位只有:KByte/s ,不過上面要寫 kbps,因為這是 HTB 的規定語法

prio 後面的數字:優先權,數字愈低愈高,0最大

classid 後面的編號:完整類別編號
parent 後面的編號:父類別,或者佇列規則,亦即該項目上一層的物件


這裡列出了 7 個類別,可以自行新增或減少

default 類別,可有可無
較嚴謹的頻寬管制,可取消 default 類別,以避免內部有人鑽漏洞
一般情況,則建議設 default 比較好


註1:可參考前面的「類別規劃示意圖」,比較容易了解此處的設定用意

註2:這段參考用原始碼,只是一個範例,必須修改後,才能符合您的環境



[B] iptables 指令,過濾器 (編輯自定義防火牆規則) :[/B]
[code]# uploads
# 設定上傳方面,先利用 iptables 給封包貼標籤,再交由 fw 過濾器進行過濾

iptables -t mangle -A PREROUTING -s [color=#CC0000]192.168.1.6[/color] -m layer7 --l7proto [color=#CC0000]dns[/color] -j MARK --set-mark [color=#CC0000]10[/color]
iptables -t mangle -A PREROUTING -s [color=#CC0000]192.168.1.6[/color] -m layer7 --l7proto [color=#CC0000]smtp[/color] -j MARK --set-mark [color=#CC0000]20[/color]
iptables -t mangle -A PREROUTING -s [color=#CC0000]192.168.1.6[/color] -m layer7 --l7proto [color=#CC0000]http[/color] -j MARK --set-mark [color=#CC0000]30[/color]

iptables -t mangle -A PREROUTING -s [color=#CC0000]192.168.1.1[/color] -j MARK --set-mark [color=#CC0000]40[/color]
iptables -t mangle -A PREROUTING -s [color=#CC0000]192.168.1.2[/color] -j MARK --set-mark [color=#CC0000]50[/color]
iptables -t mangle -A PREROUTING -s [color=#CC0000]192.168.1.3[/color] -j MARK --set-mark [color=#CC0000]60[/color]

# downloads
# 下載方面

iptables -t mangle -A POSTROUTING -d [color=#CC0000]192.168.1.6[/color] -m layer7 --l7proto [color=#CC0000]dns[/color] -j MARK --set-mark [color=#CC0000]10[/color]
iptables -t mangle -A POSTROUTING -d [color=#CC0000]192.168.1.6[/color] -m layer7 --l7proto [color=#CC0000]smtp[/color] -j MARK --set-mark [color=#CC0000]20[/color]
iptables -t mangle -A POSTROUTING -d [color=#CC0000]192.168.1.6[/color] -m layer7 --l7proto [color=#CC0000]http[/color] -j MARK --set-mark [color=#CC0000]30[/color]

iptables -t mangle -A POSTROUTING -d [color=#CC0000]192.168.1.1[/color] -j MARK --set-mark [color=#CC0000]40[/color]
iptables -t mangle -A POSTROUTING -d [color=#CC0000]192.168.1.2[/color] -j MARK --set-mark [color=#CC0000]50[/color]
iptables -t mangle -A POSTROUTING -d [color=#CC0000]192.168.1.3[/color] -j MARK --set-mark [color=#CC0000]60[/color]

[/code]

說明:
--------------------
iptables 會去檢查封包,看它來自哪裡,或者 Layer-7 協定是哪種的 ,然後貼上標籤
之後 fw 過濾器,會依照標籤上的數字,來給封包歸類別

IP:電腦的 IP

Layer-7 協定種類:
此部份是採用 l7-filter 直接做過濾,例如:dns,smtp,http
P2P 下載的封包,也可以管制
l7-filter 詳細用法請參考 Coyote 的教學文章,補充說明

mark 後面的數字:「類別」的編號

註:這段參考用原始碼,只是一個範例,必須修改後,才能符合您的環境


#############################################################################

Linux QoS 設定,看似複雜,然其實可以做到非常彈性化 (可程式化)

其效能是取決 CPU、RAM、網卡晶片,可由使用者自行決定組裝等級
若使用高等配備,並不會輸給一台幾萬元的昂貴硬體路由器
且在價格上,更具優勢

昔日網路上的中文 Linux QoS 資料,非常稀少
即使是現在,雖然市面上已有幾本 Linux QoS 相關中文書籍了
但網路上的 Linux QoS 的中文討論,仍是寥寥可數
故小弟今日貼此一篇,望能拋磚引玉之效,開創 Linux QoS 風潮

Linux QoS 的技術
基礎的像此篇管制小型網路頻寬之應用
進階的可以配合 l7-filter 做 service 的頻寬管制
到深入一點,複雜一點的
更可以藉由 iproute2 多重路由,達到多WAN的架構


歡迎有興趣的朋友,一起加入研究討論的行列
若有任何心得,請發表此篇後面
謝謝

:)

##########################################
[color=#CC0000][b]補充 01: [/b] [/color] 2005/10/04
##########################################

[b]FW 過濾器使用方法補充說明 [/b]

[b]附加說明:如何限制 P2P 下載?[/b]

Linux QoS 有三要素:佇列規則,類別,過濾器

佇列規則是實際負責 QoS 的單位
類別是定義 「頻寬大小」的單位
而過濾器,顧名思義,就是用來過濾封包,判斷封包該屬於哪個類別的單位

換句話說,要限制 P2P....等等之類,關鍵就在於「過濾器」
只要「過濾器」有辦法把 P2P 的封包抓出來,那麼要管制它就不難了


FW 實際上是靠 iptables 給封包貼標籤
然後 FW 再依照標籤編號,給封包歸類別
所以下面講的,其實是 iptables 的語法.....


[b]iptables 語法簡單講解:[/b]
------------------------------------
iptables -t mangle -A PREROUTING -s 192.168.1.1 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.1 -j MARK --set-mark 10

[b]-t mangle[/b]:指定使用 mangle 表格 (QoS 要用這個表格)
[b]-A[/b]:新增一條規則

[b]PPRROUTING[/b]:上傳方向,是內部電腦傳出去的,後面加 -s 來源端
[b]POSTROUTING[/b]:下傳方向,是外面網路傳進來的,後面 -d 目的地

[b]-s[/b]:來源端
[b]-d[/b]:目的地

[b]-j mark[/b]:處理動作,給予貼標籤
[b]--set-mark[/b]:貼什麼標籤,數字指定於後

※ 重要:
在 Linux下, 所有的指令和檔名,都有分英文大小寫
PREROUTING 和 prerouting 所代表的意義是不同的,後者是錯誤語法

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


iptables 給封包貼標籤時,「比對規則」有以下六種基本型態:
(基本型態可混搭,變成更嚴謹的複雜型態)


[color=#000099]1.針對 IP 過濾[/color]
iptables -t mangle -A PREROUTING [color=#CC0000]-s 192.168.1.1[/color] -j MARK --set-mark 10

[color=#000099]2.針對「網段」過濾[/color]
iptables -t mangle -A PREROUTING [color=#CC0000]-s 192.168.1.0/24[/color] -j MARK --set-mark 10

[color=#000099]3.針對 MAC 過濾[/color]
iptables -t mangle -A PREROUTING [color=#CC0000]-m --mac-source 00:00:AA:BB:CC:EE[/color] -j MARK --set-mark 10

[color=#000099]4.針對 PORT 過濾[/color]
iptables -t mangle -A PREROUTING [color=#CC0000]-p tcp --sport 80[/color] -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING [color=#CC0000]-p tcp --dport 80[/color] -j MARK --set-mark 10

iptables -t mangle -A PREROUTING[color=#CC0000] -p udp --sport 53[/color] -j MARK --set-mark 10
iptables -t mangle -A PREROUTING [color=#CC0000]-p icmp[/color] -j MARK --set-mark 10

[color=#000099]5.針對 「網卡介面」過濾 (假如對內有多片網卡的話,-i 進入方向, -o 出去方向)[/color]
iptables -t mangle -A PREROUTING [color=#CC0000]-o eth0[/color] -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING[color=#CC0000] -i eth0[/color] -j MRAK --set-mark 10


[color=#000099][b]6. l7-filter 過濾 [/b][/color]
iptables -t mangle -A PREROUTING [color=#CC0000]-m layer7 --l7proto bittorrent[/color] -j MARK --set-mark 10
( BT上傳方向的封包,給予貼標籤 10 )

iptables -t mangle -A POSTROUTING [color=#CC0000]-m layer7 --l7proto edonkey[/color] -j MARK --set-mark 10
( 驢子 下載方向的封包,給予貼標籤 10 )


若要管制 P2P 下載,就是把 bittorrent 和 edonkey 兩個 L7 協定
各設置 上傳/下載,共4條過濾器規則
並把這4條規則的封包,通通給予貼某一個類別的標籤,例如:90
讓過濾器把 P2P 的封包,丟給該類別 10:90 去處理即可

註:此部份僅是設定「過濾器」,實際在處理 QoS 的是「佇列規則」、「類別」,所以另一邊也必須有相對應的設定。例如:必須定義 10:90 這個類別的頻寬,整個 P2P 管制的 QoS 才會生效。


[b]附錄:Coyote 可用 l7-filter 協定一覽表[/b]
[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/coyote/l7-filter003.gif[/img]


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


########################################
[color=#6633FF][b]補充 02:[/b] [/color] 2005/11/03
########################################

[b]淺談 Coyote 防火牆之工作原理[/b]
從底層 iptables 的角度來看

[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/coyote/f001.gif[/img]

Coyote 的防火牆,預設政策為「允許通過」

預設政策的意思是:
假如封包不符合任何使用者訂立的規則,則以預設政策來處理。


[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/coyote/f004.gif[/img]

iptables 的 filter 表格,內建只有三個鏈 (Chain):
[b]INPUT[/b]、[b]FORWARD[/b]、[b]OUTPUT[/b]

而 iptables 允許使用者新增自訂鏈
Coyote 在設計上,會自動新增一些自訂鏈

在「WEB 管理介面」中
有關防火牆方面的設定,其實是以 [b]Coyote 自訂的鏈[/b] 來處理
以下會進一步說明:


[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/coyote/f003.gif[/img]

上圖所示
在高級防火牆配置中,有兩種類型:
-------------------------------------
1.Admin (管理)
2.Access (訪問)

[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/coyote/f005.gif[/img]

1.Admin (管理) 實際上是寫入 Coyote 的自訂鏈:[b]remote-admin[/b]

此 [b]remote-admin[/b] 自訂鏈,是被安排在 [b]INPUT[/b] 鏈中

這說明了,所謂的類型 Admin (管理),是和 Coyote 本機有關的
它是用來管制誰能夠從遠端登入 Coyote 主機,進行操作


[img]http://home.pchome.com.tw/art/linux2005/images/web/pczone/coyote/f002.gif[/img]

2.Access (訪問) 實際上是寫入 Coyote 的自訂鏈: [b]access-acl [/b]

此 access-acl 自訂鏈:是被安排在 FORWARD 鏈中

所以它是和 NAT 有關係的
用來管制外部網路,和內部網路電腦的連線

至於 [b]Internet Interface (int-if)[/b] 和 [b]Internet (int-net)[/b] 選項的差別

如上圖所示,從 source (來源)端,我們可以看出:

Internet Interface (int-if),實際結果是 anywhere,和 any 選項是一樣的

Internet (int-net),則是指 ISP 的閘道端


經測試後發現
ISP 閘道端,並不等於 Internet (泛指網際網路 0.0.0.0)
阻擋 LAN 內電腦的封包,進入 ISP 閘道端
並無法阻擋其進入網際網路
所以這是一個詭異的選項,它實際上並沒有太大作用

若要從 WEB 管理介面設定防火牆
建議外部網路的選項,選擇 Internet Interface (int-if) 或者 any
才能真正起到保護作用

[b]註[/b]
在終端模式下,查詢 iptables 設定明細表的指令為:
----------------------------------------------
iptables -L (預設查詢 filter 表格)
iptables -t nat -L (指定查詢 nat 表格)
iptables -t mangle -L (指定查詢 mangle 表格)


######################################

其它補充....待續

:)

62chaokai 2005-10-03 03:25 PM

真是太讚了!佩服你的熱心,文我收下了。謝謝。應該請版主把這相關文章置頂。太有用的文章。

ropin 2005-10-03 04:37 PM

真是有用的資訊,不過看起來有點複雜,需要好好研究一下,這樣可以省下大把預算了,謝謝。
小弟覺得最有用的還是管理 P2P 方面。

rushoun 2005-10-03 07:10 PM

經典!經典!
linux_xp又出擊了!
真是感謝咧!趕快訂閱收起來!

joeing 2005-10-04 04:52 AM

真是鬨動武林,驚動萬教!
高手阿!!!!!
真是謝謝啦!!!!!

kevin0615 2005-10-04 04:33 PM

我的ADSL 1m/64k ,用上面的範例去修改,一台電腦每次上網開網頁時,另一台電腦在玩天堂2就會delay 2~3秒,可以幫我看一下哪邊有錯。

#!/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 8kbps ceil 8kbps

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 1kbps ceil 2kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 1kbps ceil 2kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 1kbps ceil 2kbps prio 3


tc class add dev eth1 parent 10:1 classid 10:40 htb rate 1kbps ceil 2kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:50 htb rate 1kbps ceil 2kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:60 htb rate 1kbps ceil 2kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:70 htb rate 1kbps ceil 2kbps 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

# 設定過濾器
# 指定貼有 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



# 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 128kbps ceil 128kbps

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth0 parent 10:1 classid 10:10 htb rate 1kbps ceil 86kbps prio 2
tc class add dev eth0 parent 10:1 classid 10:20 htb rate 1kbps ceil 86kbps prio 2
tc class add dev eth0 parent 10:1 classid 10:30 htb rate 1kbps ceil 86kbps prio 3

tc class add dev eth0 parent 10:1 classid 10:40 htb rate 16kbps ceil 101kbps prio 0
tc class add dev eth0 parent 10:1 classid 10:50 htb rate 8kbps ceil 93kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:60 htb rate 8kbps ceil 93kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:70 htb rate 8kbps ceil 93kbps 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 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

linux_xp 2005-10-04 08:35 PM

[QUOTE=kevin0615]我的ADSL 1m/64k ,用上面的範例去修改,一台電腦每次上網開網頁時,另一台電腦在玩天堂2就會delay 2~3秒,可以幫我看一下哪邊有錯。
[/QUOTE]

資訊太少,無法判斷

有幾台電腦需要頻寬管制?
網卡編號,哪個是對外,那個是對內?
頻寬分配表?

針對你的情況,以下為範例 :
(因為資訊不足,所以具體情況,都是用猜的,不一定完全符合你的環境,可能需要修改後才能套用)

[color=#3333FF][b]STEP.1[/b][/color]
首先要查出,對外網卡(管制上傳),對內網卡(管制下載),它們的編號是多少

[img]http://img397.imageshack.us/img397/3036/0016cc.gif[/img]

[img]http://img381.imageshack.us/img381/2706/0022jb.gif[/img]

如圖所示,這種情況的話,eth0 是對內網卡(管制下載),而 eth1 就是對外網卡(管制上傳)。

網卡的編號不是絕對的,可能每台機器都不相同,所以先觀察網卡編號,判斷哪個是「對外網卡」,那個是「對內網卡」。


[color=#3333FF][b]STEP.2[/b][/color]
先構想要如何分配頻寬

1M/64K,總下載 128KB/s,總上傳 8KB/s

假設只有兩台電腦好了,分別為:
192.168.1.1:玩天堂2專用的
192.168.1.2:看網頁用的

那麼規劃出 3 個類別:
---------------------------------------
[b]第一台電腦 - 玩天堂2用類別:[/b]線上遊戲要不LAG 最少要保證有4KB/s 上傳能力

[b]第二台電腦 - 看網頁用類別:[/b]看網頁首重下載,只要能動即可,速度不重要

[b]default 類別:[/b]為保留可能性額外加入的電腦,特地保留這個類別。例如有可能家中原本只有兩台電腦,某天臨時又插入一台需要上網,它就會吃 default 的類別頻寬。但是這個類別只是有備無患,並不一定會用到,所以保證頻寬設0。

[img]http://img111.imageshack.us/img111/2996/0032ca.gif[/img]


[color=#3333FF][b]STEP.3[/b][/color]

[b]tc 指令部份: (編輯任意檔:/etc/rc.d/rc.local )[/b]
[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 30

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

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 4kbps ceil 6kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 2kbps ceil 4kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 0kbps ceil 2kbps prio 2

# 定義各葉類別的佇列規則
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
t
# 設定過濾器
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


# 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 128kbps ceil 128kbps

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

# 定義各葉類別的佇列規則
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 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
[/code]


[color=#3333FF][b]STEP.4[/b][/color]

[b]iptables 設定方面: (高級防火牆配置 - 編輯自訂防火牆規則)[/b]
[code]
# uploads
# 設定上傳方面,先利用 iptables 給封包貼標籤,再交由 fw 過濾器進行過濾

iptables -t mangle -A PREROUTING -s 192.168.1.1 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.2 -j MARK --set-mark 20

# downloads
# 下載方面

iptables -t mangle -A POSTROUTING -d 192.168.1.1 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.2 -j MARK --set-mark 20
[/code]


大致上就是這樣子
由於提供的資訊不足,所有環境的情況都是假設的
以上範例僅供參考,可能修要修改後才能套用

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

有時候指令看起來好像很長一大串,很複雜
其實去掉註解,就剩沒幾行了

再仔細去觀察去掉註解的指令串,可以發現
其實很多地方都是重複的,只有幾個數字在改變而已

仔細觀察一下,多實作幾次,就可以熟練了

:)

史萊姆 2005-10-28 12:17 AM

linux_xp你好:
我是用seednet 8m/640k
目前配置如下(上傳下載的速率可能要再確認過)
[img]http://home.pchome.com.tw/home/bell504/qos.jpg[/img]

不知這樣的配置還ok嗎??
我想請問
我是把emule和ftp放在同一台主機
它有辦法說分辦哪個優先嗎??
另ftp的保證上傳下載有限低限制嗎??
若某電腦有開機,但沒有做上網的動作(或者是關機)
那該保證上傳下載會空出來嗎??
謝謝

linux_xp 2005-10-28 04:44 PM

[QUOTE=史萊姆]linux_xp你好:

不知這樣的配置還ok嗎??
我想請問
我是把emule和ftp放在同一台主機
它有辦法說分辦哪個優先嗎??
另ftp的保證上傳下載有限低限制嗎??
若某電腦有開機,但沒有做上網的動作(或者是關機)
那該保證上傳下載會空出來嗎??
謝謝[/QUOTE]

1.OK,GOOD

2.
有,要辨識 P2P 封包,須使用 l7-filter
FTP 封包,建議也使用 l7-filter
因為 FTP 服務有兩組 port,其中一組是不固定的。


3.若不想讓 FTP 佔用太多頻寬,可將最大上傳/下載,手動調低,固定一個數字


4.保證頻寬(上傳/下載),不管任何時候,都不會被其它類別佔用
若該電腦沒開機使用,此頻寬就是空著浪費
所以此數字不宜設大,視服務需求而定

對反應速度比較要求的服務
需給予適當的保證頻寬,才能確保服務品質
例如:線上遊戲,網路視訊,網路電話....等等,對反應速度比較要求

若沒有保證頻寬,在頻寬分配的時候須搶頻寬,會有幾秒鐘不穩定的情況
這會導致玩線上遊戲一時 LAG,而造成角色趴掉,或者對戰時輸掉 SKYPE 講網路電話,會出現明顯斷斷續續....之類的

:)

史萊姆 2005-10-28 05:51 PM

[QUOTE=linux_xp]1.OK,GOOD

2.
有,要辨識 P2P 封包,須使用 l7-filter
FTP 封包,建議也使用 l7-filter
因為 FTP 服務有兩組 port,其中一組是不固定的。


3.若不想讓 FTP 佔用太多頻寬,可將最大上傳/下載,手動調低,固定一個數字


4.保證頻寬(上傳/下載),不管任何時候,都不會被其它類別佔用
若該電腦沒開機使用,此頻寬就是空著浪費
所以此數字不宜設大,視服務需求而定

對反應速度比較要求的服務
需給予適當的保證頻寬,才能確保服務品質
例如:線上遊戲,網路視訊,網路電話....等等,對反應速度比較要求

若沒有保證頻寬,在頻寬分配的時候須搶頻寬,會有幾秒鐘不穩定的情況
這會導致玩線上遊戲一時 LAG,而造成角色趴掉,或者對戰時輸掉 SKYPE 講網路電話,會出現明顯斷斷續續....之類的

:)[/QUOTE]
謝謝
那想再請問,我目前主機是用磁片來開機
開完機後skype可連線,msn不能連,而有一些網站可連一些又不行
這會是什麼原因…,電腦(非指主機,一般用的電腦)都要重開機再連線嗎??
(我本來是用Icop+硬碟在連線)

對於保證頻寬的部份
我可以說一台電腦設兩個部份(一個是一般使用,一個是skype)
然後skype保證頻寬為0,但優先權最高
這樣子可行嗎??謝謝

linux_xp 2005-10-28 07:22 PM

[QUOTE=史萊姆]謝謝
那想再請問,我目前主機是用磁片來開機
開完機後skype可連線,msn不能連,而有一些網站可連一些又不行
這會是什麼原因…,電腦(非指主機,一般用的電腦)都要重開機再連線嗎??
(我本來是用Icop+硬碟在連線)

對於保證頻寬的部份
我可以說一台電腦設兩個部份(一個是一般使用,一個是skype)
然後skype保證頻寬為0,但優先權最高
這樣子可行嗎??謝謝[/QUOTE]

1.
沒碰過這個問題,我家裡也是用 Coyote 當頻寬分享器,底下的 Client端電腦,連線都正常,msn 可以用。

檢查一下各種軟體的相關設定,例如:瀏覽器或MSN之類的,proxy 不要設。快取全部清空。

檢查 Client端電腦,閘道 IP 設定是否正確,閘道 IP 就是 Coyote主機。

若是 DHCP 自動取得,檢查 DHCP 設定是否正確。

檢查 Coyote 的防火牆設定,規則是否符合邏輯。若不確定,先把防火牆規則拷貝起來後全部清空,若可以連了,就表示原先防火牆設定錯誤。

重開機也可以,只是花比較多時間
在 windows 下,可以把網路先停用,再啟用,會 reset 網路配置,比較快


2.可以

如教學範例所示, server 只有一台,但是我可以再細分那台 server 電腦上有三個服務,這三個服務,各有其頻寬管制規則。

其原理是相同的,一台電腦 (IP 或 MAC),底下還可以細分很多類別(服務)。

但像 skype 這類的 VoIP 服務,需要即時的反應速度
就和線上遊戲一樣,給予適當的保證頻寬值 (非0),連線會比較穩定

至於純上網,下載資料,查資料之類的
由於不需要即時反應,保證頻寬可設 0

優先權高,是指有較大的機會搶得頻寬
而這個頻寬,若當下為其它類別「使用中」
QoS 機制會進行協調工作,將該頻寬使用權,轉移給優先權較高者
此過程約需要數秒鐘,期間連線會不穩定

故需要即時反應的服務,建議設定保證頻寬
以避免因 QoS 協調造成的短暫 LAG
這在玩線上遊戲和別人攻城時尤其重要,LAG 個 1秒可能就輸了
這就是設定保證頻寬的用意,可以提供較高品質的穩定連線

:)

chaunun 2005-10-28 08:06 PM

[QUOTE=linux_xp]
但像 skype 這類的 VoIP 服務,需要即時的反應速度
就和線上遊戲一樣,給予適當的保證頻寬值 (非0),連線會比較穩定[/QUOTE]

Coyote要如何設定Skype的QoS呢?Skype Outgoing的Port都是不固定的,而且常常就是用80 Port. 有辦法用l7-filter去把Skype的QoS提高嗎?

linux_xp 2005-10-28 09:14 PM

[QUOTE=chaunun]Coyote要如何設定Skype的QoS呢?Skype Outgoing的Port都是不固定的,而且常常就是用80 Port. 有辦法用l7-filter去把Skype的QoS提高嗎?[/QUOTE]

這就是 Coyote 的優點,它內建 l7-filter ,無須重新編譯核心。

一般的 Linux distro 發行版,並沒有內建 l7-filter,需重新編譯核心才能使用,對非 Linux 系統熟手來說,會有一定程度的困難。而 Coyote 由於是內建的,可直接使用。

說明:
-----------------------------------------------------------
l7-filter :Layer-7 Filter (OSI 模型第七層,過濾器)

國際標準組織 ISO ,於十幾年前提出的網路標準 OSI 模型
是網路設備的基本參考模型
其模型總共有七層,第七層是軟體應用層 (Application)

一般防火牆或路由器,只能過濾到第三層 Network 層
Network 層屬於 TCP/IP,以及 Port...等等,比較低層次的協定
所以無法管制 port 不固定的服務 (Service)

唯有標榜具 Layer-7 Filter 性能的防火牆,才能過濾 P2P 之類的服務

l7-filter 是直接去分析封包的內容資料,和 port 無關
但如果封包是加密過的,則無法分析

ISP 對於P2P 限速的手法,亦是使用了 l7-filter 技術
所以要破解 ISP 的 P2P 限速,可朝封包加密發展 (題外話)...

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

FW 過濾器,會依照封包的「標籤」,給封包歸「類別」

而封包原先是沒有「標籤」的
「標籤」是利用 iptables 檢測封包之後,貼上的

QoS 機制過程說明:
---------------------------------
1.當 iptables 抓到一個封包,判斷它的內容是屬於 skype 的封包,就給予貼上 10 這個「標籤」。

2.當 FW 過濾器,偵測到此封包上的「標籤」為10,就把這個封包丟到 10:10 這個「類別」。

3.qdisc 佇列規則,依據「類別」的頻寬定義,給予該封包頻寬管制。



[b]利用 iptables 給 skype 封包,貼「標籤」之範例:[/b]
--------------------------------------------------------------
iptables -t mangle -A PREROUTING [color=#CC0000]-m layer7 --l7proto skype[/color] -j mark --set-mark 10
( skype 上傳方向的封包,給予貼標籤 10 ,全區網性質)

iptables -t mangle -A POSTROUTING [color=#CC0000]-m layer7 --l7proto skype[/color] -j mark --set-mark 10
( skype 下載方向的封包,給予貼標籤 10,全區網性質 )


iptables -t mangle -A PREROUTING [color=#6633FF]-s 192.168.1.1[/color] [color=#CC0000]-m layer7 --l7proto skype[/color] -j mark --set-mark 10
( 專門針對某台電腦 IP )

iptables -t mangle -A POSTROUTING [color=#6633FF]-d 192.168.1.1[/color] [color=#CC0000]-m layer7 --l7proto skype[/color] -j mark --set-mark 10
( 專門針對某台電腦 IP )

其它參數:[color=#6633FF]
-s 192.168.1.0/24[/color]
針對的某個網段,可子網路切割,適用於企業辦公室環境


由於 FW 是靠 iptables 給封包貼「標籤」
來判斷封包屬於哪個「類別」

換句話說,只要 iptables 可以做到的過濾功能,通通可以使用
其種類變化多端
用於 QoS 基本型態有六種,但混搭起來可達數十種之多
若有興趣可參考 iptables 相關書籍

:)

史萊姆 2005-10-28 11:17 PM

linux_xp你好:
主機開機完
大家還是不能上網…= ="
skype、emule都能連線…
把防火牆配置都清掉還是沒辦法
用icop去開機就能連線…
"閘道 IP 設定是否正確,閘道 IP 就是 Coyote主機"
主機設定為192.168.2.1
所以閘道就是192.168.2.1嘛
那TCP/IP底下的慣用DNS伺服器是做什麼用的??
我用ICOP開機時,DNS也要設192.168.2.1才能上網
SKYPE和EMULE不管什麼情況都能連出去…= ="

我想說重做一次開機片
結果發現沒有我的網路卡型號耶…
我的網卡是3com 3C905C,選項中只有一個3C59x
我是用2.26版安裝的
過程中有一個DMZ是什麼用途呢??

linux_xp 2005-10-29 02:38 AM

[QUOTE=史萊姆]linux_xp你好:
主機開機完
大家還是不能上網…= ="
skype、emule都能連線…
把防火牆配置都清掉還是沒辦法
用icop去開機就能連線…
"閘道 IP 設定是否正確,閘道 IP 就是 Coyote主機"
主機設定為192.168.2.1
所以閘道就是192.168.2.1嘛
那TCP/IP底下的慣用DNS伺服器是做什麼用的??
我用ICOP開機時,DNS也要設192.168.2.1才能上網
SKYPE和EMULE不管什麼情況都能連出去…= ="

我想說重做一次開機片
結果發現沒有我的網路卡型號耶…
我的網卡是3com 3C905C,選項中只有一個3C59x
我是用2.26版安裝的
過程中有一個DMZ是什麼用途呢??[/QUOTE]

1.那可能是 DNS 的問題吧

Client 端電腦,手動指定 IP 時,DNS 可以設兩組:

第一 DNS:設 Coyote 192.168.2.1
Coyote 有快取 DNS 的功能,可以加速域名解析

第二 DOS:設 ISP 的 DNS server
例如:
168.95.1.1 (HiNet)
61.64.127.1 (so-net)

-------------------------------------------
DNS (Domain Name Service)
域名解析服務
例如:
將 [url]www.pczone.com.tw[/url]
轉換成 61.63.4.251 的這個服務就叫 DNS

在 TCP/IP 協定中,所有封包只認 IP
實際上打域名是不會通的,之所以會通,是因為有 DNS 的關係
而 DNS 若沒有指定,沒有機器負責轉換,當然就不會通了


2.
相近的試試看
有些網卡晶片,驅動是可以共用的
例如:DLink 530-TX,用 8139too.o 也通
3com 的我沒用過,不曉得....


DMZ ?
那可能是 2.26 版的新功能
我只裝到 2.24 而已,2.24 製作開機片時,並沒有 DMZ 選項...

DMZ 是「完全埠轉換」的意思
其英文全名直翻是「非軍事區」
指介於 Internet 戰場(易受網路攻擊),和後方安全區域網,中間的區域
常見於 IP 頻寬分享器

這樣講可能會很模糊
可以想像成是把內部一台使用 Private IP (私人IP) 的電腦
完全對應 Public IP (真實IP),使其曝露在 Internet 上
常用於內部電腦,當 server 的情況

例如:將 192.168.1.1 設為 DMZ
對外真實 Public IP 為 1.2.3.4
則 Internet 上,任何嘗試和 1.2.3.4 的連接
皆會指向內部那台 192.168.1.1的電腦

就好像把 1~65535 tcp/udp 的埠
一次全設定「埠轉換」到 192.168.1.1 的意思
而此時閘道防火牆(Coyote),是無法保護 192.168.1.1 這台電腦的

如沒需要,是不需要這樣設
因為 DMZ 這台電腦,會完全曝露在 Internet
若沒安裝防火牆,很容易被網路攻擊和入侵

:)

史萊姆 2005-10-29 03:44 AM

我終於找到原因了…= =
果然是DNS的問題,真是感謝
但用ICOP時卻不用加ISP的DNS到2個
所以我就找遍整個Coyote的選項

(我沒有裝過之前的版本,直接用2.26)
DNS 緩存 - 配置
允許 Coyote DNS 緩存?
緩存 DNS 可以提高網域名稱解析速度。 (推薦)

原來這個設定它預設是關的
打開之後就一切OK了
接下來終於可以把硬碟拿掉省電
不知道K6-2 166 + 64+64+32 RAM + 95W POWER的耗電量會是多少呢??
再來就是試Qos了

ps:之前用ICOP的時候就想用CF卡
當初買單插與主機板平行的
結果沒想到主機板有抓到,安裝過程也有抓到
但到了掃描磁碟時就卡住了…永遠的卡住,換卡也一樣
今天又去下標買了個外接式的,說有支援DMA,不知行不行用呢…

說的防火牆規則
# Firewall Access Configuration File
#
# This file contains entries in the following format:
# type active permit|deny protocol source[/mask] destination[/mask] port
#
# type = access # Control access THROUGH the Firewall <====這行和下面那行有什不同??
# type = admin # Control access TO the Firewall
# active = Y or N


access Y permit tcp int-net 192.168.2.86 8881:8999 #BT
access Y permit tcp int-net 192.168.2.86 4662 #eMule
access Y permit udp int-net 192.168.2.86 4672 #eMule

埠轉換的規則
# Port Forwarding Configuration File
#
# This file contains entries in the following formats:
# auto active protocol port desination [dns]
# port active destination [internet_ip] [protocol [port1 [port2]]] [dns]
#
# active = Y or N
#
auto Y tcp 8881:8999 192.168.2.86 #BT
port Y 192.168.2.86 tcp 4662 4662 #eMule
port Y 192.168.2.86 udp 4672 4672 #eMule

結果我重新載入防火牆後…
Configuring firewall rules...
Firewall rule line# 11 - source address error
Firewall rule line# 12 - source address error
Firewall rule line# 13 - source address error
Configuring custom firewall rules...
Configuring port forwarding for internal hosts...
Running Line UP Scripts...

哪做錯了嗎??

(剛才發現一件事…,註冊這麼久了,發言才15篇…)

linux_xp 2005-10-29 06:26 PM

[QUOTE=史萊姆]
不知道K6-2 166 + 64+64+32 RAM + 95W POWER的耗電量會是多少呢??
[/quote]

這個說不準的,要用儀器去測才知道
估計約在 30~50W 左右

可以拔掉兩支 RAM,留一支就好了,多少可以節省一點點電費

根據我使用幾個月的心得,RAM 使用率不曾超過 20MB
不過這和連接數也有關聯,連接數如果愈多,需要愈多 RAM
但不會很多就是了,32MB 應該就很夠用了

[QUOTE]
ps:之前用ICOP的時候就想用CF卡
當初買單插與主機板平行的
結果沒想到主機板有抓到,安裝過程也有抓到
但到了掃描磁碟時就卡住了…永遠的卡住,換卡也一樣
今天又去下標買了個外接式的,說有支援DMA,不知行不行用呢…
[/QUOTE]

我是用「雙面」「插排線型」
在Y拍買 150元,確定可以用

「單面」的我也有買,可能是技術比較舊,經測試有相容性問題
插上 256MB CF 卡,抓不到

建議使用「雙面」的,技術比較新,相容性較好
雖然雙面只插一片有點浪費,但其實和單面的價差約只有 50元


[QUOTE]
說的防火牆規則
# type = access # Control access THROUGH the Firewall <====這行和下面那行有什不同??
# type = admin # Control access TO the Firewall
# active = Y or N
access Y permit tcp int-net 192.168.2.86 8881:8999 #BT
access Y permit tcp int-net 192.168.2.86 4662 #eMule
access Y permit udp int-net 192.168.2.86 4672 #eMule

埠轉換的規則
auto Y tcp 8881:8999 192.168.2.86 #BT
port Y 192.168.2.86 tcp 4662 4662 #eMule
port Y 192.168.2.86 udp 4672 4672 #eMule

結果我重新載入防火牆後…
Configuring firewall rules...
Firewall rule line# 11 - source address error
Firewall rule line# 12 - source address error
Firewall rule line# 13 - source address error
Configuring custom firewall rules...
Configuring port forwarding for internal hosts...
Running Line UP Scripts...
[/QUOTE]

如果是在「訪問」裡頭新增的規則,就會標示 access
在「管理」裡頭新增的規則,則標示 admin

這個是 Coyote 自己創造的一種規格,並不是標準的 iptable 語法

感覺 access 和 admin 並沒有差別,只是方便識別
讓管理人員,可以從表格中
依照 access 或 admin,來判斷此條規則的用途

「訪問」:外部 to 內部,連入連線
「管理」:內部 to 外部,連出連線

閘道防火牆,可以進行 [雙向] 的管制

藉由限制外部 Internet 「訪問」內部電腦
來達到保護內部電腦的效果,避免被攻擊或入侵

另外有時老闆會要求不准員工上班使用 MSN .....之類的
或是父母不准小孩玩線上遊戲....之類的
就可藉由管制「內部 to 外部」的通訊,來達到此目的
這個就叫「管理」

但實際上,不管是用 access 或 admin,都可以做到完整的規則
所以那個可能只是好看的,方便管理人員識別而已

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

Firewall rule line# 11 - source address error
這是說防火牆規則 第11行,偵測到語法錯誤:來源位址錯誤

估計應該是在「編輯自定義防火牆」裡頭
不是上面列的這些

史萊姆 2005-10-29 11:44 PM

l我原本的防火牆規則
1 # Firewall Access Configuration File
2 #
3 # This file contains entries in the following format:
4 # type active permit|deny protocol source[/mask] destination[/mask] port
5 #
6 # type = access # Control access THROUGH the Firewall
7 # type = admin # Control access TO the Firewall
8 # active = Y or N
9
10
11 access Y permit tcp int-net 192.168.2.86 8881:8999 #BT
12 access Y permit tcp int-net 192.168.2.86 4662 #eMule
13 access Y permit udp int-net 192.168.2.86 4672 #eMule

重新載入防火牆後…
Configuring firewall rules...
Firewall rule line# 11 - source address error
Firewall rule line# 12 - source address error
Firewall rule line# 13 - source address error
Configuring custom firewall rules...
Configuring port forwarding for internal hosts...
Running Line UP Scripts...

好像就是上面那個的問題耶…

若改成
1 # Firewall Access Configuration File
2 #
3 # This file contains entries in the following format:
4 # type active permit|deny protocol source[/mask] destination[/mask] port
5 #
6 # type = access # Control access THROUGH the Firewall
7 # type = admin # Control access TO the Firewall
8 # active = Y or N
9
10 access Y permit tcp int-if 192.168.2.86 8881:8999 #BT
11 access Y permit tcp int-if 192.168.2.86 4662 #eMule
12 access Y permit udp int-net 192.168.2.86 4672 #eMule <====這行我故意不改

就會變成
Configuring firewall rules...
Firewall rule line# 12 - source address error
Configuring custom firewall rules...
Configuring port forwarding for internal hosts...
Running Line UP Scripts...

前面的數字是在這邊才加上的
(int-net)internet與(int-if)internet interface有什麼不同呢??
為什麼改了就沒有錯誤訊息…= ="

我若在埠轉換的部份設定好
BT與eMule(高ID與Kad)就都可以連線了
防火牆規則有寫跟沒寫是一樣的…
還是說我沒有封全部,所以等於是全開放…??

剛剛發現了一張IBM的MD(340MB)
裝上那個轉卡居然能動…
看來真的相容性有問題…

linux_xp 2005-10-30 12:35 AM

[QUOTE=史萊姆]l

前面的數字是在這邊才加上的
(int-net)internet與(int-if)internet interface有什麼不同呢??
為什麼改了就沒有錯誤訊息…= ="

我若在埠轉換的部份設定好
BT與eMule(高ID與Kad)就都可以連線了
防火牆規則有寫跟沒寫是一樣的…
還是說我沒有封全部,所以等於是全開放…??
[/QUOTE]

建議防火牆部份,先用 web 介面去設
由於 web 介面只是滑鼠勾選,無關語法,會比較正確

先用 web 介面去設定後,系統會自動寫入 script
到時再來改,可以有個語法的參考依據


Coyote 的防火牆,預設是全部開放
正確的說,是完全沒有規則
在這種情況下,iptables 不會阻擋任何連線

較嚴謹的防火牆,有一個通則:封鎖全部,開放特定

因此最後一條規則,要加入 deny all 通訊協定
這樣對 Coyote 系統本身,和內部電腦來說會比較安全
雖說 Coyote 系統非常精簡,對外服務就只有 SSH
但多加一層保護,有備無患,以免有未知漏洞或木馬開後門

由於內部電腦是靠 NAT 與外面連線
內部電腦使用的是 Private IP
Internet 上是無法對 Private IP 的電腦進行攻擊的
NAT 可以保護內部電腦,不受外部網路的攻擊 (在沒有埠轉換的情況下)

所以 Coyote 的防火牆,預設才會採用完全開放
主要是避免如果使用者不懂防火牆工作原理,會導致無法連線


:)

史萊姆 2005-10-30 12:49 AM

[QUOTE=linux_xp]建議防火牆部份,先用 web 介面去設
由於 web 介面只是滑鼠勾選,無關語法,會比較正確

先用 web 介面去設定後,系統會自動寫入 script
到時再來改,可以有個語法的參考依據
:)[/QUOTE]
我就是用web去設定的
結果還是一樣…= ="

[QUOTE=linux_xp]
Coyote 的防火牆,預設是全部開放
正確的說,是完全沒有規則
在這種情況下,iptables 不會阻擋任何連線

較嚴謹的防火牆,有一個通則:封鎖全部,開放特定

因此最後一條規則,要加入 deny all 通訊協定
這樣對 Coyote 系統本身,和內部電腦來說會比較安全
雖說 Coyote 系統非常精簡,對外服務就只有 SSH
但多加一層保護,有備無患,以免有未知漏洞或木馬開後門
:)[/QUOTE]
所以說如果最後一條規則加入 deny all 通訊協定
那就表示說必須要把各電腦中所需的port與協定都加入規則之中囉
這樣不就會有一大長串了嗎…


幾天下來問了一堆問題
真是麻煩你了,謝謝
(Qos都還沒開始實做…= =)

linux_xp 2005-10-30 01:31 AM

[QUOTE=史萊姆]我就是用web去設定的
結果還是一樣…= ="


所以說如果最後一條規則加入 deny all 通訊協定
那就表示說必須要把各電腦中所需的port與協定都加入規則之中囉
這樣不就會有一大長串了嗎…


幾天下來問了一堆問題
真是麻煩你了,謝謝
(Qos都還沒開始實做…= =)[/QUOTE]


建議可以改用 2.24 版看看,至少我用 2.24版是沒問題的

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

2.25~之後的版本,是巴西民間組織接手後,推出的版本
我記得他們網頁,在版本後面,有寫 beta (測試)這個字樣
換言之,那個並不是 stable 穩定版本,仍在開發和除錯中

HD Install 工具磁片,是通用的,2.xx 版本皆適用

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

一般觀念中,防火牆是用來保護內部電腦

但實際上,防火牆是「雙向」的,可分成兩個方向

「外部 to 內部」:防止外面小偷駭客入侵
「內部 to 外部」:防止內賊木馬偷傳資料出去

外部:WAN,Internet,網際網路
內部:LAN,區域網路


除非是極其嚴謹的網管政策
例如:
有些涉及開發的企業,基於商業機密,網管上會有非常嚴格之政策
只准上 http,其餘通通封鎖,甚至 web-ftp 之類的都必須管制
以防員工以任何手段,偷傳商業機密出去
這種情況下,就會用到「內部 to 外部」的管制

但一般家庭使用,並不會做到如此神經兮兮的地步
通常家庭用
對「內部 to 外部」的方向,是不會進行管制的
只會管制「外部 to 內部」


而「外部 to 內部」,即是所謂的 service 服務
例如:
內部有一台 web server,監聽 port 80
當外部網路,有人嘗試以 port 80 進行連線時
此時閘道防火牆的埠轉換,會引導至正確的內部電腦

「外部 to 內部」,有多少 service
這是可以預期且固定的,數目並不會太多

所謂最後一條規則,deny all
是指: 來源於 Internet ,目標在 Local Netwok
也就是 「外部 to 內部」
泛指來自 Internet,不請自來的連線要求,加以管制


暴露於 Internet 的電腦,每分每秒都會受到埠掃瞄
這是駭客攻擊手法的第一步:資料列舉
先掃描出目標電腦,有開放哪些 port,再決定攻擊方法

此時電腦若沒有監聽該 port
會回應給一個封包,說此 port 沒有開放,或者權限不足,有一個代碼
這是沒有防火牆保護的情況
除了遲早會被找出漏洞之外
回應封包,也會吃頻寬,有可能會被 DDoS 攻擊導致服務癱瘓

而有防火牆保護的話,被阻擋的封包,可給予 drop (丟棄)
drop 為直接丟棄封包,不給予任何回應
攻擊方會收到"連線逾時"的回覆
有兩種情況會連線逾時:
1.目標電腦不存在或未開機
2.目標電腦有防火牆保護
不管是哪一種,這意味著要入侵此台電腦是有困難的,駭客就會放棄

:)

chaunun 2005-10-30 01:39 PM

感謝 linux_xp 大大指導用l7-filter去做QoS的方法~ 讓我又學到很多~
另外我想請教一下,Coyote是不是一定只能用NAT Mode?要做Bridge Mode的話要自己重Build Kernel?
我在想那一天如果可以用iptable做出多WAN, L7 QoS, 又支援Bridge Mode, 那目前市場那些設備就大為失色了~
可惜2版的Coyote已停止發開....

史萊姆 2005-10-30 01:44 PM

[QUOTE=linux_xp]建議可以改用 2.24 版看看,至少我用 2.24版是沒問題的

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

2.25~之後的版本,是巴西民間組織接手後,推出的版本
我記得他們網頁,在版本後面,有寫 beta (測試)這個字樣
換言之,那個並不是 stable 穩定版本,仍在開發和除錯中

HD Install 工具磁片,是通用的,2.xx 版本皆適用
:)[/QUOTE]
我剛試了2.24版
情況還是一樣…= ="
但我發現在2.24版的編輯配置檔埵閉搢
int-if = internet interface (eth1)
int-net = internet p.........
我選下面的就會錯
選上面的就不會有錯誤訊息

請問這個功能是做什麼用的??
允許 LAN 使用外部 IP ? (推薦)
允許內部用戶使用外部 IP 或網域名稱訪問該服務。
該選項不會產生任何附加的風險。

我用我的電腦測試連ftp主機
打開就連的上,關掉就連不上了
不過經過測試關了外面還是連的進來


關於QOS的部份:
iptables 設定方面: (高級防火牆配置 - 編輯自訂防火牆規則)
iptables -t mangle -A PREROUTING -s 192.168.2.86 -j MARK --set-mark 30
這堛撤ARK好像要用大寫,我本來copy過來是小寫,結果一堆錯誤
後來看到上面有範例是大寫,所以改成大寫就好了,好像跟你的不太一樣

tc 指令部份: (編輯任意檔:/etc/rc.d/rc.local )
這個部份完成後存檔重開機就會自動載入然後就是算是開始運作了嗎??
還是說要在QOS頻寬管制再打開什麼之類的呢??
謝謝

linux_xp 2005-10-30 11:48 PM

[QUOTE=史萊姆]我剛試了2.24版
情況還是一樣…= ="
但我發現在2.24版的編輯配置檔埵閉搢
int-if = internet interface (eth1)
int-net = internet p.........
我選下面的就會錯
選上面的就不會有錯誤訊息
[/QUOTE]


請參考第一篇的:補充 02

(2005/11/03 修改)


[QUOTE]
請問這個功能是做什麼用的??
允許 LAN 使用外部 IP ? (推薦)
允許內部用戶使用外部 IP 或網域名稱訪問該服務。
該選項不會產生任何附加的風險。

我用我的電腦測試連ftp主機
打開就連的上,關掉就連不上了
不過經過測試關了外面還是連的進來
[/QUOTE]

這是讓內部網路,可以直接用網址,連上內部網路中的 server
此技術牽涉到 DNS 解析
有一個專業術語,好像是 loop 什麼的,忘記了

假設註冊的網址是 [url]http://www.xxx.com.tw[/url]

有些網路設備,或者 IP 分享器
在內部電腦中,直接打網址 [url]http://www.xxx.com.tw[/url]
會無法連線,必須打 Private IP 才有辦法連
是因為缺少這個功能的原因
而 Coyote 有內建這個功能,不過要啟用才會生效

[QUOTE]
關於QOS的部份:
iptables 設定方面: (高級防火牆配置 - 編輯自訂防火牆規則)
iptables -t mangle -A PREROUTING -s 192.168.2.86 -j MARK --set-mark 30
這堛撤ARK好像要用大寫,我本來copy過來是小寫,結果一堆錯誤
後來看到上面有範例是大寫,所以改成大寫就好了,好像跟你的不太一樣
[/QUOTE]

好眼力,的確是大寫 MARK

前面是筆誤,已更正


[QUOTE]
tc 指令部份: (編輯任意檔:/etc/rc.d/rc.local )
這個部份完成後存檔重開機就會自動載入然後就是算是開始運作了嗎??
還是說要在QOS頻寬管制再打開什麼之類的呢??
謝謝[/QUOTE]

/etc/rc.d/rc.local
這個檔,在 Linux 作業系統中的用途
有點類似 DOS 下的 Autoexec.bat 自動執行批次檔
或者 windows 下的 [啟動]

是一開機就執行的

但有時可能小部份修改後,不想重開機,想讓它直接生效
可以直接去執行那個檔
該檔的權限為 755,是可執行檔,打 /etc/rc.d/rc.local 就會執行


如果都設定正確,QoS 是一開機就運作的


:)

史萊姆 2005-10-31 12:25 AM

linux_xp

感謝你的詳細說明與指導
目前已經可以正常運作了
(先用excel來做前置作業真的讓接下來的工作更輕鬆)
接下來就是再做細部的設定
若還有問題再向你請教
謝謝

Coyote的那個讓硬碟休息的程式是會關掉硬碟
然後要用的時候才開啟嗎??
所以沒事的話是不會用到硬碟或cf囉
那我用ibm的microdrive也沒有關係嗎??

linux_xp 2005-10-31 06:08 PM

[QUOTE=史萊姆]linux_xp

感謝你的詳細說明與指導
目前已經可以正常運作了
(先用excel來做前置作業真的讓接下來的工作更輕鬆)
接下來就是再做細部的設定
若還有問題再向你請教
謝謝

Coyote的那個讓硬碟休息的程式是會關掉硬碟
然後要用的時候才開啟嗎??
所以沒事的話是不會用到硬碟或cf囉
那我用ibm的microdrive也沒有關係嗎??[/QUOTE]

太客氣了,這麼好的東西當然要分享了 :D

網路上,每個人的電腦程度不一定都相同
從回覆中,也可以看到推廣時會遇到什麼問題
好方便製作 FAQ 或補充說明,讓更多人可以使用


那個硬碟休息程式,根據該 Add-ones 作者的說法
當硬碟沒有使用超過1分鐘,會讓硬碟進入低耗電的休眠狀態
而當需要讀寫硬碟時,會再次啟動硬碟到正常工作模式
類似 windows 裡面也有的電源管理

具體的來說
硬碟是一種機械裝置,其上有馬達讓碟片保持一定轉速
馬達是硬碟裡面最耗電的元件
而硬碟休眠程式,是在硬碟閒置時,讓馬達停止運轉,以達到省電
但電路板和其上的晶片仍保持在低耗電工作模式,以便隨時接收系統指令


我是用CF卡的,感覺不到差異
CF卡是快閃記憶體,無須通電保持資料,平常無使用時本身就不秏電的
用硬碟的話,應該會感覺到差異

:)

rushoun 2005-10-31 06:24 PM

我也推薦用CF卡,雖然我是使用FREESCO的系統,但是省卻磁碟有可能損壞的問題,
而且開機快速。

史萊姆 2005-11-02 01:06 PM

我想再請問
它可以做到時間限制嗎??
例如說我的ftp開放時間之類的…
謝謝

pavo 2005-11-02 04:03 PM

BrazilFW 2.26 似乎有這功能了

目前正再翻譯成 正體中文

其中在
Added 05-15-2005
有新增加 關於 排程
等我翻譯好在試試吧,還沒翻譯好 不想見到一堆英文
而且我是把他載入到 CF 卡中 所以想先翻譯完成在一次在做一次
伺服機才停機重開

等翻譯好 在放上來請大家幫忙

linux_xp 2005-11-03 12:36 PM

關於 Coyote 設定中的:
----------------------------------
int-if 和 int-net 的差別
Admin (管理) 和 Access (訪問) 的差別

前面小弟的回覆有誤

在由列出 iptables 明細,詳細比對之後,有新的結論
請參考第一篇的補充

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

新增:補充 02

[b]淺談 Coyote 防火牆之工作原理[/b]
(從底層 iptables 的角度來看)

:)

史萊姆 2005-11-03 07:07 PM

這又讓我再多了解了
謝謝

==========================================
至於 Internet Interface (int-if) 和 Internet (int-net) 選項的差別

如上圖所示,從 source (來源)端,我們可以看出:

Internet Interface (int-if),實際結果是 anywhere,和 any 選項是一樣的

Internet (int-if),則是指 ISP 的閘道端 <====這邊是不是好像打錯了??

harvey9368 2006-02-13 05:59 PM

小弟 在coyote2.24版設定QoS 的機制遇到一個問題
如果coyote 是以PPP0的方式撥接上網
接下來的QOS機制 就完全不按規則來
上傳部分 : 好像被全部都被歸到 default 類別
下載部分 : 都正常

但如果再coyote前加一台IP分享器 讓coyote以DHCP取得IP
QOS的機制就完全正常(上下傳都正常)
eht1---> 對外網卡
eth0--->對內網卡

快被搞瘋囉 誰來幫幫我吧

#!/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 120

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

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 2kbps ceil 33kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 2kbps ceil 33kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 2kbps ceil 33kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:40 htb rate 2kbps ceil 25kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:50 htb rate 2kbps ceil 25kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:60 htb rate 2kbps ceil 25kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:70 htb rate 2kbps ceil 17kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:80 htb rate 2kbps ceil 17kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:90 htb rate 2kbps ceil 17kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:100 htb rate 2kbps ceil 17kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:110 htb rate 2kbps ceil 17kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:120 htb rate 4kbps ceil 25kbps prio 2

# 定義各葉類別的佇列規則
# 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 100: pfifo
tc qdisc add dev eth1 parent 10:110 handle 110: pfifo
tc qdisc add dev eht1 parent 10:120 handle 112: 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


# QoS eth0 下載方面
#

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

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

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

# 定義第二層葉類別
# rate 保證頻寬,ceil 最大頻寬,prio 優先權
tc class add dev eth0 parent 10:1 classid 10:10 htb rate 12kbps ceil 300kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:20 htb rate 12kbps ceil 300kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:30 htb rate 12kbps ceil 300kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:40 htb rate 12kbps ceil 500kbps prio 0
tc class add dev eth0 parent 10:1 classid 10:50 htb rate 12kbps ceil 250kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:60 htb rate 12kbps ceil 250kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:70 htb rate 12kbps ceil 250kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:80 htb rate 12kbps ceil 250kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:90 htb rate 12kbps ceil 250kbps prio 2
tc class add dev eth0 parent 10:1 classid 10:100 htb rate 12kbps ceil 250kbps prio 2
tc class add dev eth0 parent 10:1 classid 10:110 htb rate 12kbps ceil 250kbps prio 2
tc class add dev eth0 parent 10:1 classid 10:120 htb rate 12kbps ceil 200kbps prio 2

# 定義各葉類別的佇列規則
# 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 110: pfifo
tc qdisc add dev eth0 parent 10:110 handle 111: pfifo
tc qdisc add dev eth0 parent 10:120 handle 112: 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


# uploads
# 設定上傳方面,先利用 iptables 給封包貼標籤,再交由 fw 過濾器進行過濾

iptables -t mangle -A PREROUTING -s 192.168.0.100 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.0.101 -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -s 192.168.0.102 -j MARK --set-mark 30
iptables -t mangle -A PREROUTING -s 192.168.0.103 -j MARK --set-mark 40
iptables -t mangle -A PREROUTING -s 192.168.0.104 -j MARK --set-mark 50
iptables -t mangle -A PREROUTING -s 192.168.0.105 -j MARK --set-mark 60
iptables -t mangle -A PREROUTING -s 192.168.0.106 -j MARK --set-mark 70
iptables -t mangle -A PREROUTING -s 192.168.0.107 -j MARK --set-mark 80
iptables -t mangle -A PREROUTING -s 192.168.0.108 -j MARK --set-mark 90
iptables -t mangle -A PREROUTING -s 192.168.0.109 -j MARK --set-mark 100
iptables -t mangle -A PREROUTING -s 192.168.0.110 -j MARK --set-mark 110
# downloads
# 下載方面

iptables -t mangle -A POSTROUTING -d 192.168.0.100 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.0.101 -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -d 192.168.0.102 -j MARK --set-mark 30
iptables -t mangle -A POSTROUTING -d 192.168.0.103 -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -d 192.168.0.104 -j MARK --set-mark 50
iptables -t mangle -A POSTROUTING -d 192.168.0.105 -j MARK --set-mark 60
iptables -t mangle -A POSTROUTING -d 192.168.0.106 -j MARK --set-mark 70
iptables -t mangle -A POSTROUTING -d 192.168.0.107 -j MARK --set-mark 80
iptables -t mangle -A POSTROUTING -d 192.168.0.108 -j MARK --set-mark 90
iptables -t mangle -A POSTROUTING -d 192.168.0.109 -j MARK --set-mark 100
iptables -t mangle -A POSTROUTING -d 192.168.0.110 -j MARK --set-mark 110

linux_xp 2006-03-05 05:52 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[quote]如果coyote 是以PPP0的方式撥接上網
接下來的QOS機制 就完全不按規則來
上傳部分 : 好像被全部都被歸到 default 類別
下載部分 : 都正常

但如果再coyote前加一台IP分享器 讓coyote以DHCP取得IP
QOS的機制就完全正常(上下傳都正常)
eht1---> 對外網卡
eth0--->對內網卡

快被搞瘋囉 誰來幫幫我吧[/quote]


上傳管制的部份,把網卡介面改成 「ppp0」試試看

本來:eth1
改成:ppp0

harvey9368 2006-03-06 04:45 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=linux_xp]上傳管制的部份,把網卡介面改成 「ppp0」試試看

本來:eth1
改成:ppp0[/QUOTE]

tc qdisc del dev eth1 root 2>/dev/null
^^^
把eth1 換成ppp0 對嗎(全部的eth1都換成ppp0)

今天早上試了一下 還是不行
需要把防火牆規則加入 - i ppp0 or -i eth1
iptables -t mangle -A PREROUTING ( - i ppp0 or -i eth1 )-s 192.168.1.100 -j MARK --set-mark 100


補充一下: 已經換為BrazilFW 2.26 可是以上的情形依然存在

cappella 2006-03-06 06:12 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
請問 固三IP ADSL 後方 接線應該如何接呢?

目前 是 ADSL --> HUB --> 各個IP ,有 WEB / MAIL / FTP 各一台PC

由於 網路頻寬是3個IP 共用的

coyote 的主機 應該 裝在哪一個環結呢?

harvey9368 2006-03-06 08:23 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
今天試了一下 BrazilFW 本身的QOS 手動設定配置檔
上下傳可以依照 所設定的流量 來管制 , 但是好像只有一個parent類別 設定起來 總覺得不是很順心,沒有辦法依照自己的意思來設定 綁手綁腳的 ,
有人知道要如何再QOS手動配置裡新增一個parent類別 嗎:eye:

harvey9368 2006-03-06 08:28 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=cappella]請問 固三IP ADSL 後方 接線應該如何接呢?

目前 是 ADSL --> HUB --> 各個IP ,有 WEB / MAIL / FTP 各一台PC

由於 網路頻寬是3個IP 共用的

coyote 的主機 應該 裝在哪一個環結呢?[/QUOTE]


就小弟所知道的範圍 coyote主機 應該是要裝在ADSL 之後

ADSL--->coyote--->HUB--->各台主機

可是coyote好像只能用一個public IP 在coyote後方的主機 只能用private IP

再以port 來對應相關的服務

以上愚見 如有錯誤請大家指正

linux_xp 2006-03-06 08:33 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=harvey9368]tc qdisc del dev eth1 root 2>/dev/null
^^^
把eth1 換成ppp0 對嗎(全部的eth1都換成ppp0)

今天早上試了一下 還是不行
需要把防火牆規則加入 - i ppp0 o...[/QUOTE]

假設:
對外界面:ppp0
對內介面:eth0

上傳的走向: -i eth0 -o ppp0
可簡寫為:-o ppp0

下傳的走向:-i ppp0 -o eth0
可簡寫為:-o eth0


ppp0 比較麻煩的地方,在於它並不是一開機即存在
PPPoE 撥接成功後,才會出現 ppp0 這個介面
而這撥接動作,需要花費數秒的時間,等待 ISP 回應

如果將 iptables 的規則,寫在 /etc/rc.local 中
/etc/rc.local 是類似 windows autoexec.bat 的東西
為開機程序最後的時候,會執行一次的 script

那麼就會有一個問題,如果 /etc/rc.local 執行前
ppp0 這個介面,都還未產生 (還未撥接上)
iptables 下了針對 ppp0 的規則,肯定會出錯
因為此時 ppp0 介面根本不存在

這種情況下,必須改造一下 script 的寫法
shell script 其實是一種程式語言
加入「do 迴圈」和「if 判斷式」
先檢查 ppp0 這個介面是否存在?
如不存在,則 sleep 2秒,繼續迴圈
如存在,則跳出迴圈,繼續下面的設定
這部份在那本書籍中,有範例


另一個除錯的方法是:
開機等個幾秒或一分鐘,確定 ppp0 已經存在後 (已經撥接成功)
開啟終端機,ssh 登入,或是直接主機操作
以 root 權限,執行 /etc/rc.local 那個檔
檢查是否有錯誤訊息

語法正確的話,不會顯示東西
語法錯誤,程式會提示第幾行錯誤

chmod +x /etc/rc.local
/etc/rc.local

linux_xp 2006-03-06 08:42 PM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=cappella]請問 固三IP ADSL 後方 接線應該如何接呢?

目前 是 ADSL --> HUB --> 各個IP ,有 WEB / MAIL / FTP 各一台PC

由於 網路頻寬是3個IP 共用的

coyote 的主機 應該 裝在哪一個環結呢?[/QUOTE]

要用 BrazilFW 2.26版

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

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

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

ATU-R → (對外孔) BrazilFW 2.26 (DMZ 孔) → 交換器 → WEB / MAIL / FTP

設定方面:
1. 把 NAT 功能關閉
2. 於 DMZ 設定頁,設定相關資料
3. 設定防火牆,或 QoS

harvey9368 2006-03-07 11:55 AM

回覆: 【教學】Coyote Linux 頻寬管制 (QoS) 設定教學
 
[QUOTE=linux_xp]假設:
對外界面:ppp0
對內介面:eth0

上傳的走向: -i eth0 -o ppp0
可簡寫為:-o ppp0

下傳的走向:-i ppp0 -o eth0
可簡寫為:-o eth0


ppp0 比較麻煩的地方,在於它並不是一開機即存在
PPPoE 撥接成功後,才...[/QUOTE]

謝謝您的回答
今天試了一下
直接執行/etc/rc.d/rc.local 這個檔

如果對外的網卡設為"eth1" 則會顯示 找不到 eth1 這個裝置

如設為ppp0 則什麼都沒顯示

接下來把裝置都改成ppp0 發現一些好玩的事情

如果用 yahoo,hinet 的webmail 來寄信 觀察流量 DUmeter 的流量會在 3-30kB 上上下下亂跑 可是不會超過 我所設的最大頻寬 (30KB)
用FTP 到hinet 測試上傳 DUmeter的流量 就會很穩定的在30KB左右徘迴
這是什麼問題阿??:eye: :eye:


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



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

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