iptables是Linux系统中一个非常强大的防火墙工具,它采用数据包过滤机制工作,对请求的数据包的包头进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。防火墙的工作方式是一层一层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。如果匹配上规则,即明确表明阻止还是通过,此时数据包就不再向下匹配新规则了。如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,则按照默认策略进行处理。防火墙的默认规则是对应的链的所有的规则执行完成后才会执行的。
iptables有四表五链,这四表分别是filter表、nat表、mangle表和raw表,五链则是INPUT链、OUTPUT链、FORWARD链、PREROUTING链和POSTOUTING链。INPUT链处理输入数据包,OUTPUT链处理输出数据包,FORWARD链处理转发数据包,PREROUTING链用于目标地址转换(DNAT),POSTOUTING链用于源地址转换(SNAT)。
在实际操作中,我们可以使用iptables命令来查看、添加、删除和修改iptables规则。例如,我们可以使用iptables -L命令来查看iptables规则,使用iptables -F命令来清除所有规则,使用iptables -X命令来删除用户自定义的链,使用iptables -Z命令来清空链的计数器。我们还可以使用iptables -A命令来添加规则,使用iptables -I命令来插入规则,使用iptables -D命令来删除链上的规则。
在配置iptables时,我们还可以设置默认规则、白名单、开启相应的服务端口、禁止某个IP访问、匹配端口范围等。例如,我们可以使用iptables -P命令来设置默认规则,使用iptables -A命令来添加白名单,使用iptables -A命令来开启相应的服务端口,使用iptables -I命令来禁止某个IP访问,使用iptables -A命令来匹配端口范围。