在Amazon VPC中对“networking无法访问”进行故障排除

一个EC2实例在VPC中的公共子网中运行Amazon Linux。

以下是安全组的出站规则:

ALLOW TCP on port 80 to 0.0.0.0/0 ALLOW TCP on port 443 to 0.0.0.0/0 ALLOW ICMP to 0.0.0.0/0 

首先我SSH到实例。 然后,我试图向外部互联网提出一个简单的请求:

 [ec2-user@nat1 ~]$ curl -v wikipedia.org/ * Trying 208.80.154.224... * Trying 2620:0:861:ed1a::1... * Immediate connect fail for 2620:0:861:ed1a::1: Network is unreachable 

请注意,DNS正在由我自己的VPC内的AWS Route 53 dns服务器解决,因此不能certificate外部连接。

我看到Trying 208.80.154.224...没有任何关于失败的细节 – 有什么办法可以在那里获得更多信息?

下一步看起来像是将这个地址转换成IPv6的格式不正确。 这是一个线索吗? 或者只是IPv4失败时的自动追索?

最终的错误“networking无法访问”似乎可能是指IPv6networking的整体故障 – 这对我的目的来说是很好的。 所以这仍然让我寻找更多关于第一次尝试正确的IPv4地址失败的细节。

现在,这个EC2实例的networking接口的子网stream日志中的条目只被过滤到IP地址208.80.154.224 。 我看到的所有行在ACCEPT OK结束如下所示:

 Event Data 2 027141088039 eni-66c1933c 10.0.17.220 208.80.154.224 60761 80 6 2 120 1436199193 1436199253 ACCEPT OK 

有问题的EC2实例没有公开的IPv4地址,因此无法参与互联网。

简单地分配一个公共IP地址给实例,并且:

 [ec2-user@nat1 ~]$ curl -v wikipedia.org/ * Trying 208.80.154.224... * Connected to wikipedia.org (208.80.154.224) port 80 (#0)