亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1561 | 回復(fù): 1
打印 上一主題 下一主題

TC(HTB)+iptables作流量控制 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-05-18 16:28 |只看該作者 |倒序瀏覽
一、環(huán)境和要求
線路:ADSL:2M/512K
eth0:10.0.0.136,外網(wǎng)口
eth1:192.168.1.1,內(nèi)網(wǎng)口
業(yè)務(wù)需求:保證正常的網(wǎng)頁瀏覽,F(xiàn)TP,SMTP,POP3,對其它的所有應(yīng)用加以限制,以免影響正常業(yè)務(wù)的使用。
1、讓交互數(shù)據(jù)包保持較低的延遲時間,也就是說上載或下載文件不會打擾SSH/telnet等。
2、上載或下載期間有合理的速率用于網(wǎng)頁瀏覽,即使http屬于一種大量數(shù)據(jù)傳輸,也不應(yīng)受其它傳輸影響太大
3、對FTP-data限速,不會占用所有帶寬
4、對SMTP,pop3限速
5、對未分類的進行限制,以免影響
6、保證上載不會影響下載,上載數(shù)據(jù)流會影響下載的速率,這是相當普遍的現(xiàn)象。
7、對每個IP的下載速率進行限制
8、取得空閑帶寬的優(yōu)先級別如:交互數(shù)據(jù),F(xiàn)TP-data,smtp,pop3;網(wǎng)頁瀏覽,其它業(yè)務(wù)優(yōu)先級別最低
二、方法
1、(eth0)使用HTB分成五類:如下圖
+---------+
| root 1: |
+---------+
|
+--------------------------------+
| class 1:1 |
+--------------------------------+
| | | | | |
+----+ +----+ +----+ +----+ +----+
|1:11| |1:12| |1:13| |1:14| |1:15|
+----+ +----+ +----+ +----+ +----+
classid 1:11:
1)這個類優(yōu)先權(quán)最高。擁有最低的延遲并最先取得空閑帶寬,因此要設(shè)置這個類的峰值速率。
ssh、telnet、dns、quake3、irc,ftp控制,smtp命令和帶有SYN標記的數(shù)據(jù)包都應(yīng)屬于這一類。
2)為了保證上行數(shù)據(jù)流不會傷害下行流,我們還要把ACK數(shù)據(jù)包排在隊列前面。這就是當發(fā)生大批量數(shù)據(jù)流的時
候,雙向傳輸均受到嚴重影響的原因。因為下行數(shù)據(jù)的ACK必須同上行流進行競爭,并在處理過程中被延遲。
3)限制上載速率:把上載速率限制在比可用帶寬稍小一些的位置上,于是你的MODEM中就不會形成隊列了。
4)排除了下行隊列(除了偶爾的突發(fā)),保證交互數(shù)據(jù)包永遠排在上行隊列的最前面。
classid 1:12:大批量傳輸?shù)念悺V饕脕硖幚頌g覽網(wǎng)頁的數(shù)據(jù)包,目標端口80,8080,443,8443的包。
classid 1:13:此類是擁用最大吞吐TOS位的數(shù)據(jù)包。用于處理目的地址為xxxx的FTP-data。
classid
1:14:這里是郵件(SMTP、pop3)相關(guān)和TOS要求最小成本的數(shù)據(jù)流。用于處理目的地址為xxxx的smtp,pop3服務(wù)
classid 1:15:最后是經(jīng)過NAT進行大批量傳輸?shù)臋C器,以保證他們不會妨礙正常服務(wù)。
2、(eth0)限制下載速率:。丟掉那些太快到來的數(shù)據(jù)包,不讓他們導致TCP/IP的速率低于我們期望的速率。因
為我們不希望輕易地丟棄數(shù)據(jù)包,所以我們要配置“burst”來容納突發(fā)傳輸。
3、(eth1)限制下載速率:對每一個IP限制最高下載速率
三、流量控制步驟
1、隊列處理
#腳本:用384kbps作為峰值速率,調(diào)整CEIL為上行速率的75%。
#Set the following values to somewhat lesss than your actual download and uplink speed.
DOWNLINK=2000
UPLINK=384
#清空已有的隊列,并把出錯消息清空
#clean existing down and uplink qdiscs,put the errors to /dev/null
tc qdisc del dev eth0 root 2> /dev/null > /dev/null
tc qdisc del dev eth0 ingress 2> /dev/null > /dev/null
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
########################################uplink###########################################
#建立HTB父類,默認數(shù)據(jù)由1:15這個類通走
#install root HTB,point default traffic to 1:15:
tc qdisc add dev eth0 root handle 1: htb default 15
#設(shè)定uplink的最大速率。
#shape everything at $UPLINK speed -this prevents huge queues in your DSL modem which destroy
latency:
# main class
tc class add dev eth0 parent 1: classid 1:1 htb rate ${UPLINK}kbit ceil ${UPLINK}kbit
#分類,1:11為最高優(yōu)先級別,stmp,pop3,ftp-data次之,網(wǎng)頁瀏覽再次之。并對每個類限制了最高速率。
#high prio class 1:11:
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 128kbit ceil 128kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 128kbit ceil ${UPLINK}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 32kbit ceil ${UPLINK}kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 32kbit ceil ${UPLINK}kbit prio 1
#bulk & default class 1:15 -gets slightly less traffic,and a lower priority:
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 16kbit ceil ${UPLINK}kbit prio 3
可以在類下面再附加上另一個隊列規(guī)定,以保證帶寬的公平使用:
#bost get Stochastic Fairness:
tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 13: sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 14: sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 15: sfq perturb 10
2、分類:
上面的隊列處理中等于把所有發(fā)出的數(shù)據(jù)包都送給了1:15
(tc qdisc add dev eth0 root handle 1: htb default 15)。
現(xiàn)在應(yīng)該需要告訴機器那些數(shù)據(jù)包走哪條路。設(shè)置過濾器以便用iptables對數(shù)據(jù)包進行分類。
可以通過RETURN方法避免遍歷所有的規(guī)則。
#TOS Mininum Delay (ssh,telnet) in 1:11:
tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:11
#80,8080,443 in 1:12
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:12
#ftp-data in 1:13
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:13
#smtp,pop3 in 1:14
tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:14
#
tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:15
這樣數(shù)據(jù)包會有一個特定的FWMARK標記值(hanlde x fw),表明它應(yīng)該送給哪個類( classid x)。
后面要給數(shù)據(jù)包打標記。
3、丟掉那些太快到來的數(shù)據(jù)包,不讓他們導致TCP/IP的速率低于我們期望的速率。因為我們不希望輕易地丟棄數(shù)據(jù)包,所以我們要配置“burst”來容納突發(fā)傳輸。,
########################################DOWNLINK###########################################
# install the ingress qdisc on the ingress
tc qdisc add dev eth0 handle ffff: ingress
# DROP everything thats coming in too fast:
tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1
4、對內(nèi)網(wǎng)的IP速率進行限制
tc qdisc add dev eth1 root handle 2: htb
tc class add dev eth1 parent 2: classid 2:1 htb rate 128kbit ceil ${DOWNLINK}kbit
tc qdisc add dev eth1 parent 2:1 sfq
tc filter add dev eth1 parent 2:0 protocol ip prio 4 u32 match ip dst 192.168.1.0/24 flowid 2:1
四、現(xiàn)在對數(shù)據(jù)mark
1、首先啟用ip轉(zhuǎn)發(fā),做NAT轉(zhuǎn)換,并設(shè)定默認iptable策略:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth0 -j SNAT --to-source
10.0.0.136
2、設(shè)置TOS的處理:
最小延遲的歸第一類
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j RETURN
這里是郵件(SMTP、pop3?)相關(guān)和TOS要求最小成本的數(shù)據(jù)流。
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j RETURN
最后是路由器后面經(jīng)過NAT進行大批量傳輸?shù)臋C器。以保證他們不會妨礙正常服務(wù)。
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j MARK --set-mark 0x5
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j RETURN
3、給數(shù)據(jù)包打標記
類1:
提高tcp初始連接(也就是帶有SYN的數(shù)據(jù)包)的優(yōu)先權(quán)是非常明智的:
# tag all incoming SYN packets through eth0 as mark value
iptables -t mangle -I PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 0x1
iptables -t mangle -I PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
ftp控制放第1類,因為一般是小包,
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport ftp -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport ftp -j RETURN
然后提高ssh數(shù)據(jù)包的優(yōu)先權(quán):
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 22 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 22 -j RETURN
DNS放第一類,
iptables -t mangle -A PREROUTING -p udp -m udp --dport 53 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p udp -m udp --dport 53 -j RETURN
類2:用于放置大批量傳輸?shù)念悺S脕硖幚頌g覽網(wǎng)頁的數(shù)據(jù)包,目標端口80的包。
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 80 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 80 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 80 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 80 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 443 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 443 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 443 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 443 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 8080 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 8080 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 8080 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 8080 -j RETURN
類3:ftp-data放在第3類,要求最大吞吐.
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp-data -j MARK --set-mark 0x3
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp-data -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport ftp-data -j MARK --set-mark 0x3
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport ftp-data -j RETURN
類4:
郵件(SMTP、pop3)相關(guān)和TOS要求最小成本的數(shù)據(jù)流。
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 25 -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 25 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 25 -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 25 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 110 -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 110 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 110 -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 110 -j RETURN
類5:前面沒有打過標記的數(shù)據(jù)包將交給1:15處理:
iptables -t mangle -A PREROUTING -j MARK --set-mark 0x5
4、最后應(yīng)該在OUTPUT鏈中再重復(fù)一遍上面的設(shè)置,也就是說把命令中的–A PREROUTING改成-A OUTPUT
iptables -t mangle -A OUTPUT -m tos --tos Minimize-Delay -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -m tos --tos Minimize-Delay -j RETURN
iptables -t mangle -A OUTPUT -m tos --tos Minimize-Cost -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -m tos --tos Minimize-Cost -j RETURN
iptables -t mangle -A OUTPUT -m tos --tos Maximize-Throughput -j MARK --set-mark 0x5
iptables -t mangle -A OUTPUT -m tos --tos Maximize-Throughput -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 22 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 22 -j RETURN
iptables -t mangle -I OUTPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 0x1
iptables -t mangle -I OUTPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
iptables -t mangle -A OUTPUT -p udp -m udp --dport 53 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p udp -m udp --dport 53 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport ftp -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport ftp -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport ftp -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport ftp -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 80 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 80 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 80 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 80 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 443 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 443 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 443 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 443 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8080 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8080 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8080 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8080 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport ftp-data -j MARK --set-mark 0x3
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport ftp-data -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport ftp-data -j MARK --set-mark 0x3
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport ftp-data -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 25 -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 25 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 25 -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 25 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 110 -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 110 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 110 -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 110 -j RETURN
iptables -t mangle -A OUTPUT -j MARK --set-mark 0x3
5、iptables策略
iptables -A INPUT -p ALL -i eth1 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p ALL -i lo -j ACCEPT
iptables -A INPUT -p ALL -d 10.0.0.136 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -p ALL -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -p ALL -s 10.0.0.136 -j ACCEPT
#因為我上面做了squid代理,所以把80的數(shù)據(jù)都轉(zhuǎn)發(fā)給squid處理
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
附完整腳本:
代碼:
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 10.0.0.136
# start filters
# TOS Minimum Delay (ssh, NOT scp) in 1:11:
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j RETURN
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j RETURN
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j MARK --set-mark 0x5
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 22 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 22 -j RETURN
iptables -t mangle -I PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 0x1
iptables -t mangle -I PREROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
iptables -t mangle -A PREROUTING -p udp -m udp --dport 53 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p udp -m udp --dport 53 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport ftp -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport ftp -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 80 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 80 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 80 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 80 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 443 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 443 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 443 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 443 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 8080 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 8080 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 8080 -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 8080 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp-data -j MARK --set-mark 0x3
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport ftp-data -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport ftp-data -j MARK --set-mark 0x3
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport ftp-data -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 25 -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 25 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 25 -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 25 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 110 -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 110 -j RETURN
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 110 -j MARK --set-mark 0x4
iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 110 -j RETURN
iptables -t mangle -A PREROUTING -j MARK --set-mark 0x5
iptables -t mangle -A OUTPUT -m tos --tos Minimize-Delay -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -m tos --tos Minimize-Delay -j RETURN
iptables -t mangle -A OUTPUT -m tos --tos Minimize-Cost -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -m tos --tos Minimize-Cost -j RETURN
iptables -t mangle -A OUTPUT -m tos --tos Maximize-Throughput -j MARK --set-mark 0x5
iptables -t mangle -A OUTPUT -m tos --tos Maximize-Throughput -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 22 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 22 -j RETURN
iptables -t mangle -I OUTPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 0x1
iptables -t mangle -I OUTPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
iptables -t mangle -A OUTPUT -p udp -m udp --dport 53 -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p udp -m udp --dport 53 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport ftp -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport ftp -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport ftp -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport ftp -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 80 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 80 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 80 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 80 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 443 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 443 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 443 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 443 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8080 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8080 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8080 -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8080 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport ftp-data -j MARK --set-mark 0x3
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport ftp-data -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport ftp-data -j MARK --set-mark 0x3
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport ftp-data -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 25 -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 25 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 25 -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 25 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 110 -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 110 -j RETURN
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 110 -j MARK --set-mark 0x4
iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 110 -j RETURN
iptables -t mangle -A OUTPUT -j MARK --set-mark 0x3
iptables -A INPUT -p ALL -i eth1 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p ALL -i lo -j ACCEPT
iptables -A INPUT -p ALL -d 10.0.0.136 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -p ALL -s 192.168.1.1 -j ACCEPT
iptables -A OUTPUT -p ALL -s 10.0.0.136 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
#Set the following values to somewhat lesss than your actual download and uplink speed.
DOWNLINK=1600
UPLINK=384
#clean existing down and uplink qdiscs,put the errors to /var/log/htb_log
tc qdisc del dev eth0 root 2> /dev/null > /dev/null
tc qdisc del dev eth0 ingress 2> /dev/null > /dev/null
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
########################################uplink###########################################
#install root HTB,point default traffic to 1:15:
tc qdisc add dev eth0 root handle 1: htb default 15 r2q 1
#shape everythin at $UPLINK speed -this prevents huge queues in your DSL modem which destroy
latency:
# main class
tc class add dev eth0 parent 1: classid 1:1 htb rate ${UPLINK}kbit ceil ${UPLINK}kbit
#high prio class 1:11:
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 128kbit ceil 128kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 128kbit ceil ${UPLINK}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 32kbit ceil ${UPLINK}kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 32kbit ceil ${UPLINK}kbit prio 1
#bulk & default class 1:15 -gets slightly less traffic,and a lower priority:
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 16kbit ceil ${UPLINK}kbit prio 3
#bost get Stochastic Fairness:
tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 13: sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 14: sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 15: sfq perturb 10
#TOS Mininum Delay (ssh,telnet) in 1:11:
tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:12
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:13
tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:14
tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:15
# install the ingress qdisc on the ingress
tc qdisc add dev eth0 handle ffff: ingress
# DROP everything thats coming in too fast:
tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate ${DOWNLINK}kbit burst 15k drop flowid :1
tc qdisc add dev eth1 root handle 2: htb
tc class add dev eth1 parent 2: classid 2:1 htb rate 128kbit ceil ${DOWNLINK}kbit
tc qdisc add dev eth1 parent 2:1 sfq
tc filter add dev eth1 parent 2:0 protocol ip prio 4 u32 match ip dst 192.168.1.0/24 flowid 2:1
查看狀態(tài):
tc -s -d qdisc show dev eth0
tc -s -d class show dev eth0
可以看到1:11,1:15都有了一定流量,然后,你可以試試收發(fā)郵件和FTP-data,1:13,1:14也會有一定流量的。

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/26560/showart_1932283.html

論壇徽章:
0
2 [報告]
發(fā)表于 2014-08-29 18:41 |只看該作者
學習學習,不錯的帖子!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP