使用 DHCPv6 和 radvd 时如何获取 /64 作为前缀长度?

使用 DHCPv6 和 radvd 时如何获取 /64 作为前缀长度?

在我们的网络课程中,我们被要求在虚拟机中设置 DHCPv6 服务器。我选择在运行 Ubuntu Desktop 16.04 和 Lubuntu 14.04 的虚拟机(在 VMware 上)上工作,作为测试客户端,并为特定 LAN 设置网络适配器。我首先配置 isc-dhcp-server 以用于 IPv6,如本文所述邮政我最终得到了一个正常运行的 dhcpv6,其配置文件(/etc/dhcp/dhcpd6.conf)包含以下几行:

ddns-update-style none;
default-lease-time 100;
max-lease-time 200;
subnet6 2001:4340:4532:0400::/64{
   range6  2001:4340:4532:0400::0004 2001:4340:4532:0400::0006;
}

我还对初始化脚本进行了必要的更改,设置了.conf、.pid、租约文件,并使用静态地址配置了接口 ens33,如下所示:通过 GUI 设置静态 IP

问题是客户端正在接收 /128 地址。

经过一番研究,我发现 DHCPv6 服务器不提供有关前缀长度的信息,并且必须使用路由器通告进行广播。因此,我在同一个虚拟机上安装了 radvd,启用了转发,禁用了 ufw,并使用此配置文件对其进行了配置:

interface ens33{
#this is important :
AdvSendAdvert on;
MaxRtrAdvInterval 6;
MinRtrAdvInterval 4;
#this is important to :
AdvManagedFlag on;
AdvOtherConfigFlag off;
prefix 2001:4340:4532:400::/64
{

  AdvOnLink on;
  AdvAutonomous off;
};

我在客户端得到了这个: 客户端上的 ifconfig 我也使用它作为此客户端上的网络设置: 在此处输入图片描述。当我启用 AdvAutonomous 或在“编辑有线连接”窗口中更改设置时,我确实通过 SLAAC 获得了一个具有正确前缀的 /64 地址,表明 RA 已收到并正在工作,但这不是我想要的。

我已经被这个问题困扰了一段时间了,请记住,我是网络和 Linux 的新手,所以请原谅我的知识缺乏。

相关内容