Amazon VPC上的IPv6:缺lessUbuntu中的默认路由

现在, 亚马逊已经扩展了对VPC的IPv6支持,包括eu-west-1在内的全球大部分地区,我试图让我的实例连接起来。 不幸的是我不能路由工作。

我遵循迁移指南中的步骤,即我已经将IPv6 CIDR关联到我们的VPC,将其一部分分配给我们的“公共”子网,更新了VPC路由表以通过igw发送::/0互联网网关),确保将路由表分配给公有子网,并从控制台为新的Ubuntu 16.04实例分配IPv6地址。

然后,我通过将iface eth0 inet6 dhcp添加到networking设置并重新启动,将Ubuntuconfiguration为通过DHCPv6获取分配的地址。

当我重新启动实例时,启动需要几分钟的时间,但最终我可以login并显示ip as显示configuration的IPv4和全局IPv6地址。

但是,v6networking不工作:

 # ping6 www.google.com connect: Network is unreachable 

路由表确实缺less默认路由:

 # ip -6 route 2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 mtu 9001 

手动添加默认的v6路由,通过ip -6 route add default dev eth0导致一个路由表,看起来是正确的:

 # ip -6 route 2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 mtu 9001 default dev eth0 metric 1024 

不幸的是,这导致了一个不同的错误:

 # ping6 www.google.com PING www.google.com(dh-in-x6a.1e100.net) 56 data bytes From dh-in-x6a.1e100.net icmp_seq=1 Destination unreachable: Address unreachable From dh-in-x6a.1e100.net icmp_seq=2 Destination unreachable: Address unreachable From dh-in-x6a.1e100.net icmp_seq=3 Destination unreachable: Address unreachable 

是不是DHCPv6客户端应该照顾添加默认路由? 那为什么我还不能到达外面的世界?

    你的路由表看起来不正确。 这条线看起来非常错误:

     default dev eth0 metric 1024 

    这条线说,整个互联网直接连接到你的eth0接口,而不需要通过任何中间路由器。 这将导致您的系统发送neighor发现请求到LAN上为它尝试达到的每个主机。 如果该主机没有直接连接到您的局域网,它将不会看到邻居发现请求。

    所以你不能期望任何东西与该路由表一起工作。 使用某些路由器,可以configuration邻居路由器来解决您的configuration错误。 但是你不应该指望它。 相反,你应该找出正确的网关地址,并configuration它。

    下面是一个具有function连接的特定机器上的路由表项的例子:

     default via fe80::1 dev eth0 metric 1024 advmss 1220 

    via fe80::1部分是缺less你的东西。 您应该使用的地址可能与fe80::1不同,您需要询问您的提供商使用的网关地址,如果他们没有告诉您的话。 我主要看到的提供商select寻址网关的两种方式是fe80::1/64前缀后跟::1 ,在你的情况下将变成2001:DB8:1234:1234::1

    advmss 1220部分不是绝对必要的,但我将它包括在内,因为它可以解决一些MTU问题。

    一旦修复了路由表条目,接下来要testing的步骤就是validation路由器是否显示在邻居caching中。 然后使用traceroute6mtr来查看在丢失数据包之前你能得到多less数据包。

    原来我错过了移植指南中的一步。

    当在现有的VPC上启用IPv6时,如果您对默认设置进行了修改,则必须手动更新某些内容,如路由表和安全组。

    我已经更新了我们的路由表(按照http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#vpc-migrate-ipv6-routes )和安全组(按照http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#vpc-migrate-ipv6-sg-rules ),但忘记了更新我们的networkingACL,如上所述相同的页面。

    所以,我有效地防火墙所有的IPv6stream量。 为::/0添join站和出站ALLOW规则解决了我的问题为Ubuntu 16.04

    对于Ubuntu 14.04 ,在Amazon的迁移指南中实际上存在一个错误,该错误已经被修复。 将iface eth0 inet6 dhcp添加到/etc/networking/interfaces.d/eth0.cfg的build议不起作用,导致configuration的IPv6地址,但缺less默认路由。

    相反,当接口出现时,我必须启动dhcp-client,如下所示: up dhclient -6 。 我在/etc/networking/interfaces.d/eth0.cfg文件中结束了以下工作configuration:

     # The primary network interface auto eth0 iface eth0 inet dhcp up dhclient -6 -v -pf /run/dhclient6.$IFACE.pid -lf /var/lib/dhcp/dhclient6.$IFACE.leases $IFACE 

    看来亚马逊已经更新了他们的迁移指南来说类似的东西( http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#ipv6-dhcpv6-ubuntu-14 )。