FORWARD 规则中标记为 INVALID 的数据包

FORWARD 规则中标记为 INVALID 的数据包

我有一个防火墙,在 1 个物理接口上有 3 个 IP 别名。这 3 个接口之间的数据包会被丢弃(ICMP、HTTP 或其他任何接口)。我们追踪到这些数据包在 FORWARD 规则中被标记为 INVALID,并根据以下规则被丢弃:

chain FORWARD {
    policy DROP;

    # connection tracking
    mod state state INVALID LOG log-prefix 'INVALID FORWARD DROP: '; 
    mod state state INVALID DROP;
    mod state state (ESTABLISHED RELATED) ACCEPT;
}

(也就是说,我们看到了INVALID FORWARD DROP日志dmesg

这可能是什么原因造成的?

答案1

在桥接模式下使用 macvlan 而不是 IP 别名,并保持物理接口处于 promisc 模式。

例如

  1. eno1 是您想要使用的接口。
  2. 然后创建 macvlan1@eno1、macvlan2@eno1 和 macvlan3@eno1。
  3. 保持 eno1 处于混杂模式。

请参阅下面的顺序来创建 macvlan 接口。

# /sbin/ip link add link eno1 macvlan1 type macvlan mode bridge

# /sbin/ip addr add 192.168.1.1/24 dev macvlan1

# /sbin/ip link set macvlan1 address aa:bb:bb:dd:ee:ff up

请参阅以下命令为 eno2 打开混杂模式

# /sbin/ip link set eno1 promisc on

答案2

INVALID状态表示数据包未与已知连接关联(并且也未启动新连接)。我能想到的唯一原因是某些东西正在清除连接跟踪表、表溢出或条目超时太快。您可以使用 检查连接跟踪表的大小,sudo conntrack -L | wc -l并使用 检查最大条目数cat /proc/sys/net/netfilter/nf_conntrack_max

相关内容