IPV6有状态无状态IP获取方式
Ipv6的IP根据获取方式的不同分为有状态和无状态的。DHCP下发的方式是有状态的,通过RA下发的是无状态(仅下发前缀,后64位由设备生成)。
而设备采用有状态还是无状态获取IP是由网关路由决定。路由通过RA报文下发给设备,携带的三个重要标识决定了设备获取IP的方式。
这三个标识为:
- M:Managed address configuration 1表示IP受DHCP管理,即IP是由DHCP下发的 0表示IP不由DHCP下发-
- O:Other configuration 1表示DNS等其他配置也由DHCP下发 0表示DNS等其他配置不由DHCP下发
- AAC: Autonomous address-configuration 1表示进行无状态自动IP配置,0表示不进行无状态自动IP配置
在报文中的具体位置如下抓包所示:
这三个标识在RADVD中的配置为:
IPV6配置的几种场景
1.AAC on ,M off O off
这种场景为无状态IP自动下发,DNS等信息由终端自行配置
2.AAC on ,M off O on
这种场景为无状态IP自动下发,且DNS等其他配置由DHCP下发
3.AAC off M on O on
这种场景为IP和DNS等其他配置均由DHCP服务器下发
4.AAC off M off O off
由终端自己去静态配置
5.AAC off M off O on
DHCP仅下发了DNS,IP需要用户自行配置,不太常见,一些终端设备不支持
6.AAC off M on O off
DHCP仅下发了IP,DNS由客户端配置决定
7.AAC on M on O off
既有无状态IP,又有有状态IP DNS等配置由客户端决定
8.AAC on M on O on
既有无状态IP,又有有状态IP DNS等配置也由DHCP下发决定
这里我们重点讨论7,8两种场景,IPV6协议支持多IP存在的可能。7.8两种情况在实际中可能不太常见。
它可以实现环境中没有DHCP服务器则使用无状态Ip进行网络请求,如果存在DHCP则使用有状态IP进行网络请求。当某设备所处环境中能得到DHCP下发的IP,此时设备既有有状态IP又有无状态IP。但是由于有状态IP必然是在无状态IP之后才得到的,因此实际使用的是DHCP下发的有状态IP进行请求。
这里我测试了ubuntu和windows,均是用了有状态Ip进行发送网络请求的。
但这两个IP均可以接收报文。即其他设备可以用两该两个ip访问本设备。但是推荐的public IP为有状态IP,即和请求IP是一致的。用户在系统网络应用中查看的IP也会只有一个public IP(即这里的有状态IP)。
IPV6无状态IP
无状态Ip是由路由通告下发的前缀,加上设备生成的唯一接口ID组成。
通常设备根据统一的IEEE EUI64算法生成。即将mac地址拆分成两半,中间插入ffef,并将得到的字符串第7位置为1(该位在mac地址中表示是否为全球唯一标识)。
当然也有一些系统是根据自己的算法得到全球唯一标识。这里据说centeros上的算法不是EUI64(应该是可以配置的),未亲测。
IPV6临时IP
由于无状态IP通常是根据mac地址算出来的,算法简单固定,微软提出该IP不安全。若用其进行网络请求,一个移动主机在网内移动的时候,虽然前缀可以变更,但后64位不变更,可以让
人跟踪移动主机移动路线或者访问站点的可能性.因此提出了一种带有适当有效期长度的临时IPv6地址来对外发出网络请求。
临时IP的目的:保证主机在对外通信时候的匿名性.
临时IP:该地址是有有效期限制的,几个小时或者几天,在期间,系统一直以这个地址为主机地址向外发出连接和请求。每一个时刻只有一个临时地址是有效的,在一个地址过期时会立刻
生成一个新的地址作为新的临时地址。已经过期的地址不会立即被删除,它会保存几个小时或者几天,此时过期的临时地址不能对外发起连接,但是可以接受外部发来的之前请求的信息。
注意:临时IP通常是跟无状态IP一起出现的。因此当你看到既有 EUI64算法生成的末尾和mac地址末尾一样的IP又有其他IP,且前缀与无状态IP相同,那么该IP很可能就是临时IP。
在windows下我们可以通过以下方式关闭或开启临时IP(修改后重启网卡):
netsh interface ipv6 set privacy state=disable
在linux系统,我们可以通过以下命令查看是否开启了临时IP:
sysctl -a | grep tempaddr
ubuntu可以通过修改/etc/sysctl.d下的10-ipv6-privacy.conf文件 2表示启用了临时IP,0表示关闭
总结
1.环境中多DHCP服务器共存时,DHCP发出的报文中包含了DHCP优先级,设备实际只会获取一个DHCP的IP。不会出现多有状态IP共存的情况。
2.看到的多IPv6主要是因为开启了临时IP,存在临时IP时,无论是否有有状态IP都是使用临时IP进行网络请求
3.关闭了临时IP,既有有状态IP又有无状态IP,优先使用有状态IP进行网络请求。