在“FORWARD”规则中,数据包标记为“无效”

我有一个防火墙,在一个物理接口上有3个IP别名。 数据包在这三个接口(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; } 

(也就是说,我们看到dmesgINVALID FORWARD DROP日志)

什么可能导致这个?

INVALID状态意味着数据包与已知的连接没有关联(也不会启动新的连接)。 我能想到的唯一原因是有些事情正在清除连接跟踪表,表溢出,或者条目超时太快。 您可以使用sudo conntrack -L | wc -l检查连接跟踪表的大小 sudo conntrack -L | wc -lcat /proc/sys/net/ipv4/netfilter/ip_conntrack_max的最大条目数。

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

例如

  1. eno1是你想要使用的接口。
  2. 然后创buildmacvlan1 @ eno1,macvlan2 @ eno1和macvlan3 @ eno1。
  3. 将eno1保持在promisc模式。

请参考下面的序列创build一个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制作promisc模式

 # /sbin/ip link set eno1 promisc on