复旦大学宿舍IPv6网络指南

大学的校园网络理应是支持 IPv6 的,但很长一段时间中,似乎只有教学区域的校园网络支持 IPv6 ,而宿舍网络无法获得 IPv6 地址。

近日,笔者发现宿舍里的路由器获取到了 IPv6 地址,但子网中的网络设备仍然无法连通 IPv6 网络。这是因为,上级校园网络并没有给我们分发 IPv6 PD 前缀,我们的路由器只有一个地址,无法向下级设备通告地址。

如何判断你的网络是否支持IPv6?

  • 如果路由器自己无法获得 IPv6 地址,那么说明你的网络或路由器不支持 IPv6 。
  • 如果路由器获得了 IPv6 网段(一般是 /64 或 /56),那么一般情况下子网中的设备都会自动获得 IPv6 地址。
  • 如果路由器只获得了单个 IPv6 地址,那么我们仍可以通过 NDP 中继的手段使子网中的设备获得 IPv6 地址,如下文所述。

IPv6 地址是如何自动配置的?

邻居发现协议 NDP(Neighbor Discovery Protocol)是 IPv6 协议体系中一个重要的基础协议。邻居发现协议替代了 IPv4 的 ARP和 ICMP,它定义了使用ICMPv6 报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。

在IPv6中,IPv6地址可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信息,然后主机自己生成地址的接口标识部分。路由器发现功能是IPv6地址自动配置功能的基础,主要通过以下两种报文实现:

  • 路由器通告RA(Router Advertisement)报文:每台设备为了让二层网络上的主机和设备知道自己的存在,定时都会组播发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。RA报文的Type字段值为134。
  • 路由器请求RS(Router Solicitation)报文:很多情况下主机接入网络后希望尽快获取网络前缀进行通信,此时主机可以立刻发送RS报文,网络上的设备将回应RA报文。RS报文的Tpye字段值为133。

IPv6 除保留了 DHCP 作为有状态自动配置外,还增加了无状态自动配置。无状态自动配置即自动生成链路本地地址,主机根据 RA 报文的前缀信息,自动配置全球单播地址等,并获得其他相关信息。IPv6 主机无状态自动配置过程如下:

  1. 根据接口标识产生链路本地地址。
  2. 发出邻居请求,进行重复地址检测。
  3. 如地址冲突,则停止自动配置,需要手工配置。
  4. 如不冲突,链路本地地址生效,节点具备本地链路通信能力。
  5. 主机会发送RS报文(或接收到设备定期发送的RA报文)。
  6. 根据RA报文中的前缀信息和接口标识得到IPv6地址。

配置路由器中继 NDP 协议使子网支持 IPv6

为了使得子网中的设备也能正常上网,我们可以配置路由器中继 NDP 协议,使得终端设备可以收到校园网上级路由器分发的 RA 报文,自动获取 IPv6 地址。

为此,我们需要一个支持此功能的路由器,例如 Openwrt ,需要将 wan 和 lan 接口都配置为中继模式。