`

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

阅读更多
四、现在对数据进得mark
1、首先启用ip转发,做NAT转换,并设定默认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、设置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?)相关和TOS要求最小成本的数据流。
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

最后是路由器后面经过NAT进行大批量传输的机器。以保证他们不会妨碍正常服务。
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、给数据包打标记
类1:
提高tcp初始连接(也就是带有SYN的数据包)的优先权是非常明智的:
# 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数据包的优先权:
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:用于放置大批量传输的类。用来处理浏览网页的数据包,目标端口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)相关和TOS要求最小成本的数据流。
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:前面没有打过标记的数据包将交给1:15处理:
iptables -t mangle -A PREROUTING -j MARK --set-mark 0x5


4、最后应该在OUTPUT链中再重复一遍上面的设置,也就是说把命令中的–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的数据都转发给squid处理
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128
分享到:
评论

相关推荐

    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操作系统流控

    2. **标记(Marking)**:标记是在数据包上设置特定的标志,以便后续的流量控制决策。例如,可以标记VoIP流量,确保其获得较高的优先级。 3. **限速(Shaping)**:限速是指限制某个流量的发送速率,使其不超过预设...

Global site tag (gtag.js) - Google Analytics