ipv6的地址自动配置有两种方式,分别是SLAAC与DHCPv6,其中DHCPv6还分为有状态和无状态,如图:

less标记 silac标记_网络协议

 今天我们要学的就是ICMPv6 RA(Router Advertisement)包里面的标识位,标识位可以表示你自动获得地址的方式,发过来的RA默认的标识位是A=1 M=0 O=0  代表SLAAC方式(SLAAC就是通过RA包来生成地址),我们可以通过去改标识位来改变ipv6的地址自动分配方式,RA字段如下图:

less标记 silac标记_less标记_02

A flag标识位(Address Autoconfiguration) 在RA的前缀字段 其实代表有无状态  A=1,使用RA里面的前缀字段生成GUA(全球单播地址)地址 A=0 则不通过RA前缀生成,说白了就是:你的GUA是怎么来的,是通过DHCP 还是SLAAC?

M flag标识位(Managed Address Configuration)在flag字段里  代表使不使用DHCPv6  M=1,使用DHCP分配GUA地址, M=0 不使用DHCP分配地址,事实上 当你配完M=1 就不用管O了 因为M的意思就是无论是地址还是其他信息 都是通过DHCP去分配

O flag标识位 (Other Configuration)和M在同一字段,代表其他的信息,O=1 使用DHCP获取其他信息(如:DNS地址)这里可以理解为DNS信息  O=0 从RA获取其他信息,其实RA里是没有DNS信息的,所以SLAAC的获取地址方式是没有DNS信息的(因此图表里SLAAC方式的DNS是无)

注意: 网关不做讨论,网关都是通过RA的源地址生成的(因为网关地址是本地链路地址)

所以就看他俩怎么生成的(地址(GUA)和其他信息(DNS))

这样的话是不是就好理解了呢?

拿SLACC为例  A=1 GUA就通过RA来实现,

                        M=0 GUA不要使用DHCPv6实现

                        O=0  其他信息通过RA来获取,但是呢  RA里是没有这个东西的,如果是1 就要去                                   通过DHCP找DNS(其他信息)

题外话:dhcp服务器强烈推荐用windows,功能及其强大 人家是专门做这服务的

相关命令:(华为命令)

将A置位为0  

[Huawei-GigabitEthernet0/0/0]ipv6 nd ra prefix 2:: 64 50000 30000 no-autoconfig    

就是说看哪个前缀不使用SLAAC,后面跟两个时间就行了  50000为Deprecated时间  30000为Preferred 时间

A位代表了前缀  配置这条命令的意思就是 你这2::  64前缀别用RA来生成  你去找DHCPv6

注意: 如果A和M都为0 那么就生成不了地址 只能手动配置

将M置位为1

[Huawei-GigabitEthernet0/0/0]ipv6 nd autoconfig managed-address-flag

将O置位设置为1

[Huawei-GigabitEthernet0/0/0]ipv6 nd autoconfig other-fiag

相关流程图:

SLAAC:

less标记 silac标记_网络_03

SLAAC with Stateless DHCPv6:

less标记 silac标记_网络协议_04

 

Stateless DHCPv6:

less标记 silac标记_网络协议_05