华为交换机 IPv6 ND 与 RA 配置及验证 - 夜莺博客

华为交换机 IPv6 ND 与 RA 配置及验证

华为 VRP 平台的 IPv6 配置难点不在命令本身,而在于默认值:接口的 IPv6 功能默认关闭,RA 报文默认禁止发送,ND 严格学习默认关闭。这三个默认值决定了"地址配好了但终端拿不到地址"这类问题几乎全部来自漏掉的那一条命令。本文按实际部署顺序给出 S5700/S6700 系列交换机上的 IPv6 ND/RA 配置、SLAAC 与 DHCPv6 标志位的选择方法,以及逐项验证命令。

接口使能 IPv6 与地址配置

二层物理口不能直接配 IPv6 地址,需要先创建 VLAN,再在 VLANIF 接口上配置。地址类型要区分全局单播、链路本地与 EUI-64 自动生成三种形式。

<SwitchA> system-view
[SwitchA] vlan 100
[SwitchA-vlan100] quit
[SwitchA] interface vlanif 100
[SwitchA-Vlanif100] ipv6 enable
[SwitchA-Vlanif100] ipv6 address 2001:db8:100::1 64
[SwitchA-Vlanif100] ipv6 address auto link-local
[SwitchA-Vlanif100] quit

ipv6 enable 是关键的一步:默认情况下接口的 IPv6 转发能力是关闭的,即使地址已经配置,报文也不会被处理。链路本地地址建议显式配置,便于日志与邻居表中的地址稳定,避免主控切换后地址变化。

ND 邻居发现配置

ND 取代了 IPv4 的 ARP,并额外提供邻居可达性检测、路由器发现和地址自动配置能力。静态 ND 表项在设备不发送 ND 报文或对端不支持时非常有用。

[SwitchA] interface vlanif 100
[SwitchA-Vlanif100] ipv6 neighbor 2001:db8:100::10 00e0-fc12-3456
[SwitchA-Vlanif100] ipv6 nd stale-timeout 1200
[SwitchA-Vlanif100] ipv6 nd ns retrans-timer 1000
[SwitchA-Vlanif100] ipv6 nd nud reachable-time 30000

三个时间参数的含义不同,不要混用:ns retrans-timer 控制邻居请求报文的重传间隔,nud reachable-time 控制邻居可达状态的保持时间,stale-timeout 则决定表项从 Stale 状态老化删除的时长。默认值分别为 1000ms、30000ms 和 1200s,多数园区网络下无需调整。

RA 路由器通告与 SLAAC

RA 默认被抑制,必须显式开启,否则终端无法通过 SLAAC 自动生成地址。RA 中携带的前缀、跳数限制、路由器生存时间与两个标志位(M、O)共同决定了终端的配置方式。

[SwitchA] interface vlanif 100
[SwitchA-Vlanif100] undo ipv6 nd ra halt
[SwitchA-Vlanif100] ipv6 nd ra prefix 2001:db8:100:: 64 2592000 604800
[SwitchA-Vlanif100] ipv6 nd ra hop-limit 64
[SwitchA-Vlanif100] ipv6 nd ra router-lifetime 1800
[SwitchA-Vlanif100] ipv6 nd autoconfig managed-address-flag
[SwitchA-Vlanif100] ipv6 nd autoconfig other-flag

ipv6 nd ra prefix 的两个时间值分别是有效生存时间与首选生存时间(单位秒)。默认情况下 RA 只携带通过 ipv6 address 配置的前缀,多网段场景下需要显式添加。undo ipv6 nd ra halt 是整套配置中最容易遗漏的一条。

M/O 标志位如何选择

标志位 含义 终端行为
M = 0, O = 0 无状态(SLAAC) 仅用 RA 前缀自动生成地址,并从 RA 获取 DNS
M = 1, O = 1 有状态(DHCPv6) 通过 DHCPv6 获取地址与其它配置
M = 0, O = 1 混合 地址用 SLAAC,DNS 等参数用 DHCPv6

园区网常用 M=0/O=1 的混合模式:终端地址自动生成无需 DHCPv6 服务器参与前缀分配,但 DNS 等参数集中下发,便于统一变更。纯 SLAAC 适用于扁平网络,纯 DHCPv6 则常见于需要严格地址审计的环境。

安全加固

[SwitchA-Vlanif100] ipv6 nd ra guard
[SwitchA] cpu-defend policy nd-policy
[SwitchA-cpu-defend-policy-nd-policy] auto-defend enable
[SwitchA-Vlanif100] ipv6 nd max-nd-entry limit 500

RA 报文可以伪造,一台接入层的假冒路由器就能让整个 VLAN 的终端通过它上网。在接入端口启用 RA guard 阻断非信任端口的 RA,并限制 ND 表项上限以防 RA 泛洪耗尽表资源。

验证命令

display ipv6 interface vlanif 100
display ipv6 interface brief
display ipv6 neighbors all
display ipv6 nd ra prefix
display ipv6 nd statistics interface vlanif 100
display ipv6 nd raguard configuration

接口信息中重点核对三项:MTU、是否处于 RA 发送状态、DAD 尝试次数与 ND 各定时器的实际值。邻居表为空通常说明终端没有收到 RA(RA 处于 halt 状态)或链路本地地址未生效。对于概念层面的 SLAAC 与 DHCPv6 对比,可参考 RA 中 M/O/A 标志位详解 与 IPv6 邻居发现与路由器通告配置。

原文链接:https://support.huawei.com/enterprise/en/doc/EDOC1000047419/dcb2e1d3/configuring-ipv6-neighbor-discovery