ICMPv6 (Internet Control Message Protocol for IPv6)
它比 ICMP 管得多
IPv4 里 ICMP 只是个「报错和 ping」的辅助协议,拦掉了网络还能用。
★★★ 但 IPv6 把好几件必需的事都搬到了 ICMPv6 上:
· NDP(邻居发现,相当于 ARP);
· RA / SLAAC(找路由器、自动配地址);
· MLD(组播成员管理);
· PMTUD(因为路由器不分片,只能靠它通知源端)。
为什么 PMTUD 变成必需
★★★ IPv6 的路由器不分片。包太大时它只能丢弃,然后回一个 Packet Too Big(类型 2),告诉源端「这条路只能过 1400」。
★★★ 源端收到之后把自己的包改小,重发。
★★ 所以这个报文一旦被防火墙拦掉,症状是小包通、大包全丢,而且没有任何提示 —— 这叫 PMTUD 黑洞。
★ 常见误解
★★★ 「照 IPv4 的习惯把 ICMP 全拦掉」 —— 在 IPv6 里这等于断网:邻居发现不通 → 连同一网段的机器都找不到;RA 不通 → 主机拿不到地址。
★★ 「ICMPv6 只是 ICMP 换了个版本号」 —— 它多了 NDP、RA、MLD 这几大块,职责范围完全不同。
★★ 「拦掉能提升安全」 —— 该做的是按类型精细放行(放行 1/2/3/4 和 133~137),而不是一刀切。