本文来源

ipv6地址获取有两种方式:

  • 路由器通告的前缀 + 自己编的后缀(无状态,stateless)
  • DHCP给一个/128的地址(有状态,stateful)

需要明确:无状态和有状态,仅仅指的是ipv6地址的获取方式。

  • 对于前者,目前实现的就是slaac
  • 对于后者,目前是DHCPv6

注意:slaac指的是路由器像下级终端(host)分配地址的方式,同理DHCPv6也是如此。
DHCPv6不仅可以分发ipv6地址,也可以包含dns等信息,所以,DHCPv6就搞了两种方式:\

  • 无状态 + DHCPv6:地址由slaac获取,但是dns由dhcpv6通告
  • 有状态 + DHCPv6:地址和dns都由dhcpv6通告

下面所讲的本质都是分发前缀,如果你的上级是DHCPv6分发ipv6地址,那就别挣扎了,只能终端用,不能接路由器(可以接交换机应该,猜的)

路由器本身还要获取前缀,这个前缀获取的方法在联通光猫里有3种(参考:知乎文章),static、PD、RA。static就是手动指定一个,这玩意儿感觉一般也不用,PD全称前缀代理(prefix delegation),指路由器作为pd客户端,向上级路由/设备请求一个前缀,这个前缀一般要比/64还要大,不然无法下发给其他设备,只能路由器有(当然,也不是完全不行,比如:这位哥就hack了一下)。RA是路由通告(route announcement),具体怎么获取前缀咱还不太清楚,可能是只能获取一个/64的前缀,给wan口配置一个ipv6地址?

需要说明的是,一般,运营商下发/56或者/60的前缀,路由器再自行从里面挑选一个/64的子网用来给lan中的设备分发ip地址。如果,你的lan中要接入另外一个路由器,那么,就需要:1. 上级路由开pd服务器,给下级分发/61, /62, /63的前缀 2. 或者,下级路由设置成交换机模式(有的叫穿透,passthrough)