无法从外部访问 IPv6 VPC 中的 EC2 - 为什么?

0

【以下的问题经过翻译处理】 大家好,

我在eu-west-1区域设置了一个支持IPv6的测试服务器(t2.small),运行的是Ubuntu 16.04.1。VPC分配了IPv6,子网也有IPv6的/64地址范围。NAT互联网网关和IPv6出口互联网网关都已设置在主路由表中,分别适用于0.0.0.0/0和::/0前缀。

与子网相关联的网络ACL允许从::/0进出的流量。同样,与实例关联的安全组允许从::/0进入的流量访问tcp:80、tcp:443端口以及来自::/0的IPv6 ICMP流量。

附加到虚拟机的网络接口有一个永久分配的IPv6地址(2a05:d018:n:n::23)。

从正在运行的实例中,我可以通过tcpdump看到IPv6流量正常传输,例如:

10:56:42.285595 IP6 2a05:d018:n:n::23.123 > 2001:67c:1560:8003::c7.123: NTPv4, Client, length 48 10:56:42.296728 IP6 2001:67c:1560:8003::c7.123 > 2a05:d018:n:n::23.123: NTPv4, Server, length 48

然而,尝试通过其IPv6地址从互联网访问服务器时 - 无论是通过诸如https://www.sprint.net/lg/lg_start.php的在线测试工具ping,还是尝试从家中访问网站(具有长期有效的、无过滤的IPv6连接性),都会失败。

通过tracepath6,到服务器的某些跳中断:

9: 2600:9000:eee::1c7 40.986ms asymm 18 10: 2a01:578:0:10::c 40.118ms asymm 17 11: no reply 12: 2a01:578::1 40.245ms asymm 14 13: no reply 14: 2a01:578::13 41.313ms 15: 2a01:578:0:10::8

而且VM的tcpdump中甚至没有显示ping和http请求。

我目前陷入困境,无法确定哪些配置可能错了,或者是什么原因导致了连接失败。希望能得到有益的帮助。

最好的问候, Dominik

profile picture
专家
已提问 6 个月前48 查看次数
1 回答
0

【以下的回答经过翻译处理】 好的,我进行了一些测试,以下是结果。

我决定使用我的Windows 2012服务器实例,并确定IPv6在该实例上工作正常。然后我查看了该Windows机器上的默认路由(在我的Ubuntu实例中缺失):

> route print […] IPv4 Route Table

Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 172.31.16.1 172.31.xx.xx 10 […] IPv6 Route Table

Active Routes: If Metric Network Destination Gateway 12 266 ::/0 fe80::be:a9ff:fede:cc05

由于我的两个实例都在同一个子网上,我相信相同的网关IPv6地址也适用于我的Ubuntu实例,因此我输入了以下命令:

$ route -A inet6 add default gw fe80::be:a9ff:fede:cc05 eth0

$ route -A inet6 | grep eth0 2600:xx:xx:xx::1:1/128 :: U 256 0 0 eth0 fe80::/64 :: U 256 0 0 eth0 ::/0 fe80::be:a9ff:fede:cc05 UG 1 0 0 eth0 ff00::/8 :: U 256 2 0 eth0

$ ip -6 route show 2600:xx:xx:xx::1:1 dev eth0 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 default via fe80::be:a9ff:fede:cc05 dev eth0 metric 1

现在一切都正常:我可以从我的实例访问IPv6互联网主机,我的实例也可以被IPv6互联网客户端访问。我在启用IPv6的测试站点上放了一个测试CGI脚本:

http://www.kadifeli.name.tr/cgi/sysinfo.pl

您可以在脚本输出的末尾看到客户端和我的服务器IPv6地址(REMOTE_ADDR和SERVER_ADDR)。

--

DominikN,

我认为您的问题在于您正在使用“仅出口互联网网关”( Egress Only Internet Gateway)。我删除了我的“仅出口互联网网关”,目前只使用我的“互联网网关”(Internet Gateway,IGW),也不需要“NAT互联网网关”。

我的路由表如下:

Destination Target Status Propagated 172.31.0.0/16 local Active No 2600:xx:xx:xx::/56 local Active No 0.0.0.0/0 igw-xxxx Active No ::/0 igw-xxxx Active No

(注意:IPv4和IPv6使用相同的IGW网关!)

网络ACL允许“::/0”的入站和出站流量。

实例的安全组允许“::/0”的“全部流量”(出站规则)。入站规则基于协议/端口/源的基础上是允许的,例如:

HTTP (80) TCP (6) 80 ::/0 HTTPS (443) TCP (6) 443 ::/0 All ICMP - IPv6 IPv6-ICMP (58) ALL ::/0

最后一句话: 当eth0启动并且我不得不手动添加它时,我仍然困惑于为什么默认的IPv6路由没有自动添加到我的Ubuntu 14.04.5 LTS实例中...

profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则