成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實戰應用:使用Linux TC進行流量安全管理

安全
在Linux中流量控制器(TC)主要是在輸出端口處建立一個隊列進行流量控制,控制的方式是基于路由,亦即基于目的IP地址或目的子網的網絡號的流量控制。流量控制器TC,其基本的功能模塊為隊列、分類和過濾器。

Linux從kernel 2.1.105開始支持QoS(服務質量),不過,需要重新編譯內核。具體步驟為:

(1)運行 make config命令時,將EXPERIMENTAL_OPTIONS選項設置成y;

(2)將 Class Based Queueing (CBQ)、Token Bucket Flow、Traffic Shapers選項設置為y;

(3)運行make dep; make clean; make bzimage,生成新的內核。

在Linux中流量控制器(TC)主要是在輸出端口處建立一個隊列進行流量控制,控制的方式是基于路由,亦即基于目的IP地址或目的子網的網絡號的流量控制。流量控制器TC,其基本的功能模塊為隊列、分類和過濾器。Linux內核中支持的隊列有,Class Based Queue ,Token Bucket Flow ,CSZ ,First In First Out ,Priority ,TEQL ,SFQ ,ATM ,RED。由于目前網絡流量種類繁多,網絡管理員在管理時通常都采用分類的方式進行,因此,本文所介紹的隊列與分類都是基于CBQ(Class Based Queue)的,而過濾器是基于路由(Route)的,其他的分類方式和過濾器使用方式請參看相關的技術文獻。

配置和使用流量控制器TC,主要分以下幾個方面:分別為建立隊列、建立分類、建立過濾器和建立路由,另外還需要對現有的隊列、分類、過濾器和路由進行監視。其基本使用步驟為:

(1)針對網絡物理設備綁定一個CBQ隊列;

(2)在該隊列上建立分類;

(3)為每一分類建立一個基于路由的過濾器;

(4)最后與過濾器相配合,建立特定的路由表#p#

使用Linux TC進行流量控制實例

實例環境及拓撲

在一個局域網中(如圖1所示),我們設定流量控制器上的以太網卡(設備名為eth0)的IP地址為10.172.4.66,在其上建立一個CBQ隊列。假設包的平均大小為1K字節,包間隔發送單元的大小為8字節,可接收沖突的發送最長包數目為20字節。假如有三種類型的流量需要控制:

(1)發往主機1的流量,其IP地址設定為10.172.4.138。其流量帶寬控制在500Mbit,優先級為2;

(2)是發往主機2的,其IP地址為10.172.4.141。其流量帶寬控制在200Mbit,優先級為1;

(3)是發往子網1的,其子網號為10.172.4.0,子網掩碼為255.255.255.0。流量帶寬控制在300Mbit,優先級為6。

那么,根據上面的實例條件,我們可以采用如下的步驟進行TC配置和控制:

圖1  Linux TC流量控制示意圖

1.綁定CBQ隊列

一般情況下,針對一個網卡只需建立一個隊列:

將一個cbq隊列綁定到網絡物理設備eth0上,其編號為1:0;網絡物理設備eth0的實際帶寬為1000Mbit,包的平均大小為1000字節;包間隔發送單元的大小為8字節,最小傳輸包大小為64字節。

#tc qdisc add dev eth0 root handle 1: cbq bandwidth 1000Mbit avpkt 1000 cell 8 mpu 64

2.為隊列建立分類

分類建立在隊列之上。一般情況下,針對一個隊列需建立一個根分類,然后再在其上建立子分類。對于分類,按其分類的編號順序起作用,編號小的優先;一旦符合某個分類匹配規則,通過該分類發送數據包,則其后的分類不再起作用。

(1)創建根分類1:1;分配帶寬為1000Mbit,優先級別為8。

#tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 1000Mbit rate 1000Mbit maxburst 20 allot 1514 prio 8 avpkt 1000 cell 8 weight 100Mbit

該隊列的最大可用帶寬為1000Mbit,實際分配的帶寬為1000Mbit,可接收沖突的發送最長包數目為20字節;最大傳輸單元加MAC頭的大小為1514字節,優先級別為8,包的平均大小為1000字節,包間隔發送單元的大小為8字節,相應于實際帶寬的加權速率為100Mbit。

(2)創建分類1:2,其父分類為1:1,分配帶寬為500Mbit,優先級別為2。

#tc class add dev eth0 parent 1:1 classid 1:2 cbq bandwidth 1000Mbit rate 500Mbit maxburst 20 allot 1514 prio 2 avpkt 1000 cell 8 weight 50Mbit split 1:0 bounded

該隊列的最大可用帶寬為1000Mbit,實際分配的帶寬為500Mbit,可接收沖突的發送最長包數目為20字節;最大傳輸單元加MAC頭的大小為1514字節,優先級別為1,包的平均大小為1000字節,包間隔發送單元的大小為8字節,相應于實際帶寬的加權速率為50Mbit,分類的分離點為1:0,且不可借用未使用帶寬。

(3)創建分類1:3,其父分類為1:1,分配帶寬為200Mbit,優先級別為1。

#tc class add dev eth0 parent 1:1 classid 1:3 cbq bandwidth 1000Mbit rate 200Mbit maxburst 20 allot 1514 prio 1 avpkt 1000 cell 8 weight 20Mbit split 1:0

該隊列的最大可用帶寬為1000Mbit,實際分配的帶寬為200Mbit,可接收沖突的發送最長包數目為20字節;最大傳輸單元加MAC頭的大小為1514字節,優先級別為2,包的平均大小為1000字節,包間隔發送單元的大小為8字節,相應于實際帶寬的加權速率為20Mbit,分類的分離點為1:0。

(4)創建分類1:4,其父分類為1:1,分配帶寬為300Mbit,優先級別為6。

#tc class add dev eth0 parent 1:1 classid 1:4 cbq bandwidth 1000Mbit rate 300Mbit maxburst 20 allot 1514 prio 6 avpkt 1000 cell 8 weight 30Mbit split 1:0

該隊列的最大可用帶寬為1000Mbit,實際分配的帶寬為300Mbit,可接收沖突的發送最長包數目為20字節;最大傳輸單元加MAC頭的大小為1514字節,優先級別為1,包的平均大小為1000字節,包間隔發送單元的大小為8字節,相應于實際帶寬的加權速率為30Mbit,分類的分離點為1:0。#p#

3.建立過濾器

過濾器主要服務于分類。一般只需針對根分類提供一個過濾器,然后為每個子分類提供路由映射。

(1)應用路由分類器到cbq隊列的根,父分類編號為1:0;過濾協議為ip,優先級別為100,過濾器為基于路由表。

#tc filter add dev eth0 parent 1:0 protocol ip prio 100 route

(2)建立路由映射分類1:2, 1:3, 1:4

#tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 2 flowid 1:2

#tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 3 flowid 1:3

#tc filter add dev eth0 parent 1:0 protocol ip prio 100 route to 4 flowid 1:4

4.建立與過濾器對應的路由

該路由是與前面所建立的路由映射一一對應。

1) 發往主機10.172.4.138的數據包通過分類2轉發(分類2的速率500Mbit)

#ip route add 10.172.4.138 dev eth0 via 10.172.4.66 realm 2

2) 發往主機10.172.4.30的數據包通過分類3轉發(分類3的速率200Mbit)

#ip route add 10.172.4.30 dev eth0 via 10.172.4.66 realm 3

3)發往子網10.172.4.0/24的數據包通過分類4轉發(分類4的速率300Mbit)

#ip route add 10.172.4.0/24 dev eth0 via 10.172.4.66 realm 4

在配置路由時特別值得注意的是:一般對于流量控制器所直接連接的網段建議使用IP主機地址流量控制限制,不要使用子網流量控制限制。如一定需要對直連子網使用子網流量控制限制,則在建立該子網的路由映射前,需將原先由系統建立的路由刪除,才可完成相應步驟。#p#

5.對上述建立的機制進行查看

主要包括對現有隊列、分類、過濾器和路由的狀況進行查看。

(1)顯示隊列的狀況

簡單顯示指定設備(這里為eth0)的隊列狀況

#tc qdisc ls dev eth0

qdisc cbq 1: rate 1000Mbit (bounded,isolated) prio no-transmit

詳細顯示指定設備(這里為eth0)的隊列狀況

#tc -s qdisc ls dev eth0

qdisc cbq 1: rate 1000Mbit (bounded,isolated) prio no-transmit

Sent 7646731 bytes 13232 pkts (dropped 0, overlimits 0)

borrowed 0 overactions 0 avgidle 31 undertime 0

這里主要顯示了通過該隊列發送了13232個數據包,數據流量為7646731個字節,丟棄的包數目為0,超過速率限制的包數目為0。

(2)顯示分類的狀況

簡單顯示指定設備(這里為eth0)的分類狀況

#tc class ls dev eth0

class cbq 1: root rate 1000Mbit (bounded,isolated) prio no-transmit

class cbq 1:1 parent 1: rate 10Mbit prio no-transmit #no-transmit表示優先級為8

class cbq 1:2 parent 1:1 rate 500Mbit prio 2

class cbq 1:3 parent 1:1 rate 200Mbit prio 1

class cbq 1:4 parent 1:1 rate 300Mbit prio 6

詳細顯示指定設備(這里為eth0)的分類狀況

#tc -s class ls dev eth0

class cbq 1: root rate 1000Mbit (bounded,isolated) prio no-transmit

Sent 17725304 bytes 32088 pkts (dropped 0, overlimits 0)

borrowed 0 overactions 0 avgidle 31 undertime 0

class cbq 1:1 parent 1: rate 1000Mbit prio no-transmit

Sent 16627774 bytes 28884 pkts (dropped 0, overlimits 0)

borrowed 16163 overactions 0 avgidle 587 undertime 0

class cbq 1:2 parent 1:1 rate 500Mbit prio 2

Sent 628829 bytes 3130 pkts (dropped 0, overlimits 0)

borrowed 0 overactions 0 avgidle 4137 undertime 0

class cbq 1:3 parent 1:1 rate 200Mbit prio 1

Sent 0 bytes 0 pkts (dropped 0, overlimits 0)

borrowed 0 overactions 0 avgidle 159654 undertime 0

class cbq 1:4 parent 1:1 rate 300Mbit prio 6

Sent 5934679 bytes 9354 pkts (dropped 0, overlimits 0)

borrowed 3797 overactions 0 avgidle 159557 undertime 0

這里主要顯示了通過不同分類發送的數據包,數據流量,丟棄的包數目,超過速率限制的包數目等等。其中根分類(class cbq 1:0)的狀況應與隊列的狀況類似。

例如,分類class cbq 1:4發送了9354個數據包,數據流量為5934679個字節,丟棄的包數目為0,超過速率限制的包數目為0。

(3)顯示過濾器的狀況

#tc -s filter ls dev eth0

filter parent 1: protocol ip pref 100 route

filter parent 1: protocol ip pref 100 route fh 0xffff0002 flowid 1:2 to 2

filter parent 1: protocol ip pref 100 route fh 0xffff0003 flowid 1:3 to 3

filter parent 1: protocol ip pref 100 route fh 0xffff0004 flowid 1:4 to 4

這里flowid 1:2代表分類class cbq 1:2,to 2代表通過路由2發送。

(4)顯示現有路由的狀況

#ip route

10.172.4.66 dev eth0 scope link

10.172.4.138 via 10.172.4.66 dev eth0 realm 2

10.172.4.30 via 10.172.4.66 dev eth0 realm 3

10.172.4.0/24 via 10.172.4.66 dev eth0 realm 4

10.172.4.0/24 dev eth0 proto kernel scope link src 10.172.4.66

172.16.1.0/24 via 10.172.4.66 dev eth0 scope link

127.0.0.0/8 dev lo scope link

default via 10.172.4.254 dev eth0

#p#

6.隊列、分類、過濾器及路由維護

上面我們通過一個完整的例子示意了使用Linux的TC進行流量控制的全過程。不難看出,該技術主要包括如上步驟。而在日常的網絡管理過程中,網管員還需要對TC的隊列、分類、過濾器和路由進行相應的增添、修改和刪除等操作,以保證流量控制能夠因時、因地、因應用制宜。可能用到的相應的命令如下所示:

tc class add命令:添加分類;

tc class change命令:修改分類;

tc filter add命令:添加過濾器;

tc filter change命令:修改過濾器;

tc filter del命令:刪除過濾器;

ip route add命令:添加與過濾器對應的路由;

ip route change命令:修改與過濾器對應的路由;

ip route del命令:刪除與過濾器對應的路由。

責任編輯:藍雨淚 來源: TechTarget中國
相關推薦

2010-06-04 11:21:42

Linux 流量控制

2010-06-13 13:34:47

Linux 流量控制

2010-05-27 09:17:44

Linux網絡流量

2010-03-22 21:06:35

2021-08-05 11:30:49

Linux滲透測試

2022-05-07 11:08:50

Linuxapt 命令

2022-05-04 11:10:58

Linuxdnf 命令

2012-11-29 09:59:02

網絡流量網絡安全

2010-06-04 10:35:25

Linux 網絡流量

2023-10-31 09:22:49

Linux系統

2020-06-15 19:20:00

AppImageLinux軟件包管理

2009-02-10 15:08:41

2010-06-17 17:00:07

Linux流量控制

2022-09-26 14:24:18

Linux網絡流量審計

2023-12-25 07:46:35

GatewayAPI開源

2011-03-31 13:40:36

MRTGsquid流量

2011-03-31 13:40:48

2010-09-15 12:15:23

NessusWEB應用安全掃描

2011-03-31 14:28:15

2010-05-27 11:03:44

Linux流量控制
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人九九精 | 亚洲精品国产成人 | 九九看片| 国产福利在线播放 | 91人人澡人人爽 | 国产日韩精品一区二区三区 | 一区二区不卡视频 | 中文字幕福利视频 | 亚洲三级在线 | 久久久久久国产精品免费免费男同 | 操操操日日日 | 久久久久久99 | 一级高清 | 一级黄色av电影 | 韩国av影院| 国产亚洲精品精品国产亚洲综合 | 国产欧美一区二区精品久导航 | 欧美中文字幕一区二区 | 色偷偷人人澡人人爽人人模 | 欧美一a| 少妇性l交大片免费一 | 亚洲国产欧美在线人成 | 9久久精品 | 国产激情精品视频 | 午夜视频网站 | 国产精品久久久久久久久久免费看 | 欧美九九九 | 成人免费网视频 | 国产欧美一区二区三区在线看蜜臀 | 国外激情av | 欧美黑人体内she精在线观看 | 亚洲aⅴ| 久久久这里都是精品 | 一区二区三区四区电影 | 免费观看一级特黄欧美大片 | 国产高清精品在线 | 一级h片| 天天视频一区二区三区 | 中文字幕99 | 成年女人免费v片 | 逼逼网|