找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: LPI

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

[复制链接]
发表于 2005-11-4 19:42:07 | 显示全部楼层
学习
routeros
回复

使用道具 举报

 楼主| 发表于 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][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  -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 协定一览表

                               
登录/注册后可看大图


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


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

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


                               
登录/注册后可看大图


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

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


                               
登录/注册后可看大图


iptables 的 filter"ȡ?格︌内建只䜉三个链  Cha?n):
JIJPUTFORWARDOUTPUT

ꀌ 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 编辑 ]
routeros
回复

使用道具 举报

发表于 2005-11-21 11:32:19 | 显示全部楼层
ok
routeros
回复

使用道具 举报

发表于 2005-11-30 10:42:50 | 显示全部楼层
很好的一篇文章,谢?!
routeros
回复

使用道具 举报

发表于 2005-12-6 16:26:08 | 显示全部楼层
好!我正想做规则
routeros
回复

使用道具 举报

发表于 2006-2-5 21:53:53 | 显示全部楼层
顶阿 ,正需要这样的贴阿
routeros
回复

使用道具 举报

发表于 2006-3-10 15:43:06 | 显示全部楼层
这种帖子要顶死的
routeros
回复

使用道具 举报

发表于 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

楼主看看对不?谢谢。
routeros
回复

使用道具 举报

发表于 2006-5-10 08:28:02 | 显示全部楼层

回复 #15 fuger 的帖子

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

使用道具 举报

发表于 2006-5-14 18:13:27 | 显示全部楼层
楼主的意思是:合理高效利用网络带宽.我看了楼上的教程,与帖子意思有点出入.



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

使用道具 举报

发表于 2006-5-15 11:26:08 | 显示全部楼层
资料难得,建议加入精华或置顶
routeros
回复

使用道具 举报

发表于 2006-6-24 12:56:03 | 显示全部楼层

回复 #26 marrow 的帖子

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

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

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

329.02 KB, 下载次数: 400, 下载积分: 铜板 -1

routeros
回复

使用道具 举报

发表于 2006-6-24 15:33:44 | 显示全部楼层

好文章

不得不顶
routeros
回复

使用道具 举报

发表于 2006-8-19 23:12:28 | 显示全部楼层
为什么我的下载限制成功..而上传不成功完全照上面...Internet    (eth1): UP  LAN network (eth0): UP   用adsl PPOE拨号上网.照上设置后上传只会响应default 70...而下载完全成功..为什么会这样????
routeros
回复

使用道具 举报

发表于 2006-8-20 23:22:40 | 显示全部楼层
哪位老大给出
Conlimit L7 package

的图文教程
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-5-16 05:08 , Processed in 0.086308 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表