在早期的 Linux 系统中,默认使用的是 iptables
配置防火墙。尽管新型 的 firewalld
防火墙已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用 iptables。考虑到 iptables 在当前生产环境中还具有顽强的生命力,我觉得还是有必要再好好地讲解一下这项技术。
iptables 是 Linux 防火墙工作在用户空间的管理工具,是 netfilter/iptables
IP 信息包过滤系统是一部分,用来设置、维护和检查 Linux 内核的 IP 数据包过滤规则。
iptables 是基于内核的防火墙,功能非常强大;iptables 内置了filter
,nat
和mangle
三张表。所有规则配置后,立即生效,不需要重启服务。
iptables的结构是由表(tables)组成,而tables是由链组成,链又是由具体的规则组成。因此我们在编写iptables规则时,要先指定表,再指定链。tables的作用是区分不同功能的规则,并且存储这些规则。
注意:
raw表
:用于处理异常,包括的规则链有:prerouting,output;一般使用不到。
总体说来,iptables是由“三表五链
”组成。
filter
负责过滤数据包,包括的规则链有:input
,output
和forward
nat
用于网络地址转换(IP、端口),包括的规则链有:prerouting
,postrouting
和 output
mangle
主要应用在修改数据包、流量整形、给数据包打标识,默认的规则链有:INPUT
,OUTPUT
、 forward
,POSTROUTING
,PREROUTING
优先级:mangle > nat > filter
input
匹配目标IP是本机的数据包
output
出口数据包 , 一般不在此链上做配置
forward
匹配流经本机的数据包
prerouting
修改目的地址,用来做 DNAT 。如:把内网中的 80 端口映射到互联网端口
postrouting
修改源地址,用来做 SNAT。如:局域网共享一个公网IP接入Internet。
PREROUTING
链,内核根据数据包目的 IP 判断是否需要转送出去。INPUT
链。数据包到了 INPUT 链后,任何进程都会收到它。OUTPUT
链,然后到达POSTROUTING
链输出。FORWARD
链,然后到达 POSTROUTING
链输出。总结:整体数据包分两类:1、发给防火墙本身的数据包 ;2、需要经过防火墙的数据包
systemctl stop firewalld //关闭firewalld服务
systemctl disable firewalld //禁止firewalld开机自启动
yum -y install iptables-services
systemctl start iptables //启动iptables
systemctl start iptables //设置iptables开机自启动
[root@LB-01 ~]# ll /etc/sysconfig/iptables
-rw------- 1 root root 1027 May 12 18:40 /etc/sysconfig/iptables
最后给大家看下iptables配置实例:
今天只是 iptables 入门篇,下个章节再为大家详细介绍iptables语法规则及企业实战案例。相信看完明天教程,多加练习后您不仅能看懂上面的配置实例,还可以利用iptables打造出铜墙铁壁级服务器~