在 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,但是防火墙中没有配置接受它们的规则,我不明白为什么