wsl使用radvd发送路由通告

Posted by 婷 on February 14, 2024 本文总阅读量

简介

最近在学习ipv6相关内容,在wsl上使用radvd来实现发送路由通告(RA报文)分配地址前缀跟dns服务器的功能。

radvd分配地址前缀

安装

sudo apt-get install radvd

image-20240210153309022

编辑 /etc/radvd.conf 文件来定义路由器广告的参数

image-20240210153847821

我使用的是我的tap0网卡,发送的路由前缀是2001:db8:1234:5678::/64

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

image-20240210153831591

wsl打开ipv6转发功能(显得自己是个路由器?)

sudo sysctl -w net.ipv6.conf.all.forwarding=1

image-20240212163521363

启动 radvd 服务

sudo systemctl start radvd
sudo systemctl enable radvd

image-20240212154035554

运行radvd

sudo /etc/init.d/radvd  start

image-20240212163452493

wsl这边可以用radvdump命令查看发送的路由通告消息的具体内容

sudo apt install radvdump
sudo radvdump

安装

image-20240212155238943

运行

image-20240212163618548

image-20240212163600421

这时候可以看到qemu中的enp0s1网卡收到了此RA消息,并生成了此前缀的ipv6地址

image-20240214153406075

如果想停止运行radvd,输入下列命令

sudo /etc/init.d/radvd stop

image-20240214153633943

wsl这边的抓到的RA消息如下,这里就不多解释,等下篇文章再做解释,抓包文件已放此链接

image-20240214153813114

image-20240214135033609

radvd发送dns信息

编辑 /etc/radvd.conf 文件,增加红框所示的内容

RDNSS 是一种用于在 SLAAC 中提供域名解析服务的方式。它通过在 Router Advertisement 报文中包含 DNS 服务器地址,为主机提供域名解析服务,而不需要额外的 DHCPv6 服务器。在RFC6106中在5.1章节标题为Recursive DNS Server Option。

image-20240214161750863

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

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

};

运行

image-20240214161913166

查看qemu这边的域名服务器,可以看到增加了信的ipv6域名服务器

cat /etc/resolv.conf

image-20240214161939962

wsl这边进行抓包,抓包文件已放此链接

image-20240214162940882

image-20240214162536591

image-20240214162841501

radvd RA消息抑制

RA消息抑制其实就是radvd不再一直往链路上发送RA报文,只有收到RS报文才会回复RA报文,这样就不会浪费链路上的带宽。打开此功能只需要将配置文件中的AdvSendAdverton改为off即可

image-20240406132152925

image-20240406131834714

image-20240406132138506

radvd前缀存活时间

按照参考链接,可以修改AdvValidLifetimeAdvPreferredLifetime

image-20240406194204542

源码

源码下载链接

https://radvd.litech.org/

RA报文发送的实现在send.c中的really_send函数

image-20240214160645529

image-20240214160922350

参考链接