ILD

ipv6地址获取
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2022-5-2 站点:Inside Linux Development

RA中的 prefix information和4个flag,DHCPv6中的IA_NA

IPv6 client获得的地址有2种SLAAC和IA_NA(DHCPv6)。SLAAC是通过RA中的前缀得到的,但是RA不能包含DNS Server地址,因此必须通过stateless dhcpv6拿到DNS地址。


RA总是需要监听的,因为DHCPv6不携带网关信息(DHCPv6 reply包的源地址不行?)。RA的源地址总是link local地址。host通过RA的源地址得到first nexthop地址。


On-link flag (L)

表明是不是有其它同前缀的地址在同一个子网上。这个意思是这样的,比如:router自己也用了这个前缀,

那么下挂设备看到这个标志,就知道这个前缀不是给自己独享的。相当于ipv4,路由器br-lan是192.168.0.1

下挂设备是192.168.0.x。碰到这个标志,host就添加一条link local路由。


Autonomous address-configuration flag (A)

这个标志表明这个前缀可以用于SLAAC配置host的ipv6地址,但是dns等信息,仍然需要通过DHCPv6拿取。


Other configuration (O)

这个标志表示router开启了DHCPv6,可以通过DHCPv6来获取其它配置(DNS)。


Managed address configuration (M)

这个标志表明router支持DHCPv6 statefull地址分配(IA_NA)。如果开启了M位,则O位也默认开启。


注意点:

SLAAC只支持64位前缀,因为小于64位,SLAAC不知道怎么填充64位之前的地址。所以小于64位的前缀开启A位是没有意义的。


前缀信息,既没有A位,也没有L位也是没有意义的。前者是配置SLAAC地址,后者是配置本地路由。两者都没有

下发了,也没用。



疑问点:前缀是怎么分配给下挂设备的?通过RA的prefix information吗?

仔细想想,RA是无状态的。如果是通过RA分配,那怎么知道哪个下挂设备是哪个前缀。因此前缀是通过DHCPv6的IA_PD。prefix delegation分配给下挂设备的。


DHCPv6中的IA_PD

dhcpv6请求中,可以请求前缀



参考:

https://blog.ipspace.net/2012/11/ipv6-router-advertisements-deep-dive.html

https://blog.ipspace.net/2012/11/ipv6-on-link-determination-what-is-it.html

https://blogs.infoblox.com/ipv6-coe/why-you-must-use-icmpv6-router-advertisements-ras/


 

Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.