|
你的链错了吧。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方式端口扫描时间更长)。 |
|