iptables 概念、原理及相关操作介绍

iptables 概念、原理及相关操作介绍 origine : https://juejin.cn/post/6844904155153170440 基础概念 Linux 的包过滤功能,即 Linux 防火墙,它由 netfilter 和 iptables 两个组件组成。netfilter 位于内核空间,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。iptables 是一个命令行工具,位于用户空间,它使得插入、修改和删除信息包过滤表中的规则变得容易。 我们知道 iptables 是按照规则来办事的,规则其实就是网络管理员预定义的条件,规则一般的定义为 »如果数据包头符合这样的条件,就这样处理这个数据包 »。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如:TCP、UDP、ICMP)和服务类型(如:HTTP、FTP和 SMTP)等。当数据包与规则匹配时,iptables 就根据规则所定义的方法来处理这些数据包,如放行(ACCEPT)、拒绝(REJECT)和丢弃(DROP)等。配置防火墙的主要工作就是添加、修改和删除这些规则。 当客户端访问服务器的服务时,客户端发送报文到服务器的网卡,而 TCP/IP 协议栈是属于内核的一部分,所以客户端的信息会通过内核的 TCP 协议传输到用户空间中的服务中,而此时客户端报文的目标终点(destination)为服务所监听的套接字(IP:PORT),当服务需要响应客户端请求时,服务发出的响应报文的目标终点则为客户端,这个时候服务所监听的IP与端口反而变成了原点(source)。netfilter 才是真正的防火墙,它是内核的一部分,如果我们想要防火墙能够达到 »防火 »的目的,则需要在内核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是就出现了 INPUT 关卡和 OUTPUT 关卡。然而这些关卡在 iptables 中并不被称为 »关卡 »,而是被称为 »链 »。 其实我们上面描述的场景并不完善,因为客户端发来的报文访问的目标地址可能并不是本机,而是其他服务器,当本机的内核支持 IP_FORWARD 时,我们可以将报文转发给其他服务器。这个时候,我们就会提到 iptables 中的其他 »关卡 »,也就是其他 »链 »,它们就是 PREROUTING(“路由前”)、FORWARD(“转发”)、POSTROUTING(“路由后”)。 也就是说,当我们启用了防火墙功能时,报文需要经过如下关卡,也就是说,根据实际情况的不同,报文经过 »链 »可能不同。如果报文需要转发,那么报文则不会经过 INPUT 链发往用户空间,而是直接在内核空间中经过 FORWARD 链和 POSTROUTING 链转发出去的。 iptables 结构 iptables 由表(table)、链(chain)和规则(rule)组成,其中表包含链,链包含规则。 我们把具有相同功能的规则集合叫做“表”,对于不同功能的规则,我们可以放置在不同的表中进行管理。iptables 中具有 filter、nat、mangle、raw 等几种内建表: filter […]

iptables 概念、原理及相关操作介绍 Read More »