根据RFC,IPv6有两种地址管理方式,分别是有状态Stateful无状态Stateless。如其名所示,Stateful模式下主机IPv6地址由路由器分配,而Stateless模式下主机IPv6地址根据协议自身计算得出。大概可以猜到的是,Stateful模式下管理较为方便(如DDNS等),而Stateless模式则是减轻了路由器的工作负担(毕竟IPv6地址池那么大一个,记录所有地址还是很消耗资源的)。

OpenWrt默认使用了Stateless的方式管理IPv6下的内网NAT,然而我想知道内网设备中有多少获取到了IPv6地址= = 于是试图网上冲浪找出配置方法。

左摸索右摸索,也不知道是不是关键词用得不对,老半天才在一篇国人折腾IPv6的文章中摸到了个边。注意到文中配置有个未经解释的ra_management参数,搜了一下发现OpenWrt官网上给出了极为惨淡的解释:

ra_management    integer    1        RA management mode
                                     0: no M-Flag but A-Flag
                                     1: both M and A 
                                     2: M but not A

这里提到了AM两个标志位,而这两个标志位正是DHCPv6中用于控制StatefulStateless模式的标志。

Flag Type Name Message Manual SLAAC DHCPv6
A Autonomous Prefix Information No Yes Maybe
M Managed ICMPv6 134 RA No No Yes
O Other ICMPv6 134 RA No Maybe Yes
L On-Link Prefix Information No Yes Yes

也就是说,理论上,将ra_management设置为2的话就可以强制启用Stateful模式管理IPv6地址。有待试验。

参考: https://blogs.infoblox.com/ipv6-coe/the-ipv6-prefix-information-option-or-fun-with-the-l-flag/

标签: none

添加新评论