从 SixXS 向本地 KVM 客户机共享 IPv6

从 SixXS 向本地 KVM 客户机共享 IPv6

我有几个来自 SixXS 的隧道和一个子网。一个隧道用于我的笔记本电脑,另一个用于我的台式机。在我的台式机上,我运行 kvm,并有几个我非常希望拥有 IPv6 访问权限的客户端。

做到这一点最简单的方法是什么?

答案1

最简单的方法是设置radvd在本地接口上公布您的子网。支持 IPv6 的客户端应该会自动配置。

确保你设置了防火墙,否则你的设备将暴露在互联网上。我的文章实现 IPv6 6to4应该有帮助。

如果启用 IPv6 隐私,它将定期添加新地址,并在安全时删除旧地址,那么无法从 Internet 访问的客户端将会更安全一些。

对于本地服务,IPv6 可以与 Bonjor、avahi 等零配置服务配合良好。

答案2

  1. 设置网桥. (虽然这些文档没有提到,但如果您正在使用它,您可能还必须禁用 NetworkManager。)

  2. 将您的 KVM 虚拟机更改为使用桥接网络。您可以从命令行或 GUI 执行此操作,但必须关闭虚拟机然后启动才能使更改生效。

  3. 在您从 SixXS 收到的子网内为您的网桥 br0 分配一个静态 IPv6 地址。将以下内容添加到 /etc/network/interfaces(自定义后):

    interface br0 inet6 static
         address 2001:db8:deca:fbad::1
         netmask 64
    
  4. 将你的 Ubuntu 机器配置为 IPv6 路由器

  5. 重启。

答案3

我最终在虚拟网络中设置了一个虚拟机作为路由器。我要求 SixXS 为此创建一个新隧道。

这确实相当简单。

在用作路由器的虚拟机上

  1. 从存储库安装 aiccu。
  2. 从 repos 安装 radvd。它不包含配置文件,因此我使用了下面的配置文件。TUNNEL_PREFIX_FROM_SIXXS.NET 可以在 Sixxs.net 的“主页”中位于 Tunnel Endpoint 旁边,这是运行 aiccu 后在 sixxs-00 接口上获得的地址。
接口 eth0 {
    AdvSendAdvert 开启;
    最大RtrAdv间隔 30;
    AdvOtherConfigFlag 开启;

    前缀 TUNNEL_PREFIX_FROM_SIXXS.NET {
        AdvOnLink 开启;
        AdvAutonomous 开启;
    };
};
  1. 编辑 /etc/sysctl.conf,通过删除 # 取消注释“#net.ipv6.conf.all.forwarding=1”行。似乎需要在此更改后重新启动,但我不知道具体原因。
  2. 然后编辑 /etc/network/interfaces 来为你的 eth0 设置一个 IP。
# 主网络接口
自动 eth0
iface eth0 inet dhcp
iface eth0 inet6 静态
    地址 AN_IP_IN_YOUR_SUBNET
    网络掩码 64

在虚拟网络中的其他客户端上

现在路由器已启动并运行,您只需为其他客户端设置 /etc/network/interfaces。为其指定子网中的 IP,并使用网关指令指向路由器 eth0 IPv6 地址:

# 主网络接口
自动 eth0
iface eth0 inet dhcp
iface eth0 inet6 静态
    地址 AN_IP_IN_YOUR_SUBNET
    网络掩码 64
    网关 ROUTERS_IPV6_ADDRESS

其他活动

我没有使用 DHCPv6 或反向 DNS。如果需要,您可以安装并使用 wide-dhcpv6-server。您还可能需要设置 /etc/hosts 以使用分配给虚拟机的 IP。这没什么特别的,文件确实包含示例。

相关内容