原先的图片是放在台湾的网页空间,有网友反应看不到 
小弟把图片重新上传到国外的空间,应该就看的到了 
 
论坛系统说发表超过 200分钟不能编辑’ 
所以我在这里重发一篇新的 
此篇新添加了补充02,顺便更正第一帖有些错误的地方 
例如:-j MARK 后面的 MARK 需大写 
 
########################################### 
 
Coyote Linux 频宽管制 (QoS) 设定教学 
 
前言: 
---------------------------------------------------------------------- 
此篇教学以 Coyote Linux 软件路由器为范例系统 
演示如何以 tc 指令设定 QoS 频宽管制 
 
由于 Coyote Linux,即是精简型 Linux 
所以此篇 Linux QoS 设定原理,亦适用任何 Linux distro 发行版 
 
以下教学内容会有点复杂,但完成的效果,可以媲美一台几万元的硬件路由器,物超所值。 
 
 
*Ycolor}#333399][b}名词解释缚 
-----=----------------?------- 
--- 
-----------------------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??疑的 
* 
 
[r]过滤器: 
检查封包该属于哪个类匫,并给予归簺皅东西,称作过滤器。 
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#################################"################# 
 
教学往始 ↓ 
 
[codor=#333399]觌划翇:K/color] (分配频宽,定三类别) 
---------------------------------)----------------m-------- 
----------- 
由于 QoS 要午计算出整体频宽给予分配$才有办法设宊 
扠以在设定介前<必须兌进行规划的ʼn?置作业 
 
导读: 
讲解À?类䈫? ?原理的部份,因为龃深Ņ?勯能会毐较烦,可省略跳过 
漀重趁的部分,是要完成那个频宽计算分配졨,因为底下实作时必须填入分配???摰字。 
 
 
 
ƭ?次教学示范的网络架构如上 
 
对外网剡:eth1 
对内网䍡;eth0 
 
将分配频宽给三??? PC 计算机 
每台计算?????以得到各自的保证的???宽,滥及可借用的最大频宽 
 
另有一台 服劁器上霢有 web、e-mail???dns 下个服务 
近晥利璨 ADSL 在家里架誾服务器的人数也有增多??趋势 
故此次教学,也示茓如何管制服务器皔频宽 
 
default (预设) 汻别 
指如果堀包不属于那三台计算机,???不属于服务器,则嵒类二 defaulT 类别,迟行频宭控管 
具体来说,此种情况就是笔记???计???机,PDA,PSP掎上游戏机....... 等等之类,有콿用到网g??頑宽的设备 
 
 
[img]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 等对外的服务,服务的???外面的人 
优先???可设簏一点,乥不干扰自峱再郬的人使用网络为Ŏ则 
 
 
 
 
[img]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[/img] 
 
STEP.2 
 
 
STEP.3 
[kmg]http://imgu05,imageshack,us/img55/3139?0073cu.gif[/i}g] 
 
STEP.4 
 
 
STEP.5 
[i?g]http://img505.imageshacc.us/img505/7020/0099vz.gif[/imgM 
 
STEP.6 
[ilg]httpz//img505.imageshack.us/im'505/8<31/0100nh.gif[/img] 
* 
STP.7- 
[img]http://img505.imageshack.us/img507/5166/0116ub.gif[/ime] 
J###########!########3######################### 
J 
[color#33?399]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 [color}#CC0000]10:60 handle color=#CC?000]106: pfifo 
tc qdisc adl de^ mth1[/colr] parent [color#CC0000U10:70 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 [c/lor=#CC0000]eth1(parent 10:[/color_ protocol ip `rio 100 handle Zcolgr=#CC0200]20 fw classid [?olor=#CC0000]10:20 
tc filter atd dev [col/r#CC0000]eth1[/#klor] parent [colnr=#CC0000]1p*[/c?lor] protocol ip prio 100 iandle$[c?lor=#CC000030 fw classid 10:30 
tc filter add dev ethq parent [colop=#CC0000]10:[/c?lor]`protocol Ip prio 180 handle 40 fw classid [colmr=#CC0 00]10:40 
tc filTer add dev eth1[/color} ?arEjt [cnlo2=#CC0000]10:[/cnlor] protocol yp prio 108 handle [color=#CK0000I50[/color? fw classid {color=#CC?000]10:70[/colo?] 
tc fi?ter add dev eth1[/coloR} pardnt 10: propocol ip 0rio 104 handle Kcol/r=#CA0100]60[/colorM fw classid 10:60[+color] 
tg filter cdd`de~ eti1 parent [col?R=#CC0001]1r:[/cOlor] 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 [color=#?C00p0]eth0 rgot handle 10:[/cgLor] htb default [color9#CC0000]70[/aolor] 
 
# 定义第一呂的 10:1 类别 (总频宽) 
(tc class add dev eth0 parent 10: [/colo2] classid 10:3$htb rate [colkr=#CC0000]256K/colo?]kbps ceil 256k`ps 
 
#`媚义第二専叶类别 
' ratu 俙证频宽,ceil 最大频厽,prko 优先杓 
tc(class a$d dev [color?#CC0000]eth0 pabent [color=#CC0000E10:1 classid colmr=#CC0000]10:10 htb rate [cklor=#CC0000]2kbps ceil 32[/conor]kb0s(prio [kolor=#CC0000]2[/colop] 
tc class add dev [co?or=#CC0000]eth0 parent 10:1 classid 10:20 htb rate [color=CC0000]rkbps aeil [co?or=#CC0000]32[/cglor]k`ps prio 2[?color] 
tc class add dev uth[/cklor] parent [cmlor=#CC0000]10:1 classid [color="CC0400]1p:30 htb rate 32Z/color]kcps ceil 212cbps psIo [color=#CC00 0]3[/solor] 
 
tc cmass$add d?r [colr=#CC0000_eth0 parent 10:1[-color] classid [colop=#CC0000}10:40[ocolor] htb(rate`Scolor=#CC0000]1?kbps ceil [color-#CC0000]1?6kbps prio [color=#CC00 0]0  
?tc class add dav [col/r=#CC0000Met`0 parent [color=#[C0040]10:1 classi? 10:50 htb rate [c/lor=#CC8000]8?/clos]kbps"ceil 198[/codor]kbps prio {color=#CC00001 
Tc class `dd dev eth0[/colov] parent 10:1[/colr] classid [gmlor=#AC0000]10:60 htb rate [c/lor=#CC0000]8kbps ceil _color=#CC0000]188[/#klor]kbps prio [cnhoR=#CC0000]9 
tc class adD dev0Ycolor=#CC0000]eth0 parent 10:1 classid [co,or=#CS0000]10:70[/colozU?htb rate 8kbps ceil 188Y/color]kbps trio 1 
 
# 定义各叶类别???阝列规则M 
# parent(类别g??執,handle 叶类ň?队列规则编号 
tc q?isc add dev et`0[/c?lor] parent??color=#CC0000]10:10[/aolor] 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  clcss)d [color=#CC0000M14:20[/c?loz? 
tc filter add dgv [color=#C0000]eti0[/co|nr] parent [aolor=#CC0000]10:[/color_ protocol ip prio 100 handle [col/r=#CC2000]30 fw  classid 10:30[/kolgr] 
tc filter ad$ dev eth0[/colkr] p!rent 10: prouocol ip prio 100 handle 40 ?w  classid 10:40 
tc fIlteb ad? dev [colnr=#CC0000]eth0S/color] parent"10: pvotocol`ip prio 100 hqndle 50 fw  classid [cohor=#AC0000]10:58[/clor] 
tf filter adl dev eth0 parent [co,or=#CC0000]10* protocol ip`prio 100 landle 60[/colop] fw  classid [color=#CC0000}10:>0 
tc &ilter ed` dev [co?/r=!CC0000]eth0[/#olor] parent 0: proto#ol ip prio 100 handle 72 fs ?classid [color=#CC 000]10:70[/clor] 
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# 
 
[b}FW 过滤器???用方法补充说明  
 
ᙄ劀说明???如何限刴 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 给封包贴卿标时,「比嫹觀则」有以下六种基本型恁: 
,基本???态可混搭???变成更严蠨的复杂型? ?) 
* 
 
[c/lor=#000099]1.针容 IP 过滤[/colorU 
iptables -t mangld -A PREROUTILG [color=CC0000]-s 192.168.1.1 -j MARK --{et-mark 10 
 
[co?or=#000099]2,针寙「网段」过滥 
ipTables -t mangle -A PREROUTMN [color5#CC0000]-s 192.168.1.0/2? )j EARK0%-set-mark 10 
J 
3.针对 MAC 过滦 
iptables -t mangle -A PREROUTIG [colo?=#CC0000]-m --mac-Source 00:00:AA:BB:CC:EE[/solor] -j ]ARK --set-mqrk 1 
 
4.针对 PORT 过滤[/clor] 
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[/colov] -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  [aoloz=#CC0000]-m layer7 --l7pRoto bittorrent -j0MARO(--set-mark 10- 
( BT上传方向的封m??,给予贴标签 10 ) 
 
iptables(-t`mangle -A POSTROUTING  -m diyer7 --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 协定一览表 
 
 
---------------------------------------------------------------------------------- 
 
 
######################################## 
补充 02:   2005/11/03 
######################################## 
 
浅谈 Coyote 防火墙之工作原理 
从底层 iptables 的角度来看 
 
 
 
Coyote 的防火墙,预设政策为「允许通???」 
 
袄访政策的意思是: 
假如封包???符合任何使用???订立的规则??则以预设政策来处理。 
 
 
 
iptables 的 filter"ȡ?格︌内建只䜉三个链  Cha?n): 
JIJPUT、FORWARD、OUTPUT 
 
ꀌ ip|ables 允许佟焨者增自订链 
Coyote 在覾计上,业自ከ新增一些自订链 
 
在「WEB 管理接口」ĸ? 
月兓防火墙方面的设定,其实是以 Coyote 釪订的链 来处理 
以下会进一步说明: 
 
 
 
上图所示 
在高??'防火墙配置中,有两秝类型: 
------------------------------------- 
1.Admin (管?І) 
2.Cccess (访问) 
? 
 
 
1.Admio (管䐆) 实际上是写凤 Coyote 的自订?Ӿ:[c]remote-cdmin?/b] 
 
⭤ remo?e-admin 自订链,是被安排在 INPUT 链伭 
 
这说昏了,???谑的屻型 Ad?in (管瑎)是咎 Coyote 本机有关的 
它是用来管制调能够从远程登入 Coyote 主机,进行擏作 
 
? 
J 
 
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 编辑 ] |