曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2777|回复: 0
打印 上一主题 下一主题

RETURN

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2014-11-3 17:24:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

RETURN 结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当 提早结束子程序并返回到主程序中。


RETURN means stop traversing this chain and resume at the next rule in the previous (calling) chain. If the end of a built-in chain is reached or a rule in a built-in chain with target RETURN is matched, the target specified by the chain policy determines the fate of the packet.  

比如
iptables -N TEST                                            //新建一个TEST的链
iptables -A INPUT -s 192.168.0.0/24 -j TEST    //所有进到INPUT的链的数据包中源IP:192.168.0.0/24的网段转到TEST的链
iptables -A TEST -p tcp --dport 80 -j RETURN    //在TEST链中目的端口号为80的tcp数据包返回到INPUT链来进行匹配。

意思就是说,所有来源于192.168.0.0/24网段的数据包转到TEST链,TEST链中所有tcp-80返回INPUT链


RETURN - 返回先前的调用的链;RETURN相当于到达chain的末尾。
对于一个内建的chain来说,执行相应的策略。对于自定义的,返回前一条chain


-A FORWARD -j comproxy
-A comproxy -p tcp -m multiport --dports 21,25,53,80,110 -j RETURN
-A comproxy -p tcp -m multiport --sports 21,25,53,80,110 -j RETURN
-A comproxy -p udp -m udp --dport 53 -j RETURN
-A comproxy -p udp -m udp --sport 53 -j RETURN
-A comproxy -m limit --limit 10/s -j RETURN
-A comproxy -j DROP

这样,常用端口就 RETURN 回上一个链了,其余每秒 RETURN 10 个,剩下的禁掉
不过有一点,因为你没写明来源和目的,所以那 10 个包是双向的,双向一共每秒才能通过 10 个


google出来的第一个结果就讲的很清楚了, return退出的是当前CHIAN,
如果当前CHIAN是别的CHAIN调用的子CHIAN,那么返回到调用点下一条规则处开始执行,
如果当前CHIAN不是子CHAIN,那么就以默认策略执行.

就像C语言里调用一个函数,函数return不会影响调用者的执行,但是main函数return,程序就终止了

1. 从一个CHAIN里可以jump到另一个CHAIN, jump到的那个CHAIN是子CHAIN.
2. 从子CHAIN return后,回到触发jump的那条规则,从那条规则的下一条继续匹配.
3. 如果return不是在子CHAIN里,而是在main CHAIN,那么就以默认规则进行.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-6 22:51 , Processed in 0.096342 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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