iptables简介
1、 什么是iptables?
iptables是linux防火墙工作在用户空间的管理工具,是 netfilter/iptables
IP信息包过滤系统的一部分,用来设置、维护和检查Linux内核的IP数据包过滤规则
2、 iptables特点
iptables是基于内核的防火墙,功能非常强大;iptables内置了filter、nat和mangle三张表。所有规则配置后、立即生效、不需要重启服务。
iptables组成
iptables的结构是有表(tables)组成的,而tables是由链组成,链又是由具体的规则组成。因此我们在编写iptables规则时,要先指定表,在指定链。tables的作用是区分不同功能的规则,并且存储这些规则
注意:raw表:用于处理异常。包括的规则链有:prerouting,output;一般使用不到。
总体说来,iptables是由“三表五链”组成
1、 三张表介绍
- filter
负责过滤数据包,包括的规则链有:input,output和forward
- nat
用于网络地址转换(IP、端口),包括的规则链有:prerouting,postrouting和output
- mangle
主要应用在修改数据包、流量整形、给数据包打标识,默认的规则链有:INPUT、OUTPUT、forward,POSTROUTING,PREROUTING
优先级:mangle > nat >filter
2、 五条链
- input
配置目标IP是本机的数据包
- output
出口数据包,一般不在此链上做配置
- forward
配置流经本机的数据包
- perouting
修改目的地址,用来做DNAT。如:把内网中的80端口映射到互联网端口
- postrouting
修改源地址,用来做SNAT。如:局域网共享一个公网IP接入internet
iptables处理数据包流程
1、 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
2、 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。
3、 本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
4、 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWORD链,然后到达POSTROUTING链输出。
总结:整体数据包分两类:1、发送给防火墙的数据包;2、需要经过防火墙的数据包