Linux 防火墙数据包处理

Linux 防火墙数据包处理

例如,当客户端通过 HTTP 与服务器通信时,会有许多数据包在两个方向上传输。这意味着从客户端到服务器,反之亦然。

我想问一下安装在客户端机器上的 Linux 防火墙或 iptables 具体如何对这些数据包应用规则。

我可能的解释是:

  1. 只有对于从客户端发送到服务器的第一个数据包,才会根据 iptables 规则确定如何处理该数据包。对于来自服务器的响应数据包,将应用与初始数据包相同的规则,例如REJECTACCEPT
  2. 每个数据包,无论是初始打包还是响应,都由 iptables 单独处理。在这种情况下,iptables 并不关心数据包是否是与某个服务器的连接的一部分,或者它只是一个单独的数据包。

答案1

这在很大程度上取决于您的配置。默认情况下,Iptables 不会执行任何操作。根据我的经验,我发现以下两种做法最为常见:

  • 允许规则接受所有具有特定目标端口的传入数据包,但没有传出规则。最终接受来自特定源网络且具有特定目标端口的所有数据包。可以想象,在这种情况下,后续数据包不会出现任何问题。

  • 允许规则仅接受具有特定目标端口的新连接的第一个数据包。然后还有另一条规则,它使用来自 iptables 的连接跟踪机制,匹配与已建立的连接相关的数据包。当然,在许多情况下,这将是比前一个更好的解决方案。

相关内容