NDP 是什么
IPv6 用邻居发现替代了 IPv4 的地址解析协议:地址解析、路由器发现、前缀通告与重定向都由 ICMPv6 的类型 133 到 137 完成(RFC 4861)。它同时承担地址自动配置所需的信息收集工作(RFC 4862)。
报文为什么变了
IPv4 里广播可以覆盖整个网段,IPv6 取消了广播,改用组播:请求发到特定组播地址,只有相关节点需要处理。因此网络里看不到广播风暴,但防护重点随之转移——通告类报文必须被约束。
基本信息
| 报文类型 | 路由器请求 133、路由器通告 134、邻居请求 135、邻居通告 136、重定向 137 |
|---|---|
| 承载协议 | ICMPv6 |
| 相关机制 | 地址自动配置依赖路由器通告提供前缀 |
| 规范 | RFC 4861 定义邻居发现,RFC 4862 定义自动配置 |
典型使用场景
- 排查 IPv6 地址自动获取失败
- 排查「地址拿到了但通信异常」这类邻居层问题
- 设计访问控制:约束通告类报文的来源
- 理解为什么 IPv6 网络里没有广播风暴
查看邻居缓存
查看邻居缓存
ip -6 neigh show # 查看邻居缓存条目
ping6 -c 2 2001:db8::1 && ip -6 neigh show # 通信后能看到对应条目
ip -6 route show | head # 看默认路由是否由通告学习而来消息类型
| 消息 | 类型号 | 作用 |
|---|---|---|
| 路由器请求 | 133 | 主机主动询问路由器 |
| 路由器通告 | 134 | 路由器通告前缀与默认路由 |
| 邻居请求 | 135 | 地址解析,作用类似地址解析请求 |
| 邻居通告 | 136 | 应答,作用类似地址解析应答 |
| 重定向 | 137 | 告知更优的下一跳 |
邻居缓存里出现不完整或失败状态,通常说明请求发出但没有收到通告:可能是链路问题,也可能是对端做了防护。
邻居发现同样可以被伪造的通告欺骗:生产网络应启用相应的防护特性,并限制通告类报文的来源,别以为取消广播就自动更安全。
在虚拟化与容器环境里,邻居缓存的规模会明显大于传统物理网段:条目过多会占用资源,需要设置合理的上限。