程序员

iptables学习笔记

2018-03-27  本文已影响0人  无知者云

iptables需要处理两个维度的信息:

  1. 在什么时候应用配置,这便是iptables中的链(chain),对应于netfilter的hook
  2. 应用什么配置,即iptables中的表(table)

iptables其实是运行与用户空间的,其本身并不是Linux内核的一部分,真正完成防火墙功能是Linux内核的netfilter模块,iptables通过netfilter所提供的钩子(hook)通知netfilter需要完成哪些功能。

iptables在默认情况下包含5个链,分别对应netfilter的5个hook:

Chain 对应的hook 作用时机
PREROUTING NF_IP_PRE_ROUTING 数据包进入内核网络模块之后,获得路由之前
INPUT NF_IP_LOCAL_IN 数据包被决定路由到本机之后
FORWARD NF_IP_FORWARD 数据包被决定路由到其他主机之后
OUTPUT NF_IP_LOCAL_OUT 离开本机的数据包进入内核网络模块之后
POSTROUTING NF_IP_POST_ROUTING 对于离开本机或者FORWARD的数据包,当数据包被发送到网络之后

链执行顺序

iptables中的表所表示的是防火墙中某一类配置,有些配置可能对所有的chain都生效(比如mangle表),而有些配置能对某些chain生效(比如filter表)。

iptables中包含了以下5张表:

至于某个表中包含了哪些chain,请参考:


表与链对应

连接跟踪

数据包通常是属于某个连接(connection)的,当数据包经过iptables时,从iptables的连接跟踪机制可以得知当前数据包所对应的连接的状态,主要有以下状态:

iptables配置例子参考这里

上一篇 下一篇

猜你喜欢

热点阅读