iptables 简介

参考链接:http://www.zsythink.net/archives/1199

朱双印先生创作的iptables系列非常优秀,为了加强自身的理解,写下此文。欢迎各位斧正


iptables是一个用户态工具,其功能是由内核中的netfilter提供。(相当于qemu与kvm的关系)

我们知道iptables是按照规则来办事的,我们就来说说规则(rules),规则其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。


iptables中的5个链:prerouting, input, forward, output, postrouting.

每个链都有对应的规则,按照规则的作用可以分成4类,存放于4中表中:filter, nat, mangle, raw.

各个表的意义

filter表:负责过滤功能,防火墙;内核模块:iptables_filter

nat表:network address translation,网络地址转换功能;内核模块:iptable_nat

mangle表:拆解报文,做出修改,并重新封装 的功能;

iptable_mangleraw表:关闭nat表上启用的连接追踪机制;iptable_raw

也就是说,我们自定义的所有规则,都是这四种分类中的规则,或者说,所有规则都存在于这4张"表"中。


每个链都有不用的作用,所有每个链的规则类型存在差异,也就是不同的链在支持的表上存在差异:

PREROUTING      的规则可以存在于:raw表,mangle表,nat表。

INPUT          的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有)。

FORWARD         的规则可以存在于:mangle表,filter表

OUTPUT         的规则可以存在于:raw表mangle表,nat表,filter表。

POSTROUTING      的规则可以存在于:mangle表,nat表。

在同一个链中,多标并存,其优先级由高到低是:raw -> mangle -> nat -> filter

在使用中经常需要以表为分析起点,下图提供表在不同的链中的存在情况


数据经过防火墙(iptables)的流程



包处理逻辑

a.    匹配:

    1.    规则:    根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理;

    2.    匹配条件:

              基本匹配条件:源IP,目的IP

              扩展匹配条件:源端口,目标端口

    3.    处理动作:

          ACCEPT:    允许数据包通过

          DROP:     直接丢弃,没有任何响应,客户端会一直等到超时

          REJECT:   拒绝数据包,回返回拒绝信息到客户端

          SNAT:     源地址转换

         DNAT:     目标地址转换

          MASQUERADE: SNAT的特殊形式,适用于动态的,临时会变的IP

         REDIRECT: 在本机做端口映射 LOG:     在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值