iptables 的底层就是 Linux 内核中的 netfilter。
iptables 是 linux 内核中集成的“包过滤”防火墙,完全免费,合理配置可以完美替代昂贵的企业级防火墙,完成包过滤、重定向和 NAT 等功能。
从名字可以看出,ip tables :字面意思就是 IP 数据包的规则表 tables 的意思,包过滤。
需要注意的是,在大并发网站的设计中,建议关闭 iptables,使用硬件防火墙。
iptables netfilter 以及 firewall 之间的关系:
CentOS 7 中 iptables 和 Firewall 的关系:
iptables用于过滤数据包,属于网络层防火墙.
firewall能够允许哪些服务可用,哪些端口可用…. 属于更高一层的防火墙。
firewall的底层是使用iptables进行数据过滤,建立在iptables之上。
iptables 四表五链:
四表:mangle、nat、filter、raw
五链:input、output、prerouting、forward、postrouting
iptables 容器关系:
iptables/Netfilter 是表 (Tables)的容器,iptables包括四个表:MANGLE、NAT、FILTER、RAW
iptables 的表是“链 (Chains)” 的容器,链包括:INPUT、OUTPUT、PREROUTING、FORWARD、POSTROUTING
“链” 是“规则策略 (policy)”的容器:例如, 开放本机 80 端口的规则用法:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables 语法规则:
iptables [-t tablename] option [chainname] rule [-j active]
例如,阻止别人 ping 的规则:iptables -t filter -I INPUT -p icmp -j REJECT
-t:指定表,不指定默认 FILTER 表,-I(I,insert;D,delete,A,add):指定链,不指定默认指表内所有链
1. 防火墙是层层过滤的,按照配置规则的顺序从上到下,从前到后进行过滤的;
2. 只要匹配上规则,即明确表明是阻止还是允许,数据包就不再向下匹配下面的规则;
3. 如果规则表中没有明确阻止还是允许,也就是没有匹配规则,直到匹配到默认规则;
4. 防火墙默认规则是所有指定规则执行完以后没有匹配上,默认规则才会执行。
建议大家开始学习使用 iptables 时按照语法使用,这样容易理解,熟练以后可以自行决定(大佬请忽略这句废话)。
iptables 默认的表、链结构。没错,看着让人害怕,不过没关系,仔细看,有标红的,这才是实际工作中用到的。
可以看出 NAT 表和 FILTER 表是标红的,也就是说,在实际工作中,常用的也就是这两个表,MANGLE 表很少用,而 RAW 表几乎可以忽略,没有人使用。
iptables 表和链的工作流程图:
去掉 RAW 表以后简化为:
前边说好了,只用NAT 和 FILTER 两个表,那么,最小化原则,就变成这样的了:
本节并没有介绍 iptables 的具体用法,只是简单介绍了 iptables 的基本原理以及语法规则,后续介绍 iptables 用法。
查看 iptables 规则:iptables -L -n