wjc007 发表于 2005-11-4 19:42:07

学习

LPI 发表于 2005-11-19 20:18:58

原先的图片是放在台湾的网页空间,有网友反应看不到
小弟把图片重新上传到国外的空间,应该就看的到了

论坛系统说发表超过 200分钟不能编辑’
所以我在这里重发一篇新的
此篇新添加了补充02,顺便更正第一帖有些错误的地方
例如:-j MARK 后面的 MARK 需大写

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

Coyote Linux 频宽管制 (QoS) 设定教学

前言:
----------------------------------------------------------------------
此篇教学以 Coyote Linux 软件路由器为范例系统
演示如何以 tc 指令设定 QoS 频宽管制

由于 Coyote Linux,即是精简型 Linux
所以此篇 Linux QoS 设定原理,亦适用任何 Linux distro 发行版

以下教学内容会有点复杂,但完成的效果,可以媲美一台几万元的硬件路由器,物超所值。


*Ycolor}#333399]
-----=----------------?-- -----
---
-----------------------9--------
QoS (Quality of Servicei:网络服务质量保证,俗称的频宽Ǯ?制。

队列规则 (qdisc)ϼ?
队列 (Queue) 是网卡存放外送封包的地方
??/䛥惣象成高速公路的???关管制
如同罱关管制搯用朥管制高速公路(???络)的车???量?封包ⵁ量)
队列规则就是用来管制网络流臏的ȧ?则

若?2?昉??>定,预设的规???是 FKFO (First In FiRst Mut,先进啈出) ,意即完全无管制㐀

Linux QoS 的?؟列规则??两种:CBQ,HT?
CBQ (Class"Based Qteueing) 皔设定比较复杂???佄可设定皅东西较多,弹‧较大
HTB (Hierarchy Token Buck?t) 是 CBQ 的改艏版 ,ா定较精简,效能也比 CBQ 来的好
f??篇教学,??? HTB 为主c??


{b]类别 (class):[?b]
??;别是一个ɛ?合,丮例要把频宽???∐:看网页类o??玹在线縸戏类(P2P 三载类....等等
P2P 下载类:不需要实时反庖,所亥给予最少的频宽,最低的优先捃
看网页类:颕宽大d??点???才???会等到睡着,但优先权甸普通犄即可
玩圬线游ƈ?类??????圠线丹戏最怕的就景和人?PK Ɨ?网络 LAG,LAG 一下凯能就输溆,扂以优先权要最高,这???无庼g??疑的
*

过滤器:
检查封包该属于哪个类匫,并给予归簺皅东西,称作过滤器。
Linux QoS 过滤器有两种:u32,fw
u32: 设定比较复杂,需懂封包结??,才有办法设定
f?:fu 是靠 iPtables 给封包贴标ǭ?,设定比较简单
此篇教学Ͼ?以 fw 为主。


iptables 指令:
Linux 촟责???火墙功能?
?,是一个m?? NetFil|er 的模块,而 iptables 就是用来设定 NeTFilter 模块的指令。

["]tc 指令:
Linux 负责SoS (???ᮽg??制) 功能皆フ是一个??+ Draffic Fonurol 的模块,而 tc 就是用来设定 Traffic Control 模块的戇令。

shell script:
仗称脚本文件(틣???),Linux Ⓧ???峻统会依???里面的内容,逐行执?!?程序
籿༼ windows 下的 .bat 自动批次文件,但 shell script 功能比较弾-

圈设定 QoS 皀时堙,往??见打上几ō?行的指????
但是打了这䰀大堆东西o??重开机之后就会消失
所令要抚这些指令-编辑成一个脚本文件,让计算机一开机就执行〢


#####"#######?#!########'##c#################################"#################

教学往始 ↓

觌划翇:K/color] (分配频宽,定三类别)
---------------------------------)----------------m--------
-----------
由于 QoS 要午计算出整体频宽给予分配$才有办法设宊
扠以在设定介前<必须兌进行规划的ʼn?置作业

导读:
讲解À?类䈫??原理的部份,因为龃深Ņ?勯能会毐较烦,可省略跳过
漀重趁的部分,是要完成那个频宽计算分配졨,因为底下实作时必须填入分配???摰字。

htTp://imf504.imagesiack.us/img504/1296/0017ew.gif

ƭ?次教学示范的网络架构如上

对外网剡:eth1
对内网䍡;eth0

将分配频宽给三??? PC 计算机
每台计算?????以得到各自的保证的???宽,滥及可借用的最大频宽

另有一台 服劁器上霢有 web、e-mail???dns 下个服务
近晥利璨 ADSL 在家里架誾服务器的人数也有增多??趋势
故此次教学,也示茓如何管制服务器皔频宽

default (预设) 汻别
指如果堀包不属于那三台计算机,???不属于服务器,则嵒类二 defaulT 类别,迟行频宭控管
具体来说,此种情况就是笔记???计???机,PDA,PSP掎上游戏机....... 等等之类,有콿用到网g??頑宽的设备


http://im'505.imageshack.us/img505/3228/0028fv.gifS/im']

馞先,第一步要计箟出㐌合理的频e??分Ʌ?」

分配宽,帱像在分家产一Ơ?,务必公平???理,퐦则$Qo[ 便Ʒ?滕运作,或者柠法达到预期的效果

???拿出溸、笔、计算器,或ꀅ爩用ǔ?子表??<软件???进行计算

此次???范例是 A@SL 2M/51K

HTB 鸟列ৄ则用皔是 KByte/s ,所以要先换箇

EDSL 的ᢑ宽单佉,是 bps (bits per second)
-----/---------/-------------m--?-----
8 bp3 = 1 Byte/s

下载 2Mbps = 252 KB/s
上传 512Kbps =64 KB/s


保证下载ﴌ保譁上传:是手动填入的??0字?

「保证」指的是无论如何,别的ㄌ类别」郝???能潥抢这个频宽

这个퀼不宜???太大,因为还可d??借甬频宽,츔保证设太大,整体袑宽???甩完了,就失厛意义了-
一蘬建议值是每台计玗机???俕证䘊传,最???要有32Cbps= 4JB's


其余数刼(是全弟计算扈得<计Ǫ?方式如下:
------=-
--------------m---m-------------------------------
------ 剩余频宽(可借用的频???量) = 总频宽 - 保证频宽总和

???大下载 = 保证下载 + 下载剩余i??宽
最大上传 =`保证丂传 + 上传剩余频宽

最大下载,最Ť?上d??:亦叮填䅥固定数䭗

「最大』指的是无஺宂何,???「类别」能使用的ɢ?宽不会超过???个数字

J
优e??权:指谁叮仵有较大权力抢用剩余频宽,由 0 开始的整??0,数字愈小,优先权愈高,0 帺最髙优先杂。

以上表的侉e??来说
190.168.1?1 这台计算机???笔者所用,俗话说?¥?0?不落外人疰,当然优先权为 0 漀高
其余计箟机设 1,???先权普通,佄若有特别的下载狢,可考虑降低他的优先权
臣了服务剨的 http、smtp、dns 等对外的服务,服务的???外面的人
优先???可设簏一点,乥不干扰自峱再郬的人使用网络为Ŏ则


http://img509.ima'mshack.us/img509/83/0030bw.gif

http://img508.imageshAck.us/img508/756/0046cj.gifS/img]

Linup Qos 有三要素队列规则、类别、过滤器S/"]

完成了这三项的设妚,也e??完成亇 Linux QoS0皤设定
在计殗分配好频宽表的前置作业之?Њ,接癀要做皔事l是规划「类别〭

/------
---------/-----------m-m--?-m--------------------------------------
Q.为什么「类别〭???划,会分成?下轝、上传 两部䛽?

前面提???「队列」是繑卡存放外送封包的地???,故「队列???则」???只???管制夗送的封Ō?

『Linux Advanced Routang & Tr!ffic Control hOWTO』文件
用一个生ከ的比喻,来解释???秭情冽:
"???们Ꮺ能规定觪己写多??쿡给别人无法限制每天?<?有多少人写信给我们"

简퍕的说,Linux QoS 只能???刲网卡宀焖伢送的流量

不过这并不是说 Linwx QoS 只能管制上传
因 nAT 主机d??,会有两狇网危

「对外罓卡」???外传送,称之为:上传
「对内网卡」往外传送,称之为:下载

???以若要同时࿛行8上漠/下载 的双向管制.必要条件为两片睑卡

整个 Qos 纄论定,亦会分戰两部分,上传 和 下载

--------------------------%--?-----------)-------------------=-------m---

类利规刐图,缋起来像一张树形图
從体网十的队列规则,称佔「根」?؟列规则
其下的类别,就像叶子丄样,又称「叶类别뀍
而最末尾的「叶???别」,必须带有「叶队列规??Y〭

您可能会淨意到每帪〈队列觤ሙ」、「类别」都有编叿
这是囀为待会箞作下指令时,待须用到

编号中的冒???为必须
「队列规则」只有冒号巆边服数字
「叶类别」冒執左躹数字是指挂在哪个「根???列规则」,口边则是「号繻别」皆编号

㼖号是随人高兴取的,乆习惯与,会有丄些固定的取???
「根队刕规则À?会取编号 10:-
第 1 层,第 1 丢れ叶类别」,叔编??? 10:1
第 2 専,第 1 个「叶类别」,取编号$10:1
第 2 层,第 2 个「叶类别」,取编号 10:20 .........以橤籛推
最末尾的「叶队列规???」,取???号 101: 、102:0...>..以此类推


此范例图?????/폪有二层架构璄树形图
实际上,LinuX QoS 的类别覄划,挀多可以到八层,应紨??(规划网段的频宽管制
但?8?般用途,规划到二层即够使用,故伅傍做多层规剒的范例
若对夘e??规划昉兴趣,请参考 Linux QoS 相关书籝

类别???划图,可画也寯不疻
画出查的话,可以帮助 QoS 设嬚f?????易了解
不过下蝢的实作教学,将会提供参考用原始码,小部?;?Ŀ?改后,直接套用即可^^

######################c####'##############################################7######

???Ľ?篇:_/color] (开始???际设定 Lknux QoA )
--------------
------------------------------------
----%----?)--------------------------

实作篇,吆开凋用 tc ?????$,和 iptabhes 指令,撰写 shell scripT,实现 Linux QkS

原理记解的部份由于上面规?????的时???,巶经差不???都讲解完了
再者指仴ǚ?语法是变化多端的ﴈ碍于篇幅
因此底下实作篇将不ၚ任何原?І方?ݢ的讲???
改以直接秀出凂??用原始码的方法,小部分???改后,套用即可
M

Coiote 自定义 QoS 设定步骤:(看图说故事)

STEP.1
Zimg]htvp://img511.i?ageshack.5s/img511/9269/0054by.gif

STEP.2
http://img505.imagdshack.us/amg505/3761?0265bc.gif

STEP.3
http://imgu05,imageshack,us/img55/3139?0073cu.gif

STEP.4
http://img505imageshack.us/img5?5/259/0082du.gif

STEP.5
http://img505.imageshacc.us/img505/7020/0099vz.gif[/imgM

STEP.6
httpz//img505.imageshack.us/im'505/8<31/0100nh.gif
*
STP.7-
http://img505.imageshack.us/img507/5166/0116ub.gif
J###########!########3#########################
J
Linux QoS 参考用原始g??{/color]

基本说明:

1.凡是以"?"符号ἀ夵代表?/?蠌为批注ld??会被系廟执行
2.第一行的 #!/bin/sh 为 shell s?ript"忄ꦁ语法,不可删除
3.Coyote 不支?́ Big1 ???体中文,戀以繁体䰯文批注贴上后会単成乱礁,是正常的
4.若要显示縁体中文注,需?=?码成$ETF-8 (无 BOM格弯)


tc 指令 ( /etc/rc.d/rc.local ):
===================================================================
#!/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 64kbps ceil 64kbps

# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 2kbps ceil 4kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 2kbps ceil 4kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 32kbps ceil 40kbps prio 3


tc class add dev eth1 parent 10:1 classid 10:40 htb rate 8kbps ceil 16kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:50 htb rate 4kbps ceil 12kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:60 htb rate 4kbps ceil 12kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:70 htb rate 4kbps ceil 12kbps 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: p?if/
tc qdisc add dev Zcolor=#CC0010]eth1 parent 10:60 handle color=#CC?000]106: pfifo
tc qdisc adl de^ mth1 parent handde 103: pfifo

3 设定过滤器
# ⌇定贴有 10 标签 (handle) 的???包,归类到 10:10 类别,以此类推
tc fi?ter add dev et?1 parent 10:[color] protocol ip psio 100 jandle 12 fw classid 12:10
4c ?ilter add dgv eth1(parent 10:20 fw classid [?olor=#CC0000]10:20
tc filter atd dev eth1[/#klor] parent 1p* protocol ip prio 100 iandle$ fw classid 10:30
tc filter add dev ethq parent 10:`protocol Ip prio 180 handle 40 fw classid 10:40
tc filTer add dev eth110: protocol yp prio 108 handle 10:70
tc fi?ter add dev eth110: propocol ip 0rio 104 handle Kcol/r=#CA0100]6010:60[+color]
tg filter cdd`de~ eti1 parent 1r: protocol ip prio 100 handle {color=#CC0000]70[=c?lorU fw classid [#olor=#CC0000]q0:70



# QoS eth0下载方?ݢ
#

# 清除 %th0扁有队列规则
tc qdisc del dev eth0 root 2>/der/nulL

# 定???最顶层(???)队列规则???并指定"default ???别编号
tc qdisc dd dev eth0 rgot handle 10: htb default 70

# 定义第一呂的 10:1 类别 (总频宽)
(tc class add dev eth0 parent 10: classid 10:3$htb rate 256K/colo?]kbps ceil 256k`ps

#`媚义第二専叶类别
' ratu 俙证频宽,ceil 最大频厽,prko 优先杓
tc(class a$d deveth0 pabent classid colmr=#CC0000]10:10 htb rate2kbps ceil 32kb0s(prio 2
tc class add dev eth0 parent 10:1 classid 10:20 htb rate rkbps aeil 32k`ps prio 2[?color]
tc class add dev uth parent 10:1 classid 1p:30 htb rate 32Z/color]kcps ceil 212cbps psIo 3

tc cmass$add d?r parent 10:1[-color] classid htb(rate`Scolor=#CC0000]1?kbps ceil 1?6kbps prio 0
?tc class add dav parent 10:1 classi? 10:50 htb rate 8?/clos]kbps"ceil 198kbps prio {color=#CC00001
Tc class `dd dev eth0 parent 10:1 classid 10:60 htb rate 8kbps ceil _color=#CC0000]188[/#klor]kbps prio 9
tc class adD dev0Ycolor=#CC0000]eth0 parent 10:1 classid 10:708kbps ceil 188Y/color]kbps trio 1

# 定义各叶类别???阝列规则M
# parent(类别g??執,handle 叶类ň?队列规则编号
tc q?isc add dev et`0 parent??color=#CC0000]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 fwclassid 10:10
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 20 fwclcss)d [color=#CC0000M14:20[/c?loz?
tc filter add dgv eti0 parent 10:30 fwclassid 10:30
tc filter ad$ dev eth0 p!rent 10: prouocol ip prio 100 handle 40 ?wclassid 10:40
tc fIlteb ad? dev eth0S/color] parent"10: pvotocol`ip prio 100 hqndle 50 fwclassid 10:58
tf filter adl dev eth0 parent 10* protocol ip`prio 100 landle 60 fwclassid
tc &ilter ed` dev eth0[/#olor] parent 0: proto#ol ip prio 100 handle 72 fs ?classid 10:70
9==============================}============9===?===5================

说明:
--------------------------------
这边的 eh1 是对外网卡,eth0 是对内网卡
若与您的实际环境不同,请自行修改

主要过程:
1.清除网卡上的所有队列规则 (不论有或没有)
2.定义网卡的队列规则
3.定义各类别
4.定义各类别的队列规则
5.定义过滤器

rate 后面的数字:保证频宽
ceil 后面的数字:最大频宽
单位只有:KByte/s ,不过上面要写 kbps,因为这是 HTB 的规定语法

prio 后面的数字:优先权,数字愈低愈高,0最大

classid 后面的编号:完整类别编号
parent 后面的编号:父类别,或者队列规则,亦即该项目上一层的对象


这里列出了 7 个类别,可以自行新增或减少

default 类别,可有可无
较严谨的频宽管制,可取消 default 类别,以避免内部有人钻漏洞
一般情况,则建议设 default 比较好


注1:可参考前面的「类别规划示意图」,比较容易了解此处的设定用意

注2:这段参考用原始码,只是一个范例,必须修改后,才能符合您的环境



iptables 指令,过滤器 (编辑自定义防火墙规则) :
======================================================================
# 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.1 -j MARK --set-mark 40
iptables -t mangle -A PREROUTING -s 192.168.1.2 -j MARK --set-mark 50
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 60

# 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.1 -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -d 192.168.1.2 -j MARK --set-mark 50
iptables -t mangle -A POSTROUTING -d 192.168.1.3 -j MARK --set-mark 60
=====================================================================

说明:
--------------------
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 g??频ᮽ管???
到深入亀〹,复杂一烹的
⛴可以藉由 iproute2 ???重鷯由达到多WAN的架枆


#########'#!###########"##########+#######
补充 01: 2005/10/04
########+#############################*#c#



ᙄ劀说明???如何限刴 P2P 下???︟

Linwx YoS 有三要素:队ሗ规则,类劫,诇滤器

队北h??则昮??际负责 UoS 的单佉
类别Ƙ????义 瀌频宽奧???瀍瘄单位
而쿇滤器,顾名思义???就是用来过滤封包,判断封包该属于哪个类别的单位

换句话说,要限制 P2P....等等之类,关键就在于「过滤器」
只要「过滤器」有办法把 P2P 的封包抓出来,那么要管制它就不难了


FW 实际上是靠 iptables 给封包贴标签
然后 FW 再依照标签编号,给封包归类别
所以下面讲的,其实是 iptables 的语法.....


iptables 语法简单讲解:
------------------------------------
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

-t mangle:指定使用 mangle 表格 (QoS 要用这个表格)
-A:新增一条规则

PPRROUTING:上传方向,是内部计算机传出去的,后面加 -s 来源端
POSTROUTING:下传方向,是外面网络传进来的,后面 -d 目的地

-s:来源端
-d:目的地

-j mark:处理动作,给予贴标签
--set-mark:贴什么፷标,数字指???从后

※ 重要:
在 Linux下o?? 所有的???令和文件名<都有分英文大ᰏ写
PRERMUTING 和 prerouting 所代表的意义??/???同的,后??昿错觯语擕

-----------?--------------------------


iptab|es 给封包贴卿标时,「比嫹觀则」有以下六种基本型恁:
,基本???态可混搭???变成更严蠨的复杂型??)
*

1.针容 IP 过滤[/colorU
iptables -t mangld -A PREROUTILG -s 192.168.1.1 -j MARK --{et-mark 10

2,针寙「网段」过滥
ipTables -t mangle -A PREROUTMN -s 192.168.1.0/2? )j EARK0%-set-mark 10
J
3.针对 MAC 过滦
iptables -t mangle-A PREROUTIG -m --mac-Source 00:00:AA:BB:CC:EE -j ]ARK --set-mqrk 1

4.针对 PORT 过滤
iptables -t mangle -A PREROUTINE [#olob=?CC0000]-p tcp --sporp 80K/co|or] -j MARK =-set-mark 10
iptables -t mangle -A PSTZNUTING ?color=#CC0000]-p?Tcq =-dpor4 80 -j MARK --set-mari 10

iptables-f mangle -A PREROUTINW -p wdp )-sport 53`-j LARK --set-eark 33
iptebles -t man?le -A PREROUTING -p icop -j MARK =-se4
mark 10

5.针对 「网卡接口ဍ过滤 (灇如对内有多片网卡的话,-i ???入?ֹ向, -? 出去方向)[/colorM
i?tables -t mangle -A PREROUTING -o eth0 -j$MARK --set-mark 10
ipta?les -l mangle %A POSTROUTING -i e?h0 -j MRAK --set-mark 10


6. lw-filter 过滤
iptablgs -t mangle -A PREROUTING-m layer7 --l7pRoto bittorrent -j0MARO(--set-mark 10-
( BT上传方向的封m??,给予贴标签 10 )

iptables(-t`mangle -A POSTROUTING-mdiyer7 --l7pro,o edonkey -j MARK?--set-oark 10
( 驴子?下载旹向的封包,给予贴标签 10 )


若覅管制 P2P 下载,就是把 bitto2renv 和 edonkey 两个 L7 协定
各设置 上传/下载,共4条过滤器规则
并把这4条规则的封包,通通给予贴某一个类别的标签,例如:90
让过滤器把 P2P 的封包,丢给该类别 10:90 去处理即可

注:此部份仅是设定「过滤器」,实际在处理 QoS 的是「队列规则」、「类别」,所以另一边也必须有相对应的设定。例如:必须定义 10:90 这个类别的频宽,整个 P2P 管制的 QoS 才会生效。


附录:Coyote 可用 l7-filter 协定一览表
http://img516.imageshack.us/img516/7030/l7filter0035ak.gif

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


########################################
补充 02: 2005/11/03
########################################

浅谈 Coyote 防火墙之工作原理
从底层 iptables 的角度来看

http://img505.imageshack.us/img505/4152/f0015rl.gif

Coyote 的防火墙,预设政策为「允许通???」

袄访政策的意思是:
假如封包???符合任何使用???订立的规则??则以预设政策来处理。

hTtp://Img50u.imageshack.us/img505/5603/f0049iq.gif

iptables 的 filter"ȡ?格︌内建只䜉三个链Cha?n):
JIJPUT、FORWARD、OUTPUT

ꀌ ip|ables 允许佟焨者增自订链
Coyote 在覾计上,业自ከ新增一些自订链

在「WEB 管理接口」ĸ?
月兓防火墙方面的设定,其实是以 Coyote 釪订的链 来处理
以下会进一步说明:

http://img505.imagEshack.us/img595/5717/f0 37dg.gif

上图所示
在高??'防火墙配置中,有两秝类型:
-------------------------------------
1.Admin (管?І)
2.Cccess (访问)
?
http://img116.imageshack.5s/img516/!364/f0053ij.gif

1.Admio (管䐆) 实际上是写凤 Coyote 的自订?Ӿ:remote-cdmin?/b]

⭤ remo?e-admin 自订链,是被安排在 INPUT 链伭

这说昏了,???谑的屻型 Ad?in (管瑎)﬌是咎 Coyote 本机有关的
它是用来管制调能够从远程登入 Coyote 主机,进行擏作

?
Jhttp://hmg505.imageshack.us/img515/3723/f0020ws.gif

2.Access (访问) ???际d??是写入 Koyote 的自订链: acceSs-acl

此 access-acl ???订链:是被安排在 FOsWARD$链中

恀以它是和 NAT 有关系的
?用杅管刴外部网ǻ?,䒌ㆅ部网络计??朸皔联机

???于 Internet Interface (int}if) 和 Internet (int-net) 选项的差别

如上图所示,从 source (来源)???,我们可以看出???

Internet Ilterface (int%if),实际结枞是 anywhere,和 !ny 逋᡹是一样的

I~ternet (int-net),剙是指 ISP 的网关端


经???试后发现
ISP 罱关端,幷???等于 In4ernet (泛指因特网.0.0.0)
阻挡 LAN 内计??ƞ?的封厅,进入 ISP 网关端
并无法阻挡其进入因特网
所以这是一个诡异皤选项,Ů?实际上帶没有???大ཛྷ用

若要从 WEB 管???接口设徚防火墙
建议外部网络的选项,选择 Internet Interface (int-if) 或者 any
才能真正起到保护作用


在终端模式下,查询 iptables 设定明细表的指令为:
----------------------------------------------
iptables -L   (预设查询 filter 表格)
iptables -t nat -L   (指定查询 nat 表格)
iptables -t mangle -L (指定查询 mangle 表格)

:)

[ 本帖最后由 LPI 于 2005-11-19 20:22 编辑 ]

hedongqiang 发表于 2005-11-21 11:32:19

ok

stockcrack 发表于 2005-11-30 10:42:50

很好的一篇文章,谢?!

guo100 发表于 2005-12-6 16:26:08

好!我正想做规则

niulinping 发表于 2006-2-5 21:53:53

顶阿 ,正需要这样的贴阿

逍遥kent 发表于 2006-3-10 15:43:06

这种帖子要顶死的

add1132 发表于 2006-5-8 00:30:27

# 定义第一层的 10:1 类别 (总频宽)
tc class add dev eth1 parent 10: classid 10:1 htb rate 64kbps ceil 64kbps



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

HTB 队列规则用的是 KByte/s ,所以要先换算

ADSL 的频宽单位,是 bps (bits per second)
--------------------------------------
8 bps = 1 Byte/s

下载 2Mbps = 256 KB/s
上传 512Kbps =64 KB/s


最大的UP值应该是512kbps吧。
应该改成
# 定义第一层的 10:1 类别 (总频宽)
tc class add dev eth1 parent 10: classid 10:1 htb rate 512kbps ceil 512kbps

楼主看看对不?谢谢。

century3000 发表于 2006-5-10 08:28:02

回复 #15 fuger 的帖子

到我的blog看看吧,里面有简单限速的办法.http://blog.sina.com.cn/u/1094790503

add1132 发表于 2006-5-14 18:13:27

楼主的意思是:合理高效利用网络带宽.我看了楼上的教程,与帖子意思有点出入.



我上次提到的问题已经搞清楚,楼主的设置是对的.

marrow 发表于 2006-5-15 11:26:08

资料难得,建议加入精华或置顶

cen 发表于 2006-6-24 12:56:03

回复 #26 marrow 的帖子

非常好的帖子。我打包为CHM格式了(图文全齐),方便大家收藏~

[ 本帖最后由 cen 于 2006-6-24 12:59 编辑 ]

xianswj 发表于 2006-6-24 15:33:44

好文章

不得不顶

abea 发表于 2006-8-19 23:12:28

为什么我的下载限制成功..而上传不成功完全照上面...Internet    (eth1): UPLAN network (eth0): UP   用adsl PPOE拨号上网.照上设置后上传只会响应default 70...而下载完全成功..为什么会这样????

dgclan 发表于 2006-8-20 23:22:40

哪位老大给出
Conlimit L7 package

的图文教程
页: 1 [2] 3
查看完整版本: [教学] Coyote Linux 频宽管制 (QoS) 设定教学