我有一个防火墙,在一个物理接口上有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; }
(也就是说,我们看到dmesg
的INVALID FORWARD DROP
日志)
什么可能导致这个?
INVALID
状态意味着数据包与已知的连接没有关联(也不会启动新的连接)。 我能想到的唯一原因是有些事情正在清除连接跟踪表,表溢出,或者条目超时太快。 您可以使用sudo conntrack -L | wc -l
检查连接跟踪表的大小 sudo conntrack -L | wc -l
和cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
的最大条目数。
在桥接模式下使用macvlan而不是IP别名,并将物理接口保持在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