背景

整整花了我三天时间来尝试各种各样的办法,但还是以失败告终。

问题描述

症状就是尝试各种设置后,路由器WAN口仍然只有local的ipv6地址。

原因分析

通过tcpdump观察ubuntu建立ipv6,获取ipv6的global地址的数据包可以确定,南大ipv6地址的分配采用的是DHCP方式;安装Ubuntu的树莓派不设置ipv6为dhcp方式则只能获取到local的ipv6地址,设置inet6为dhcp后能够获取到global地址也可以佐证这一点。

不过openwrt有一个奇怪的现象:学校是用的ipv4、ipv6双栈,理论上路由器应该是同一块网卡同时获取ipv4和ipv6地址,但如果这么设置的话,即使ipv6中设置的为DHCPv6,也仍然会获得IPv4地址;这里不太明白。

后来尝试设置静态地址,但windows和ubuntu都显示的网关是一个ipv6本地地址,而traceroute显示的第一跳地址是一个global的ipv6地址,尝试设置这两个网关都不能成功ping通ipv6.google.com。

也尝试直接修改代码将ipv6部分变成交换机,即ipv6穿透,但还是没成功。

解决方法

最终放弃openwrt,回到netgear路由器官方固件,设置ipv6穿透,所有设备都能够正常访问ipv6网站。