Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



iptables智能限速方案 (转载)

网络分析与限速
网络现状:允许所有的数据通信。网络可管理,需手动进行。租用的线路下载速度是2M,上传512K
目的:达到网络检测的自动化,智能管理,保证网络畅通无阻塞。
方法:根据IP地址进行数据包分析,通过脚本实现
要求:充分利用带宽,对合理数据需要通过,不合理数据通信进行拒绝。
一:现在网络存在以下弊端
P2P类软件主要有:
下载类工具:迅雷,TTFlashget, BT, 电骡,youtub……。
在线播放工具:PPLIVE ,PPS,沸点,酷我音乐盒,酷狗音乐……。
1.用户下载过程若不用P2P下载,速度相对较慢。
网内若运行P2P下载软件,没有及时关闭,数据上传功能会耗尽上传带宽,导致整个网络速度变慢。
2.现在检测网络的方法是每天上班时间定时检查四次,将网络状态发信到管理员信箱,
管理方法:发现网络异常后,分析通信的数据,逐步筛选,一步步定位到通信量较大的IP,整个过程用时较长。
二:网络管理常用的方法
1.对端口进行限制。
通过对端口进行封闭,来达到屏蔽P2P软件的目的。
方法存在问题:
通过代理可绕过限制。
P2P软件很多,需知道每个软件所使用的端口号并逐个进行屏蔽。
P2P软件越来越智能,可以自定义端口号,通过UPnp技术可以使用允许的端口进行上传下载。
2.分析通信协议和数据包大小
通过对网络进行查看,得到以下结论:
网络变慢的原因大部分是由于P2P软件在运行。
P2P软件通信有一个共性:使用UDP协议,且每秒钟发送的数据包都很大(每个数据包大小均超过100)每秒发送10个以上。
方案:
现在使用第二种方式,通过分析数据包协议和大小进行限制,对内网,校网间的通信进行允许策略。
针对对外网的通信,分析局域网用户所使用的通信协议及单个数据包的大小。限制使用UDP协议的IP数据包大小为40
保证:
为保证“限制脚本”的运行不会引起网络故障(虽然之前已经分析过不会,为以防万一)同时编写了删除“限制脚本”,恢复网络正常运行的程序。
此限制有效的对P2P软件进行的限制,不对IP进行限速,最大程度利用带宽,根据P2P软件的上传数据包耗尽带宽,进行包大小限制。
结论:
经检测,达到的预期目的,内网,校网通信不受限制。可以都大程度利用带宽。当有P2p软件在运行时,不会造成网络阻塞情况,达到了预期的目的。
脚本如下:
#!/bin/bash
#limit network upload speed
for ((i=253;i>4;i--));
do
/sbin/iptables -I FORWARD -s 192.168.1.$i -j DROP
/sbin/iptables -I FORWARD -s 192.168.1.$i -m limit --limit 40/s -j ACCEPT
done
/sbin/iptables -D FORWARD -s 192.168.1.40 -j DROP
/sbin/iptables -D FORWARD -s 192.168.1.40 -m limit --limit 40/s -j ACCEPT
#accept inside network speed
/sbin/iptables -I FORWARD -d 192.168.1.0/24 -j ACCEPT
/sbin/iptables -I FORWARD -d 192.168.10.0/24 -j ACCEPT
/sbin/iptables -I FORWARD -d 192.168.3.0/24 -j ACCEPT
/sbin/iptables -I FORWARD -d 10.0.0.0/8 -j ACCEPT
/sbin/iptables -I FORWARD -d 210.32.0.0/20 -j ACCEPT
/sbin/iptables -I FORWARD -d 210.32.128.0/18 -j ACCEPT
/sbin/iptables -I FORWARD -d 222.205.0.0/17 -j ACCEPT
原文:
http://liguxk.blog.51cto.com/129038/155499
浏览1985  评论0  Alex于 2013-1-28 15:09
发言