【IPv6地址自动配置的一些基础知识】
IPv6地址自动配置的三种基本形式:
1)Stateless无状态的。 这个过程是 “无状态的”,原因是它不依赖于外部分配机制(例如IPv6动态主机配置协议(DHCPv6))的状态或是否存在。 在没有外部或用户干预的情况下, 设备尝试配置其自身的IPv6地址 (可能是多个地址)。
2)Stateful有状态的。 有状态的过程仅依赖于外部地址分配机制(例如DHCPv6)。DHCPv6服务器以类似于IPv4 DHCP操作的方式,将128bit IPv6地址分配给设备。
3)Stateless+Stateful无状态和有状态组合方式。 这个过程涉及无状态地址自动配置与其他IP参数的有状态配置相结合一起使用的形式。 通常情况下, 这需要一台设备使用无状态方法自动配置一个IPv6地址,之后利用DHCPv6得到其他参数或选项,比如要在给定网络上联系哪台NTP服务器来查询时间分辨率。

  • 无状态使用无状态地址自动配置 (SLAAC, Stateless address Autoconfiguration)
  • 有状态使用IPv6动态主机配置协议 (DHCPv6, Dynamic Host Configuration Protocol for IPv6)
  • 无状态+有状态使用SLAAC自动配置IPv6地址,使用DHCPv6获取DNS等其他信息。

在IPv6中没有地址解析协议 (ARP, Address Resolution Protocol),取而代之的是IPv6邻居发现协议 (NDP, Neighbor Discovery Protocol),其中跟地址自动配置紧密相关的是路由通告 (RA, Route Advertisements) 。
根据RA报文中的A-Flag、M-Flag和O-Flag的不同组合,可以告知客户端使用哪种形式自动配置地址:

  • RA(A=1 M=0 O=0):SLAAC(仅使用RA消息,RA中包含DNS信息选项)
  • RA(A=1 M=0 O=1):SLAAC+Stateless DHCPv6(RA和DHCPv6中的DNS消息选项)
  • RA(A=0 M=1 O=0/1):Stateful DHCPv6(仅使用DHCPv6消息)
    当然也可以RA(A=1 M=1 O=1):SLAAC和DHCPv6都用来自动配置地址,OpenWrt默认是这样设置。

【RA报文中3个关键的Flag】
A-Flag:Autonomous address configuration flag 自动地址配置标志
表示是否配置无状态IPv6地址。在一个RA报文中,可存在多个prefix,比如2401::/64、2402::/64、2403::/64,每个prefix都可以独立配置A-Flag。

  • 1:表示主机应当在该prefix范围内SLAAC自动生成IPv6地址,并配置子网路由条目、网关。
  • 0:表示主机不应当在该prefix范围内SLAAC自动生成IPv6地址,但是可以配置子网路由条目、网关。

M-Flag:Managed address configuration flag 受管理地址配置标志
表示是否配置有状态IPv6地址。M-Flag是RA报文的全局参数,一个RA报文只有一个M-Flag。

  • 1:表示主机可以通过DHCPv6来获得IPv6地址和其他参数(如DNS、NTP)
  • 0:表示不通过DHCPv6来获得IPv6地址。

O-Flag:Other configuration flag 其他配置标志
表示是否通过DHCPv6获得除IPv6地址以外的其他参数(如DNS、NTP)。O-Flag也是RA报文中的全局参数,一个RA报文只有一个O-Flag。
注意:仅当M-Flag为0时,该参数才会被读取。

  • 1:当M-Flag为0,将通过DHCPv6获得其他参数
  • 0:当M-Flag为0,将不通过DHCPv6获得其他参数

引用自:https://www.right.com.cn/forum/thread-8193852-1-1.html