貔貅云原生

貔貅云原生

Iptables四表五链

208
0
0
2023-11-14
Iptables四表五链

什么是Iptables?

iptables实际上只是位于用户空间的一个面向系统管理员的 Linux 防火墙的管理工具而已,而真正实现防火墙功能的是 netfilter,它是 Linux 内核中实现包过滤的内核模块,iptables 对应在内核中的模块应该是 ip_tables,我们查看系统内核中ip_tables 的信息的时候可以看到 ip_tables.ko 这个模块是在 netfilter 这个目录下的。

什么是链?

数据流量经过网卡后到达内核里面,在内核中有关卡对数据进行检查,符合条件放行,不符合的进行组织,这个就被称之为链。

image-hlwa.png

五链

iptables 中有 5 条链路,分别为 PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

  • input 链:当收到访问防火墙本机地址的数据包时,将应用此链中的规则;
  • output 链:当防火墙本机向外发送数据包时,将应用此链中的规则;
  • forward 链:当收到需要通过防火中转发给其他地址的数据包时,将应用此链中的规则,注意如果需要实现forward转发需要开启Linux内核中的ip_forward功能;
  • prerouting 链:在对数据包做路由选择之前,将应用此链中的规则;
  • postrouting 链:在对数据包做路由选择之后,将应用此链中的规则;

什么是表?

每个链上都有一串对流量进行检测的规则,比如 PREROUTING 链上有拆解报文,做出修改的规则,INPUT表也有拆解报文,做出修改的规则,那么我们就用把这些相同的规则集中存储起来,这就是表。

四表

iptables 的四个表 iptable_filteriptable_mangleiptable_natiptable_raw,默认表是 filter(没有指定表的时候就是 filter 表)。

  • filter 表:用来对数据包进行过滤,具体的规则要求决定如何处理一个数据包。
  • nat 表:nat 全称:network address translation 网络地址转换,主要用来修改数据包的 IP 地址、端口号信息。
  • mangle 表:主要用来修改数据包的服务类型,生存周期,为数据包设置标记,实现流量整形、策略路由等。
  • raw 表:主要用来决定是否对数据包进行状态跟踪。

每个链对应的表

数据包进入网卡后,在每个链路上的检测规则是有顺序的,比如 RREROUTING 链顺序就是 raw->mangle->nat

image-izxh.png

每个链路中的表也是有许多规则的也是有顺序的,此处可以看出 forward 是从 1->2->3 顺序执行的。

image-zxkz.png

处理动作

此处列出一些常用的动作,之后的文章会对它们进行详细的示例与总结:

  • ACCEPT:允许数据包通过。
  • DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
  • REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
  • SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
  • MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
  • DNAT:目标地址转换。
  • REDIRECT:在本机做端口映射。
  • LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。
结尾

其中部分内容摘抄朱双印博客