`

TC(HTB)+iptables作流量控制3

阅读更多
附完整脚本:
代码:
#!/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 $kbit ceil $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 $kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 32kbit ceil $kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 32kbit ceil $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 $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 that's 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 $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 $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



六、查看状态:
tc -s -d qdisc show dev eth0
tc -s -d class show dev eth0

可以看到1:11,1:15都有了一定流量,然后,你可以试试收发邮件和FTP-data,1:13,1:14也会有一定流量的
分享到:
评论

相关推荐

    tc+htb+imq流量控制

    htb+imq流量控

    htb+imq流量控制

    tc+htb+imq流量控制脚本

    inux下TC+HTB流量控制.doc

    Linux下的TC(traffic control)和HTB(Hierarchical Token Bucket)流量控制是网络管理中的关键工具,主要用于优化网络带宽的分配和确保服务质量(QoS)。它们可以帮助管理员在多用户环境中控制不同类型的网络流量,避免...

    [Linux]使用linux下的TC进行服务器流量控制.pdf

    TC是Linux提供的一种强大的流量控制手段,通常与网络队列调度器(qdisc)和类别(class)相关联。 qdisc是Linux流量控制的基础构件,全称是queueing discipline,它定义了流量如何被排队处理。Linux支持多种qdisc,...

    一种基于Linux下TC的流量控制管理架构

    此外,TC还可以与iptables等防火墙工具结合,根据IP地址、端口或协议来设定更具体的流量控制策略。例如,可以通过iptables规则将所有来自特定IP的流量归入一个特定的TC类,然后对该类设置特定的带宽限制。 在构建...

    linux流控 TC设置 超详细解析TC命令,流控原理

    流量控制的实现依赖于多个组件和技术,其中最核心的命令行工具是tc(traffic control)。 流量控制的核心思想是通过对网络流量的管理,解决网络拥塞和数据包延迟等问题。在分组交换网络中,由于缺乏对流经网络的...

    LinuxTC流量限速.pdf

    总结以上知识点,可以看出Linux TC工具在流量整形和限速方面提供了强大的功能,通过HTB和CBQ等队列规则,我们可以构建复杂的带宽管理策略,以适应不同场景下的网络流量控制需求。此外,通过结合iptables等网络工具,...

    linux高级路由和流量控制HOWTO中文版(牛老师译)

    Linux中的流量控制机制包括`iptables`、`tc`(Traffic Control)和`netem`(Network Emulation)。 10. **iptables**:iptables是Linux内核防火墙的用户空间工具,可以实现包过滤、NAT(网络地址转换)和报文速率...

    Linux NAT环境下上行流量控制方法.pdf

    总的来说,通过结合iptables的包标记和TC的流量控制功能,可以有效地在Linux的NAT环境中实现上行流量的精细化管理。这种方法不仅适用于家庭网络,还适用于企业网络和数据中心环境,有助于优化网络资源的使用,确保...

    LinuxTC流量限速[借鉴].pdf

    此外,Linux TC 流量限速还可以与其他网络技术结合使用,例如 iptables、NAT 等,从而实现更加复杂的网络流量控制和优化。 Linux TC 流量限速是一种功能强大且灵活的流量控制技术,它可以帮助我们实现网络流量的...

    基于Linux下TC的网络流量管理.pdf

    此外,TC的灵活性还体现在它可以与其他网络工具结合使用,如iptables,实现更复杂的流量控制策略。例如,可以先使用iptables对数据包进行分类,然后通过TC进行流量整形和限速。 总的来说,Linux下的TC网络流量管理...

    linux高级路由和流量控制.zip

    2. `tc`工具:`tc`命令用于配置和管理流量控制策略,包括带宽限制、优先级分配、延迟控制等。通过设置不同的队列结构(如HTB、TBF、CBQ等),可以实现复杂的流量管理。 3. 几种流量控制策略: - HTB(Hierarchical...

    Linux下利用TC工具控制网络流量[收集].pdf

    Linux TC(Traffic Control)工具是一个强大的网络流量控制工具,它允许管理员在Linux内核级别对网络流量进行精细化管理。TC工具主要应用于优化网络性能、限制带宽、实现QoS(Quality of Service)策略以及在网络中...

    Linux 高级路由和流量控制-lartc(Linux Advanced Routing & Traffic Control H

    6. **iptables和netfilter**:iptables是Linux内核的包过滤和防火墙系统,它可以与LARTC结合使用,实现更精细的流量控制和安全策略。通过netfilter框架,可以设定规则来匹配和修改数据包,从而实现路由和流量控制的...

    iptables 高级使用研讨

    - **混合云环境下的iptables应用**:在混合云环境中,利用iptables进行精细的流量控制和安全防护。 #### 5. FAQ - **Q**: 如何查看iptables版本信息? - **A**: 使用命令`iptables -V`可以查看iptables的版本信息...

    追溯HTB

    iptables用于防火墙规则,而tc工具则用于设置和管理网络流量控制策略。通过tc命令,我们可以创建HTB类和队列,为不同类型的流量分配不同的优先级和带宽限制。 具体操作步骤如下: 1. 首先,我们需要确定网络接口,...

    LINUX操作系统流控

    LARTC(Linux Advanced Routing & Traffic Control)是Linux流控的一个重要工具集,它提供了高级路由和流量控制的手段,包括带宽管理、延迟优化、负载均衡等功能。LARTC-zh_CN.GB2312.pdf和lartc.pdf.pdf很可能是...

Global site tag (gtag.js) - Google Analytics