链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING
表:filter、nat、mangle、raw、security
数据报文刚进网卡,还没有到路由表的时候,先进行了prerouting,进入到路由表,通过目标地址判断出来,如果是给自己发的,就直接INPUT,如果是通过自己到转发别的目标的,就进行forward。如果是访问本机的,那么经过INPUT之后,需要往外出,那么就会用到OUTPUT链。OUTPUT出去之后就要查询路由表,就和forward chain汇总到一个出口上,经理最后的过程就是POSTROUTING CHAIN。
三条路径:
- 进入本机:PREROUTING --> INPUT
- 穿过本机的:PREROUTING --> FORWARD --> POSTROUTING
- 从本机往外走的:OUTPUT --> POSTROUTING
实验环境准备
- Centos7:systemctl stop firewalld.service && systemctl disable firewalld. service
- Centos6:service iptables stop && chkconfig iptables off && checonfig --list iptables
卸载虚拟网卡
yum info libvirt-deamon
yum remove libvirt-deamon
看看iptables来自于那个包
rpm -ql which iptables
iptables规则
组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作作出处理
- 匹配条件:默认为与条件,同时满足 基本匹配:IP,端口,TCP的Flags(SYN,ACK等) 扩展匹配:通过复杂高级功能匹配
- 处理动作:称为target,跳转目标 内建处理动作: ACCEPT,DROP,REJECT,SNAT,DNATMASQUERADE,MARK,LOG… 自定义处理动作:自定义chain,利用分类管理复杂情形
- 规则要添加在链上,才生效;添加在自定义上不会自动生效
- 链chain: 内置链:每个内置链对应于一个钩子函数 自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;