Netfilter:什么情况下会触发NF_IP_FORWARD?

Netfilter:什么情况下会触发NF_IP_FORWARD?

网络过滤器挂钩:NF_IP_FORWARD

程序可以注册五个 netfilter 钩子。当数据包通过堆栈时,它们将触发已注册这些钩子的内核模块。然后,数据包将被丢弃、拒绝或操纵。

NF_IP_FORWARD如果数据包要转发到另一台主机,则在路由传入数据包后会触发挂钩。

在什么情况下,NF_IP_FORWARD钩子会被触发?您能提供一些现实世界中的使用示例吗?

在此输入图像描述

参考

  1. DigitOcean:深入探讨 Iptables 和 Netfilter 架构
  2. iptables 处理流程图(经常更新)
  3. iptables表和链是如何遍历的

答案1

本文提供了一个示例:路由器。


FORWARD 是一种不同类型的链。它获取源自计算机外部的所有流量,并发送到网络中除我们设置 iptables 之外的其他计算机。这听起来不像路由器会做的事情吗?

如果源不是我们服务器的 IP 地址,目的地也不是我们服务器的 IP 地址,那么该数据包最初是如何到达我们的服务器的?我可以想到两种允许这样做的场景:

  • 网络接口处于混杂模式。网络集线器就是这种情况(不要使用它们)。处于混杂模式的网卡(更多内容将在另一篇文章中介绍)接受在 LAN 中传输的所有以太网帧(一种嗅探 LAN 流量的方法)。当混杂模式被禁用(NIC 的默认状态)时,网卡仅接受目的地 MAC 与该卡的 MAC 地址匹配的以太网帧。因此,在以太网协议级别,一个帧被寻址到我们的服务器,但该帧中的 IP 协议数据包具有不同的目标地址集。

  • 以太网帧的destination_mac与路由器的destination_mac相匹配。网关就是这种情况。

一旦数据包到达路由器,ARP 和路由表就需要找到该数据包的下一跳,而 conntrack 模块则需要知道如何将数据包返回到原始请求者。因此,接收到的具有与我们的服务器无关的 src_address 和 dst_address 的 IP 数据包进入 FORWARD 链。

要将服务器变成路由器,首先我们必须在内核级别启用路由。这很简单,甚至不需要重新启动:编辑文件 /etc/sysctl.conf 并添加以下行:

net.ipv4.ip_forward = 1

然后运行命令 sysctl -p 重新加载内核设置。现在应该启用路由本身。出于安全原因,它默认被禁用,因为很容易错误配置(或使用默认设置)防火墙将计算机变成路由器。如果网络中的所有计算机都是路由器,那么传播匿名攻击将非常容易。

现在我们已经启用了路由,我们可以继续进行设置。

1. iptables -I FORWARD -s 192.168.0.0/24 -d 10.10.7.0/24 -j ACCEPT
2. iptables -I FORWARD -s 10.10.7.0/24 -d 192.168.0.0/24 -m conntract --ctstate ESTABLISHED -j ACCEPT

就是这样。这两条规则连接两个网络:192.168.0.0/24 和 10.10.7.0/24。通过 192.168.0.1 作为网关传递到 10.10.7.0/24 的任何查询都将被路由到正确的目的地,并返回响应。但是,此规则限制 10.10.7.0/24 网络访问 192.168.0.0/24——这是 ctstate 的工作。 Netfilter 中的所有连接都会被跟踪 (conntrack)。当 Netfilter 被指示只匹配--ctstateESTABLISHED 连接时,它将忽略 NEW 连接请求。这种规则只会作用于已经建立的连接。

换句话来说,Netfilter 只允许来自 192.xxx 网络的新连接,并且只有已经建立的连接才能将数据从 10.10.xx 传输到 192.168.xx 如果您想让两个网络互相看到,请删除-m conntrack --ctstate ESTABLISHED该规则的一部分。

然而请记住,这种路由需要更新两个网络上的路由表。这意味着 10.10.7.0/24 上的设备必须将显式路由添加到路由表中,指定使用我们的设备查询 192.168.0.0/24 网络。反之亦然:192.168.0.0/24 必须在路由表中有一条路由,指定可通过 192.168.0.1 访问 10.10.7.0/24 网络。否则,接收网络上的服务器将不知道如何返回响应:收到的 IP 数据包的 SRC_ADDR 标头包含另一个网络上的 IP 地址,并且服务器不知道如何到达它

如果您不能或不想在某个网络上自行编辑路由表,您可以尝试一种 NAT'ing - SNAT'ing。

相关内容