iptables 中的 return

肥多罗 2010-08-04 04:47:46
大家好,我想了解下ACCEPT 与 RETURN的区别:
ACCEPT是符合后,这条链就不再匹配了;
RETURN是符合后,直接返回这条链的上一条链?这不是死循环了吗?还是说只针对自定义链来说的?

大家帮忙介绍下啊,希望不是简单的BAIDU GOOGLE过来的 谢谢。
...全文
3969 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
肥多罗 2010-08-05
  • 打赏
  • 举报
回复
明白了 之前我的意思是 “默认规则”是指什么样的规则 -P设置的
一品川 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 coder_granger 的回复:]
1. 从一个CHAIN里可以jump到另一个CHAIN, jump到的那个CHAIN是子CHAIN.
2. 从子CHAIN return后,回到触发jump的那条规则,从那条规则的下一条继续匹配.
3. 如果return不是在子CHAIN里,而是在main CHAIN,那么就以默认规则进行.

好像没什么疑问
[/Quote]顶
Coder_Granger 2010-08-04
  • 打赏
  • 举报
回复
1. 从一个CHAIN里可以jump到另一个CHAIN, jump到的那个CHAIN是子CHAIN.
2. 从子CHAIN return后,回到触发jump的那条规则,从那条规则的下一条继续匹配.
3. 如果return不是在子CHAIN里,而是在main CHAIN,那么就以默认规则进行.

好像没什么疑问
肥多罗 2010-08-04
  • 打赏
  • 举报
回复
The default policy is normally set to ACCEPT, DROP or similar.

如果当前CHIAN不是子CHAIN,那么就以默认策略执行. 意思是?
Coder_Granger 2010-08-04
  • 打赏
  • 举报
回复
google出来的第一个结果就讲的很清楚了, return退出的是当前CHIAN,
如果当前CHIAN是别的CHAIN调用的子CHIAN,那么返回到调用点下一条规则处开始执行,
如果当前CHIAN不是子CHAIN,那么就以默认策略执行.

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

The RETURN target will cause the current packet to stop traveling through the chain where it hit the rule. If it is the subchain of another chain, the packet will continue to travel through the superior chains as if nothing had happened. If the chain is the main chain, for example the INPUT chain, the packet will have the default policy taken on it. The default policy is normally set to ACCEPT, DROP or similar. 
Linux Iptables命令列表: 用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改 iptables - [RI] chain rule num rule-specification[option] 用iptables - RI 通过规则的顺序指定 iptables -D chain rule num[option] 删除指定规则 iptables -[LFZ] [chain][option] 用iptables -LFZ 链名 [选项] iptables -[NX] chain 用 -NX 指定链 iptables -P chain target[options] 指定链的默认目标 iptables -E old-chain-name new-chain-name -E 旧的链名 新的链名 用新的链名取代旧的链名 说明 Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。 可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。 TARGETS 防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除], QUEUE[排队], 或者 RETURN[返回]。 ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。

19,620

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧