找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 29553|回复: 28

简单用了下iptables限速,比QoS爽

[复制链接]
本帖最后由 诸葛亮的很 于 2011-5-6 21:22 编辑

参考了http://www.dd-wrt.com/wiki/index.php/Iptables_command

环境是ADSL 2M,四个人,路由器是DIR-600,刷了DD-WRT 16785.
一舍友整天Qvod + UUSee + 迅雷不停,其他人被卡得够呛,其他人都有意见了,没法,只能被逼着学了下iptables的语句。

经过一晚的测试和摸索,大概发现以下几个,欢迎各位指正和指导,在这里先谢过。
iptables -I INPUT 是对下载做设置
iptables -I OUTPUT 是对上传做设置
在ubuntu论坛查到的资料说限速的时候规则是成对使用的,第一条是-j ACCEPT,接受符合规则的数据包,第二条是-j DROP抛弃不符合的数据包,有错误欢迎指正。
限速的时候--limit 60/s 根据查到的资料说是这个“60”不是直接的速度而是数据包的数量,60/s是指每秒转发60个数据包,每个数据包是1.5Kbyte(貌似有人说是1480byte?),所以限制60/s的时候,被限制的IP平均速度是90K/s的样子。2图为证。

另外,iptables -I FORWARD -p tcp -m connlimit 是限制连接数?貌似不起作用啊,解除对被限制的IP的封禁之后该IP的连接数还是疯涨。这个怎么用的?

Firewall commands:


只有被限制的IP在线的时候(接在LAN2口)的流量图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
jzm*** + 1 感谢

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| | 显示全部楼层
发现时间长了之后还是不行,难道脚本有生存期?当一次下载的任务多了之后还是限制不住流量。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 starinvader 于 2011-5-7 01:29 编辑

数据包的大小=MTU,所以以太网接入环境(比如FTTH,到桌面通常都是网线)为1500byte,而ADSL环境则是1492byte,其中包含28byte的头部
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
3# starinvader
原来是指MTU长度,谢谢解释。
那请问一下,为什么我限制到30/s,被限制的IP还是可以达到210KB/s的满速?按道理应该不会达到100KB/s才对啊。。。望指教,实在想不通。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

貌似pppoe拨号的mtu都是1492,除非专线固定IP
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

3# starinvader
原来是指MTU长度,谢谢解释。
那请问一下,为什么我限制到30/s,被限制的IP还是可以达到210KB/s的满速?按道理应该不会达到100KB/s才对啊。。。望指教,实在想不通。
诸葛亮的很 发表于 2011-5-7 12:32

或许限制到30/s,是指每个连接数的带宽限制
而不是所有连接数的带宽总和限制,所以被限制的IP还是可以达到210KB/s的满速
而我们真正需要的是后者
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

一般都是基于ip限速的。。基于连接数限数的当然不可以。。。你限制他并发连接数   为100.。让他慢慢爽 。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

说句大实话  TP的IP限速对我们已经够了。。。。。我就这么用的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
6# 吸铁石
测试了一下,貌似是这样的,当开少量任务时就算是迅雷也可以限制到数字nX1.5K的速度,当开大量任务时就失效了。可能是你说的那样,限制是每连接每秒的数据包。
不过-m connlimit无效啊,连接数还是几十几百地增加。或者是我不会用iptables?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
7# 159123w
我的是D-link的DIR-600……TP的固件是简单又好用。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

你的链错了吧。OUTPUT是指从路由流出,INPUT是指进入路由。虽然我也没看懂啥意思,但是很显然你那设定是不可能有效果的。

你要limit也是在FORWARD或者mangle链。limit是目前143xx版本ddwrt目前唯一能用的数据包限制方法也是唯一的,也是证明有效的,但是效果实在很一般。好似16xxx加入了recent模块。

#对特殊IP进行数据包限制
for X in 60 61 62 63 64 65 66 67 68 69
do iptables -t mangle -A FORWARD -s $lan_addr.$X -p tcp --dport 80 -m limit --limit 60/s  -j ACCEPT
iptables -t mangle -A FORWARD -s $lan_addr.$X -m limit --limit 30/s -j ACCEPT;iptables -t mangle -A FORWARD -s $lan_addr.$X -j DROP;done

mangle链只支持drop动作。而且将80端口写在其它之前确实可以在像看ppstream之类的大流量时有效的浏览WEB页面,比单独的实施QOS简单。drop是什么,drop就是在包达到限制上限时直接丢掉,而且不发送应答给相应的客户端。这意味着如果你的tcp udp timeout设得过大同样会导致数据拥塞,让路由硬件资源吃紧。

还有另外一种丢弃动作REJECT,limit只能说是没得选择的选择可能有一定效果但是在大数据量时效果一般般。偶早上刚试了试同组IP里一台看ppstream,一台浏览网页,浏览网页那台依然没什么提高。也不知道是不是因为无线网络的原因,有空试试有线网络是否有所改变。

DROP与REJECT的区别(2009-10-14 09:37:19)转载标签: 防火墙超时协议支持端口扫描两种it 分类: 个人日记  
防火墙内的策略动作有DROP和REJECT两种,区别如下:

1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。

2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。



至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规
范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了
更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能
会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任
何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络
中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防
火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是
由于防火墙引起的问题还是网络设备/线路 故障。

一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT
方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,
则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP
可以使他们进行TCP-Connect方式端口扫描时间更长)。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 诸葛亮的很 于 2011-5-7 14:48 编辑

11# dato
我也不知道用哪个,不过DD-WRT的WIKI说到有
Chains
INPUT is for packets destined to or entering the router's local sockets.
OUTPUT is for packets sourced from or leaving the router's local sockets.
FORWARD is for packets being forwarded through the router (e.g. packets not necessarily destined for local sockets).
PREROUTING is for manipulating packets before they are routed.
POSTROUTING is for manipulating packets after they are routed.
这几个链,经过测试应该还是有用的,关于下载限制不住,是我的一个小失误,后来修改下载规则(INPUT)的时候把限制的IP打错了一位……四条规则上传的两条INPUT确实有用,IP的流量限制在20K以下,关于OUTPUT的下载规则,等继续测试之后再来汇报。

我的理解是:
规则的CHAIN是从DD-WRT的角度来看的,INPUT就是DD-WRT灌进LAN端口,对电脑来说就是下载。OUTPUT就是从LAN口冒出灌进DD-WRT,对电脑来说就是上传。INPUT和OUTPUT估计也会限制本地访问本地的速度(待测试)。
而FORWARD就是从LAN口到WAN口?官方WIKI貌似说不到达本地LAN口的也算转发数据包?应该只是和INPUT\OUTPUT对于不同方面的区分吧。

editted:
关于你的文字的后半部分,受益很大。被限制的IP经常发现断流、QQ掉线和其他问题,也许-j我应该试试REJECT而不是自认为最有效的DROP。先谢过了。
DROP - packets are dropped/denied
REJECT - packets are rejected/denied
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

QOS流量限制应该用这帖里的方法
https://www.right.com.cn/forum/v ... mp;page=1#pid326242

为什么要限制并发数为了避免这些无序的家伙发起大量并发导致路由处理不过来。所以对于这样的共享者只能大家互相之间约定规则。实在不行的话直接让那个人的IP udp limit 0/s彻底封闭它的UDP发包。
另外INPUT OUPUT不是你想的那个,说白了你那些就是限制LAN对路由的存取,影响的就是客户端对路由的像telnet,web管理。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 诸葛亮的很 于 2011-5-7 16:00 编辑

13# dato
不过我开着bandwidth页面看着,INPUT、OUTPUT就算和我想的不一样,也产生了效果,不过应该本地访问本地的FTP也会被限制。
先看一下你的帖子。

editted:
没看明白你的语句,望指教。官方貌似没提到mangle?
Basic Usage
iptables -[AD] chain rule-specification [options]
iptables -[RI] chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LFZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)

Targets
ACCEPT - packets are accepted/allowed
DROP - packets are dropped/denied
REJECT - packets are rejected/denied
logaccept - packets are accepted and logged to /tmp/var/log/messages
logdrop - packets are dropped and logged to /tmp/var/log/messages
logreject - packets are rejected and logged to /tmp/var/log/messages
DNAT is for altering packet's destination address.
SNAT is for altering packet's source address.
TRIGGER - dynamically redirect input ports based on output traffic (aka port triggering)


貌似明白你的意思了,Mangle里面也有INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING五个链?貌似是应该按照你说的限制Mangle里面的FORWARD,我的写法有很大的问题,开始就理解上的错误。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

3# starinvader
原来是指MTU长度,谢谢解释。
那请问一下,为什么我限制到30/s,被限制的IP还是可以达到210KB/s的满速?按道理应该不会达到100KB/s才对啊。。。望指教,实在想不通。
诸葛亮的很 发表于 2011-5-7 12:32



    因为iptables这条规则的作用对象是每个连接,如果发起多线程连接就可以bypass了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 22:30

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表