有一MSG360-10(AC+路由器一体的设备),系统是Version 7.1.064, ESS 5429P01,使用PPPoE拨号上网(IPv4正常)。
现在Dialer5接口上新增了IPv6配置,如下:
ipv6 address FE80::76EA:CBFF:FE52:AABB link-local
ipv6 address auto
ipv6 dhcp client pd 1 rapid-commit option-group 1
查看Dialer5接口的信息,如下:
Dialer5 current state: UP
Line protocol current state: UP
IPv6 is enabled, link-local address is FE80::76EA:CBFF:FE52:AABB [TENTATIVE]
No global unicast address configured
Joined group address(es): FF02::1 FF02::2 FF02::1:FF52:5FC1
MTU is 1492 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds
ND retransmit interval is 1000 milliseconds
Hosts use stateless autoconfig for addresses
IPv6 Packet statistics:
(以下各项统计值均为0,省略……)
尝试修改link-local地址为自动(ipv6 address auto link-local),并多次重启设备,仍然如此。
经与其他正常的设备比对配置,发现配置并没有什么问题。
查询资料得知,使用IPv6 Over PPPoE,需要通过IPv6CP进行协商。IPv6CP是用于在PPP链路上建立并配置IPv6的协议。IPv6CP只为双方协商“接口标识符”,并不直接参与IPv6地址的发放。
查看设备上与Dialer5接口绑定的Virtual-Access0接口的信息:
<h3c>dis interface Virtual-Access 0
Virtual-Access0
Current state: UP
Line protocol state: UP
Description: Virtual-Access0 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1492
...
LCP: opened, IPCP: opened, IPv6CP: stopped
Physical: PPPOE, baudrate: 1000000 kbps
Main interface: Dialer5
...
发现IPv6CP的状态为stopped。
于是笔者在本地架设了一个实验环境,使用一台只支持IPv4的路由器模拟PPPoE Server,使用另一台支持IPv6的路由器模拟PPPoE Client。拨号成功后,发现模拟Client设备上的IPv6CP状态同样为stopped,Dialer接口上的IPv6地址也同样显示[TENTATIVE]。在此环境下抓包分析,发现只有Client发送了IPv6CP接口标识符配置请求,Server没有发送任何请求或确认。
笔者又做了另一个实验,使用电脑连接另一个支持IPv6的运营商网络(不是故障设备所在的运营商网络)直接PPPoE拨号,抓包分析,Client和Server都向对方发送了IPv6CP接口标识符配置请求,并且都确认了对方的请求。(2请求+2确认,一共是4个IPv6CP报文)
至此,可以推断,此故障是由于运营商的BRAS配置不当,未配置IPv6CP支持导致的,在客户端设备上无法解决。
[2021年6月22日更新]
笔者再次遇到了相同的环境,这次在现场,且手边有笔记本,用笔记本拨号测试,同样无法获得IPv6地址。可以证明以上的推断没有问题。