为了更方便的管理,我们还可以在某个表里面创建自定义链,将针对某个应用程序所设置的规则放置在这个自定义链中,但是自定义链接不能直接使用,只能被某个默认的链当
做动作去调用才能起作用,我们可以这样想象,自定义链就是一段比较"短"的链子,这条短”链子上的规则都是针对某个应用程序制定的,但是这条短的链子并不能直接使用
而是需要焊接在 Iptables默认定义链子上,才能被 iptables使用,这就是为什么默认定义的链需要把自定义链当做动作去引用的原因。这是后话,后面再聊,在实际使用
时我们即可更加的明白。
数据经过防火墙的流程
综上所述,我们可以将数据包通过防火墙的流程总结为下图:
我们在写 Iptables规则的时候,可以时刻牢记这张路由次序图,灵活配置规则。
我们将经常用到的对应关系重新写在此处,方便对应图例查看。
链的规则存放于哪些表中(从链到表的对应关系)
· REROUTING的规则可以存在于:raw表, mangle表,nat表。
·NPUT的规则可以存在于: mangle表, filter表,( centos7中还有nat表, centos6中没有)。
·FORWARD的规则可以存在于: mangle表, filter表。
·OUTPUT的规则可以存在于:raw表 mangle表,nat表, filter表。
·POSTROUTING的规则可以存在于: mangle表,nat表。
表中的规则可以被哪些链使用(从表到链的对应关系):
·raw表中的规则可以被哪些链使用: PREROUTING, OUTPUT
·mangle表中的规则可以被哪些链使用: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
·nat表中的规则可以被哪些链使用: PREROUTING, OUTPUT, POSTROUTING( centos7中还有|NPUT, centos6中没有
·filter表中的规则可以被哪些链使用: INPUT, FORWARD, OUTPUT
下图中nat表在 centos7中的情况就不再标明。
规则的概念
规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理
那么我们来通俗的解释一下什么是 Iptables的规则,之前打过一个比方,每条链都是一个"关卡,每个通过这个"关卡”的报文都要匹配这个关卡上的规则,如果配,则对报
文进行对应的处理,比如说,你我二人此刻就好像两个报文”,你我二人此刻都要入关,可是城主有命,只有器宇轩昂的人才能入关,不符合此条件的人不能入关,于是守关将
土按照城主制定的规则”,开始打量你我二人,最终,你顺利入关了,而我已被拒之门外,因为你符合器宇轩昂的标准,所以把你放行"了,而我不符合标谁,所以没有被放
行,其实,“宇轩昂就是种匹配条件”,“放行就是种动作,"匹配条件”与”动作“组成了规则
了解了规则的概念,那我们来聊聊规则的组成部分此处只是大概的将规则的结构列出,后面的文章中会单独对规则时进行总结。
规则由匹配条件和处理动作组成
匹配 条件
匹配条件分为基本匹配条件与扩展匹配条件
基本匹配条件
源地址 Source IP,目标地址 Destination|P
上述内容都可以作为基本匹配条件
扩展匹配条件
除了上述的条件可以用于匹配,还有很多其他的条件可以用于匹配,这些条件泛称为扩展条件,这些扩展条件其实也是 netfilter中的部分,只是以模块的形式存在,如果想要
使用这些条件,则需要依赖对应的扩展模块
源端口 Source port,目标端口 Destination Port
上述内容都可以作为扩展匹配条件
ACCEPPT:接受数据包。
DROP:直接丢弃数据包。不给任何回应信息,这时候客户端会感觉自己的请求沉入大海,等过了超时时间才会有反应。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。是SNAT的一种特殊形式,适用于动态的,临时会变的IP上。
LOG:日志记录。在/var/log/messages文件中记录日志信息。除了记录对数据包不做任何动作。
基础命令
-t<表>: 指定要操纵的表
-A: 向规则链末尾中添加,追加条目;(append)
-D: 从规则链中删除条目;(delete)
-I: 向规则链的开头(或者指定序号)中插入条目,未指定规则序号时,默认作为第一规则;(insert)
-R: 替换规则链中的条目;
-L: 显示规则链中已有的条目;(list)
-F: 清除规则链中已有的条目,若位置定规则序号,则默认清空所有;(flush)
-v: 查看规则列表时显示详细信息(verbose)
-Z: 清空规则链中的数据包计算器和字节计数器;
-N: 创建新的用户自定义规则链;
-P: 定义规则链中的默认目标;(police)
-h: 显示帮助信息;
-p: 指定要匹配的数据包协议类型;
-s: 指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
iptables命令选项输入顺序: