IPTables简介四——目标(动作)

四、目标(targets and jumps)

就是告诉IPTables某条规则匹配以后进行什么动作。可以进行的动作有两类,第一类是进行IPTables定义的动作(target),还有一种就是调用另外一条用户自定义的链。例如:

IPTables -N July_filter //创建一条自定义的链

IPTables -A INPUT -p tcp -j July_filter //规则匹配后,跳转到上述自定义的链

iptables命令参数-j 表示执行target

1、accept

2、drop

丢弃包,它和reject的区别在于,reject防火墙会回应包来源一个icmp 错误;而DROP不做任何动作(不声不响地丢弃)。

3、reject

只能在INPUT FORWARD OUTPUT链中生效。默认动作是向对端发送一个icmp port unreachable;可以通过--reject-with参数设定回复的报文。可以设置为:icmp host unreachable, icmp port unreachable, icmp proto unreachable, icmp net prohibited或 icmp host prohibited ;对于tcp链接可以设置为tcp-reset,它将触发tcp链接的tcp reset动作发生,导致tcp链接优雅关闭。

4、 snat

只能在postrouting链中生效。参数--to-source 可以设置转换的ip地址。每个链接(防火墙术语里的链接),翻译地址是一致的。snat将尽量保证源地址中的端口号和翻译以后的端口号一致。

例如:

iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 192.168.1.2-192.68.1.6:1024-8000//将snat地址翻译到

192.168.1.2-192.168.1.6 端口从1024-8000上去。

5、  dnat

通常在prerouting链里生效,也可以在output链中生效(见《iptables简介2》hairpin模式)。参数--to-destination

例如:

iptables -t nat -p tcp -i eth1 --to-destination 192.168.1.2-192.168.1.3:80-100

6、 redirect

只在nat表(dnat)的prerouting和output链中生效。可以将目的地址不是本地机器的报文,dst地址转换为接受此包的接口的首地址(如果本地发出的包<output>,就将dst地址转换为127.0.0.1)

可带参数为:

--to-ports:可选参数。用此参数的时候必须跟-p tcp 或udp 或sctp或dccp

例如: iptables -t nat -i PREROUTING -p tcp --sport 80 -j redirect --to-ports 8080

--random:可选参数,将此包中的目的端口转换为任意端口。

如果不指定就不进行端口转换,只进行地址转换。

redirect的应用,就是一些本地代理工具,会将本地发出的包通过iptables output redirect到自己的端口上,然后自己处理后再转发出去。

7、 return

上文曾介绍过,在传统的“五链“中规则的动作可以是用户自己定义的链,一旦发生匹配就跳转到这个用户定义的链上再次执行匹配动作。return动作就是从链(用户自定义链或者默认链)上返回,执行上一级链的下一匹配规则。如果已经是根链了,那么就执行根链的默认动作。

注意:

用户自定义的规则,最后一条不需要设置一个return动作。子链所有规则都匹配完成后,将自动返回上一级链。


8、 MASQUERADE

此动作实际和SNAT很相似,只是说SNAT需要显示指定转换的地址,而MASQURADE会根据出口接口地址的IP自动设置转换的src ip地址。

--to-ports 可选参数。如果不选iptables可以保证端口号不变。

9 、LOG

调试时刻常用此动作,它可以将报文大致的情况记录到系统日志里(通过内核的组建),后面可以通过syslog或者dmesg,或者/var/log/system里看到这些日志。

注意当日志量比较大的时候,可以用ULOG 动作设置MYSQL作为日志存储后端。

可选参数:

--log-level:设定iptables 日志的等级,可以有debug,info,notice,warning,err,emerg。这些设置的日志等级遵从于内核的日志等级。默认是info级别

--log-prefix:在日志消息中添加特定的字串。

例如:

-A INPUT -p tcp -j LOG --log-level info --log-prefix “zxy iptables debug”

10、user_define_chain

除了常规的系统五链之外,用户可以自行定义链,然后将这个链加入到传统的五链中。

step1 创建链

iptables -t nat -N july-chain

step2 在新定义链中加入自己的规则

xxx

step3 将自定义链加入传统五链中

iptable -I output -p tcp --dport 80 -j july-chain


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
序言 1.1. 为什么要写这个指南 1.2. 指南是如何写的 1.3. 文中出现的术语 2. 准备阶段 2.1. 哪里能取得iptables 2.2. 内核配置 2.3. 编译与安装 2.3.1. 编译 2.3.2. 在Red Hat 7.1上安装 3. 表和链 3.1. 概述 3.2. mangle 表 3.3. nat 表 3.4. Filter 表 4. 状态机制 4.1. 概述 4.2. conntrack记录 4.3. 数据包在用户空间的状态 4.4. TCP 连接 4.5. UDP 连接 4.6. ICMP 连接 4.7. 缺省的连接操作 4.8. 复杂协议和连接跟踪 5. 保存和恢复数据管理规则 5.1. 速度 5.2. restore的不足之处 5.3. iptables-save 5.4. iptables-restore 6. 规则是如何练成的 6.1. 基础 6.2. Tables 6.3. Commands 6.4. Matches 6.4.1. 通用匹配 6.4.2. 隐含匹配 6.4.3. 显式匹配 6.4.4. 针对非正常包的匹配 6.5. Targets/Jumps 6.5.1. ACCEPT target 6.5.2. DNAT target 6.5.3. DROP target 6.5.4. LOG target 6.5.5. MARK target 6.5.6. MASQUERADE target 6.5.7. MIRROR target 6.5.8. QUEUE target 6.5.9. REDIRECT target 6.5.10. REJECT target 6.5.11. RETURN target 6.5.12. SNAT target 6.5.13. TOS target 6.5.14. TTL target 6.5.15. ULOG target 7. 防火墙配置实例 rc.firewall 7.1. 关于rc.firewall 7.2. rc.firewall详解 7.2.1. 参数配置 7.2.2. 外部模块的装载 7.2.3. proc的设置 7.2.4. 规则位置的优化 7.2.5. 缺省策略的设置 7.2.6. 自定义链的设置 7.2.7. INPUT链 7.2.8. FORWARD链 7.2.9. OUTPUT链 7.2.10. PREROUTING链 7.2.11. POSTROUTING链 8. 例子简介 8.1. rc.firewall.txt脚本的结构 8.1.1. 脚本结构 8.2. rc.firewall.txt 8.3. rc.DMZ.firewall.txt 8.4. rc.DHCP.firewall.txt 8.5. rc.UTIN.firewall.txt 8.6. rc.test-iptables.txt 8.7. rc.flush-iptables.txt 8.8. Limit-match.txt 8.9. Pid-owner.txt 8.10. Sid-owner.txt 8.11. Ttl-inc.txt 8.12. Iptables-save ruleset A. 常用命令详解 A.1. 查看当前规则集的命令 A.2. 修正和清空iptables的命令 B. 常见问题于与解答 B.1. 模块装载问题 B.2. 未设置SYN的NEW状态包 B.3. NEW状态的SYN/ACK包 B.4. 使用私有IP地址的ISP B.5. 放行DHCP数据 B.6. 关于mIRC DCC的问题 C. ICMP类型 D. 其他资源和链接 E. 鸣谢 F. History G. GNU Free Documentation License 0. PREAMBLE 1. APPLICABILITY AND DEFINITIONS 2. VERBATIM COPYING 3. COPYING IN QUANTITY 4. MODIFICATIONS 5. COMBINING DOCUMENTS 6. COLLECTIONS OF DOCUMENTS 7. AGGREGATION WITH INDEPENDENT WORKS 8. TRANSLATION 9. TERMINATION 10. FUTURE REVISIONS OF THIS LICENSE How to use this License for your documents H. GNU General Public License 0. Preamble 1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 2. How to Apply These Terms to Your New Programs I. 示例脚本的代码 I.1. rc.firewall脚本代码 I.2. rc.DMZ.firewall脚本代码 I.3. rc.UTIN.firewall脚本代码 I.4. rc.DHCP.firewall脚本代码 I.5. rc.flush-iptables脚本代码 I.6. rc.test-iptables脚本代码 List of Tables 3-1. 以本地为目标(就是我们自己的机子了)的包 3-2. 以本地为源的包 3-3. 被转发的包 4-1. 数据包在用户空间的状态 4-2. 内部状态 6-1. Tables 6-2. Commands 6-3. Options 6-4. Generic matches 6-5. TCP matches 6-6. UDP matches 6-7. ICMP matches 6-8. Limit match options 6-9. MAC match options 6-10. Mark match options 6-11. Multiport match options 6-12. Owner match options 6-13. State matches 6-14. TOS matches 6-15. TTL matches 6-16. DNAT target 6-17. LOG target options 6-18. MARK target options 6-19. MASQUERADE target 6-20. REDIRECT target 6-21. REJECT target 6-22. SNAT target 6-23. TOS target 6-24. TTL target 6-25. ULOG target C-1. ICMP类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值