Octet

Can I block ICMPv6 at the firewall like many people do with ICMP in IPv4?

Show the answer

Say this first

No. IPv6 depends on ICMPv6. Neighbor Discovery, router discovery and MLD all run over it, so dropping it on an interface breaks the link. Packet Too Big is required for Path MTU Discovery because routers do not fragment, so dropping it in transit creates black holes. Follow RFC 4890: always allow the error messages (types 1, 2, 3 and 4), allow NDP and MLD on the local link, and decide on echo by policy, usually allowed and rate-limited.

Go deeper

What to allow (RFC 4890, simplified)

TypeMessageThrough the firewallTo the firewall itself
1Destination Unreachableallowallow
2Packet Too Bigallow, alwaysallow
3Time Exceededallow (traceroute, loops)allow
4Parameter Problemallowallow
128, 129Echo request and replypolicy, usually allow and rate-limitallow, rate-limited
133 to 137RS, RA, NS, NA, Redirectnever crosses a routerallow on the link
130 to 132, 143MLDnever crosses a routerallow on the link

The Cisco ACL trap

Every IPv6 ACL on IOS ends with three implicit lines:

Output
permit icmp any any nd-na
permit icmp any any nd-ns
deny ipv6 any any

If you write your own deny ipv6 any any log at the end, it matches before the implicit permits and kills neighbor discovery on that interface. Add the NS and NA permits above your deny.

An edge ACL that respects ICMPv6

Cisco IOS
ipv6 access-list EDGE-IN
 permit icmp any any destination-unreachable
 permit icmp any any packet-too-big
 permit icmp any any time-exceeded
 permit icmp any any parameter-problem
 permit icmp any any echo-request
 permit icmp any any echo-reply
 permit icmp any any nd-ns
 permit icmp any any nd-na
 permit tcp any 2001:db8:acad:100::/64 eq 443
 deny ipv6 any any log

Traps

  • Copying an IPv4 "deny icmp any any" habit to IPv6.
  • Ending a Cisco IPv6 ACL with an explicit deny and no NS and NA permits above it.
How did you do?Book 4.2 IP Version 6Book 8.5 Example Systems