conntrack vs. ICMPv6 policy (RFC 4890)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



It has been alleged that:

 1. if you drop all ICMP(v4), things may break (https://en.wikipedia.org/wiki/PMTUD).
 2. if you drop all ICMPv6, things WILL break (RFC 4890).
 3. if you accept all ICMPv6, things WILL be pwned (RFC 4890).

On that basis, I came up with the rather verbose
@ICMPv6_RFC4890_policy and @ICMP_policy verdict maps here:
http://cyber.com.au/~twb/tmp/nftables-router.nft

It has also been alleged that

 4. if you --ctstate ESTABLISHED,RELATED -j ACCEPT, then
    the only explicit ICMP rule you need is for echo-request.
    Everything else is covered by the conntrack rule.

Is that true?

It was only asserted for ICMP[v4] (not ICMPv6), and
it was only asserted for a host (i.e. INPUT chain),
not a gateway/router (i.e. FORWARD chain).

To what extent is this still true for a dual-stack gateway/router?

The RFC 4890 Appendix B has a VERY old-style ruleset, because
the RFC itself is from that era.
It knows about --state ESTABLISHED,RELATED, but
doesn't seem to be using it very intelligently.

What is best practice for ICMPv6 rules in a stateful nftables ruleset?

Specifically, what parts of RFC 4890 are covered implicitly by
"ct state established,related accept" ?


I'd start doing my own testing, but
a) I don't have a good IPv6 test network yet; and
b) I'm scared my testing would miss something important.


I apologize in advance if this turns into a bikeshedding thread!




[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux