netfilter: conntrack: fix ct-state for ICMPv6 Multicast Router Discovery
authorLinus Lüssing <linus.luessing@c0d3.blue>
Wed, 6 Mar 2024 14:18:04 +0000 (15:18 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 6 May 2024 09:13:56 +0000 (11:13 +0200)
commit4a3540a8bf3c13dc3955f0c0895332b9c653be3f
treee581dd1a016ad4fdde3f155eb7549c2d61dc2d28
parent6e20eef413d5aa8ea0b19165e40efc8d47c681db
netfilter: conntrack: fix ct-state for ICMPv6 Multicast Router Discovery

So far Multicast Router Advertisements and Multicast Router
Solicitations from the Multicast Router Discovery protocol (RFC4286)
would be marked as INVALID for IPv6, even if they are in fact intact
and adhering to RFC4286.

This broke MRA reception and by that multicast reception on
IPv6 multicast routers in a Proxmox managed setup, where Proxmox
would install a rule like "-m conntrack --ctstate INVALID -j DROP"
at the top of the FORWARD chain with br-nf-call-ip6tables enabled
by default.

Similar to as it's done for MLDv1, MLDv2 and IPv6 Neighbor Discovery
already, fix this issue by excluding MRD from connection tracking
handling as MRD always uses predefined multicast destinations
for its messages, too. This changes the ct-state for ICMPv6 MRD messages
from INVALID to UNTRACKED.

This issue was found and fixed with the help of the mrdisc tool
(https://github.com/troglobit/mrdisc).

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/uapi/linux/icmpv6.h
net/netfilter/nf_conntrack_proto_icmpv6.c