Linux 内核 IP Forward 已激活,firewalld 被绕过了吗?

Linux 内核 IP Forward 已激活,firewalld 被绕过了吗?

在 Linux Centos7 上,我有一些流量通过静态路由从一个接口路由到另一个接口。

我确实注意到,在激活防火墙的情况下,两个接口都添加到一个区域中,并且该区域中不允许任何内容,所有流量仍可不受任何限制地路由。

我尝试配置 ip_forward=0 :然后流量不再被路由。然后我在firewalld direct.xml中添加了FORWARD规则:流量被路由和过滤。

我的问题是:

  • ip_forward 内核设置是否会“绕过”防火墙?
  • 为什么在各种论坛上都解释说,如果使用 iptable FORWARD 在禁用此设置的情况下有效,则 ip_forward 是将流量从一个接口路由到另一个接口的必需操作?

我发现关于防火墙和内核 ip_forward 之间关系的解释很少,我想了解我在这里遗漏了什么

编辑:在防火墙区域上启用了伪装


EDIT2:我做了其他测试,看起来这不是关于 ip_filter 设置,而是伪装。我被“firewall-cmd --reload”强制 ip_forward 为 1 的事实欺骗了。

以下是重现我的情况的方法:

全新 Centos7 操作系统。配置两个接口 eth1 和 eth2,IP 地址分别为 X 和 Y

-----------------> @X CENTOS @Y -----------------> @Z  -------
    dst_IP = A                      dst_IP = A
    src_IP = B                      dst_IP = B

编辑/etc/firewalld/zones/TEST.xml,添加两个接口,激活伪装。

添加以下路线:

Destination     Gateway     GenMask
A               Z           255.255.255.255

然后激活 ip forward 并停用 rp_filter :

sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.eth1.rp_filter=2
sysctl net.ipv4.conf.eth2.rp_filter=2

在这个设置中,paquet 被传输到 @Z,但是防火墙中没有配置接受它们的规则,我不明白为什么

相关内容