在KVM中测试IPv6网络:第1部分在本文中,我们了解了唯一本地地址(ULA)。在本文中,我们将学习如何为ULA自动配置IP地址。何时使用唯一本地地址唯一本地地址(ULA)使用fd00::/8地址块,类似于我们常用的IPv4私有地址:10.0.0.0/8、172.16.0.0/12和192.168。0.0/16。但它们不是直接替代品。IPv4的私有地址分类和网络地址转换(NAT)特性旨在缓解IPv4地址短缺的问题,这是一种延迟IPv4生命周期的智能解决方案,它应该被取代。IPv6也支持NAT,但我想不出使用它的理由。IPv6的地址比IPv4多得多;这是不同的,所以需要做不同的事情。那么,ULA存在的意义何在?特别是当我们已经有了链路本地地址(fe80::/10)时,我们还需要配置它们吗?它们之间有两个重要的区别。一是链路本地地址不可路由,因此,您不能跨子网使用它。第二,ULA由您管理;您自己选择它用于子网的地址范围,并且它们是可路由的。使用ULA的另一个好处是,如果您只是在LAN上“闲逛”,则无需为它们分配全球单播IPv6地址。当然,如果你的ISP已经为你分配了IPv6全球单播地址,你就不需要使用ULA了。您还可以在同一网络上混合使用全球单播地址和ULA,但是,我想不出这样做的充分理由,并确保您不使用网络地址转换(NAT)来公开访问ULA。在我看来,这是非常愚蠢的行为。ULA仅供专用网络使用,应该被阻止离开您的网络并且不允许进入Internet。这就像在边缘设备上阻止整个fd00::/8范围的IPv6地址一样简单。地址自动配置ULA不像链路本地地址那样自动配置,但是使用路由器通告守护程序radvd设置自动配置非常容易。在开始之前,运行ifconfig或ipaddrshow查看您现有的IP地址。对于生产用途,您应该在单独的路由器上安装radvd,但对于测试用途,您可以将它安装在网络上的任何LinuxPC上。在我的小型KVM测试实验室中,我使用apt-getinstallradvd命令将其安装在Ubuntu上。安装完成后,我不会启动它,因为它没有配置文件:$sudosystemctlstatusradvdradvd.service-LSB:RouterAdvertisingDaemonLoaded:loaded(/etc/init.d/radvd;bad;vendorpreset:启用)活动:活动(退出)自周一2017-12-1120:08:25PST;4分钟59秒前文档:man:systemd-sysv-generator(8)Dec1120:08:25ubunut1systemd[1]:启动LSB:路由器广告守护程序...Dec1120:08:25ubunut1radvd[3541]:启动radvd:Dec1120:08:25ubunut1radvd[3541]:*/etc/radvd.conf不存在或为空。Dec1120:08:25ubunut1radvd[3541]:*请参阅/usr/share/doc/radvd/README.DebianDec1120:08:25ubunut1radvd[3541]:*radvd*不会*启动。12月11日20:08:25ubunut1systemd[1]:启动LSB:路由器广告守护进程。所有这些消息有点令人困惑,实际上radvd没有运行,您可以使用经典命令ps|验证这一点grepradvd。因此,我们现在需要创建/etc/radvd.conf文件。复制此示例并将第一行的网络接口名称替换为您自己的:interfaceens7{AdvSendAdverton;MinRtrAdvInterval3;MaxRtrAdvInterval10;前缀fd7d:844d:3e17:f3ae::/64{AdvOnLink开启;Adv自治于;};};前缀定义了您的网络地址,它是地址的前64位。前两个字符必须是fd,其余前缀由你定义,最后64位留空,因为radvd会分配最后64位。前缀后的16位用于定义子网,其余地址定义为主机地址。您的子网必须始终为/64。RFC4193要求地址必须随机生成;请参阅在KVM中测试IPv6网络:第1部分以了解有关创建和管理ULA的更多信息。IPv6转发必须启用IPv6转发。运行以下命令启用,重启后生效:$sudosysctl-wnet.ipv6.conf.all.forwarding=1取消注释或在/etc/sysctl.conf文件中添加以下行以启用permanent:net.ipv6.conf.all.forwarding=1启动radvddaemon:$sudosystemctlstopradvd$sudosystemctlstartradvd这个例子在我的Ubuntu测试系统上遇到了一个奇怪的问题;radvd总是停止,我检查它的状态但是没有问题,你需要在进行任何更改后重新启动radvd。启动成功后没有任何输出,失败也是如此,所以需要运行sudosystemctlstatusradvd查看其运行状态。如果有错误,systemctl会告诉你。最常见的错误是/etc/radvd.conf中的语法错误。在Twitter上抱怨了上述问题后,我学到了一个很酷的技巧:当你运行journalctl-xe--no-pager来调试systemctl错误时,你的输出被换行,然后你可以看到错误信息。现在检查您的主机以查看它们自动分配的新地址:$ifconfigens7Linkencap:EthernetHWaddr52:54:00:57:71:50[...]inet6addr:fd7d:844d:3e17:f3ae:9808:98d5:bea9:14d9/64范围:全球[...]本文就这些了,下周学习如何管理ULA的DNS,这样您就可以使用正确的主机名而不是那些长长的IPv6地址。
