IPv6学习总结(二)

IPv6单播地址分配方法

Posted by 婷 on March 2, 2024 本文总阅读量

简介

这篇文章主要讲IPv6单播地址的分配方法,其中涉及到一些协议的内容,后面会详细了解,这里有用到就简单提下

image-20240210164327122

静态

手工配置全局可聚合地址或者本地链路地址

ip -6 addr add 2001:da8:207::9402/64 dev eth0
ip -6 addr add fe80::f8a8:daff:fe91:8637/64 dev eth0

地址形式是以FE80::/10为前缀(注意不是网络前缀,网络前缀固定是64),11-64位为0 加 一个64位接口标识

动态

动态分配又分为无状态跟有状态,所谓的无状态其实指的是不用额外的去部署dhcp服务。无状态的两种方式都基于ICMPv6协议,有状态基于DHCPv6协议。(注意前缀都是固定位64位

image-20240302172540114

无状态自动配置(SLAAC)

主要为两种

  • 路由器主动发送RA报文,主机收到后用RA中的前缀
  • 主机主动发送RS请求报文,路由器收到后发送RA报文,主机使用收到的RA报文中的前缀

确保整个过程中做实验的主机下面两个配置项是打开的,具体意思可以见之前的总结文章

image-20240302210354666

第一种

  • 路由器用LinkLocal地址发起路由通告RA报文,报文中带着前缀信息
  • 主机收到RA报文后,将前缀以及接口ID结合,形成新地址
  • 主机用新地址发起DAD(地址重复检测),如果没有重复,就使用该新地址(如果有重复,什么情况后面再结合内核代码分析)

模拟实验则是部署了radvdwsl作为路由器,qemu作为主机

实验开始前,wsl网卡信息如下

image-20240215151334482

qemu网卡信息如下

image-20240215151350580

wsl上启动radvd,然后进行抓包,具体radvd的使用见前面的文章

启动后可以看到qemu获得了ipv6地址了

image-20240215151544207

抓包文件上传于此链接

image-20240302210724754

image-20240215220743077

第二种

  • 主机向链路发起路由请求RS报文,目的MACff02::2,是个组播地址,代表链路上的所有路由器
  • 路由器收到请求后会返回路由通告RA报文
  • 主机用新地址发起DAD(地址重复检测),如果没有重复,就使用该新地址

模拟实验则是rock3a发起RS请求,wsl这边的eth1网卡上设置radvd服务。如果rock3a要发出RS请求,需要注意不能开启forwarding选项,具体原因见此

rock3a这边可以用Linux下的rdisc6命令发出RS请求,下载工具包ndisc6

image-20240218220240254

-r可以指定rs发包次数,如果不指定,超时3次后,rdisc6就不进行发包,这里指定1000次,开始发RS请求,这时候我们来配置wsl这边

rdisc6 eth0 -r 1000

image-20240225204519380

wsl这边配置radvd服务,对/etc/radvd.conf文件进行编辑

interface eth1 {
    AdvSendAdvert on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    prefix 2001:db9:1234:5678::/64 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
    };

    RDNSS fd00:2020:2019::100 fd00:2020:2019::200 {
        AdvRDNSSLifetime 300;
    };

};

image-20240225203852273

wsl开启转发并且开启radvd服务

sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo /etc/init.d/radvd  start

image-20240225204506262

rock3a这边可以看到收到RA消息了

image-20240225204751061

ifconfig查看

image-20240225204556694

然后也可以看到获取到了dns相关信息

image-20240225204451205

rock3a这边进行抓包,文件链接

image-20240302213027570

从文件中可以看出rock3a发出了RS请求报文,收到wsl这边的RA报文后,对获取到的新地址进行NS检测

image-20240302213249375

有状态配置(DHCPv6)

参考之前我做过的实验,文章链接

参考链接

后话

其实这篇文章只是探讨了对地址的获取方式,其实对于网关,DNS服务器得到获取方式也跟前面大同小异,这也跟ICMPv6报文中的MbitObit相关,这个后续探讨NDP协议的时候再说明。